第十七周作业

1、结合图形描述LVS的工作原理;

工作方式:

LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。当用户的请求发往虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。RS再将用户请求结果返回给用户。

工作原理:

第十七周作业

1.当客户端的请求到达负载均衡器的内核空间时,首先会到达PREROUTING链。
2.当内核发现请求数据包的目的地址是本机时,将数据包送往INPUT链。
3.LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作,IPVS工作在INPUT链上,当数据包到达INPUT链时,首先会被IPVS检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将被放行至用户空间。
4.如果数据包里面的目的地址及端口在规则里面,那么这条数据报文将被修改目的地址为事先定义好的后端服务器,并送往POSTROUTING链。
5.最后经由POSTROUTING链发往后端服务器。

几种常用模型:

第十七周作业

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。
③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。
优点:返回请求无需经过调度器,效率高
缺点:
1.配置复杂,需要修改内核参数使lo接口的VIP不能响应本地网络内的arp请求;
2.负载均衡器的DIP网卡与各RS必须在一个局域网中,不能跨网段;
3.无法做端口转换。


第十七周作业

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。
③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。
④.然后lvs将此报文的源地址修改为本机并发送给客户端。

优点:
1.RS端配置简单,只需配置私网IP即可;
2.支持端口转换。
缺点:由于请求与响应都经过调度器,所以性能较差,容易出现瓶颈;


第十七周作业

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。
③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。
优点:
1.返回请求无需经过调度器,效率高;
2.负载均衡器与RS之间可以跨网段,甚至跨公网。
缺点:
1.配置复杂,需要修改内核参数使lo接口的VIP不能响应本地网络内的arp请求;
2.无法做端口转换。

2、搭建一套LVS-DR模型的高性能集群,并实现以下功能:
   (1)、wordpress程序通过nfs共享给各个realserver;
   (2)、后端realserver中的nginx和php分离

第十七周作业

1. 在两台rs节点上分别安装nginx

]# yum install nginx nfs-utils -y                                    #安装nfs-utils是为了后面能够正常挂在nfs分区

2. 安装Mariadb

]# yum install mariadb-server -y

3. 安装php-fpm和nfs

]# yum install php-fpm php-mysql php-mbstring php-gd php-xml nfs-utils -y 

4. 在两个rs节点上分别修改nginx配置文件,添加下面内容:

]# vim /etc/nginx/nginx.conf
...
location / {
            root           /data/www;                                 #定义根目录
            index          index.php index.html index.htm;            #将index.php放在第一位置
        }

        location ~ \.php$ {
            root           /data/www;
            fastcgi_pass   192.168.0.24:9000;                         #指定php服务器地址和端口
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
...

5.在php服务器上修改php-fpm配置文件

]# vim /etc/php-fpm.d/www.conf                                                                
listen = 192.168.0.24:9000                                            #设置监听地址和端口
#listen.allowed_clients = 127.0.0.1                                   #默认只允许本机访问,注释该行后表示允许所有地址到本机的连接
]# systemctl start php-fpm.service

6. 在php服务器上配置nfs服务

]# mkdir -p /data/www
]# vim /etc/exports
/data/www 192.168.0.0/24(rw,no_root_squash)                           #将/data/www通过nfs服务共享出去
]# systemctl start nfs.service

7.在两个rs节点上创建共享目录并挂在共享盘

]# mkdir -p /data/www/
]# mount -t nfs 192.168.0.24:/data/www /data/www
]# systemctl start nginx.service

8.在php服务器上创建测试页,并在浏览器上分别打开rs1和rs2的主页,检查nginx和php的联动

]# vim /data/www/index.php
<?php
        phpinfo();
?>

9. 在MySQL服务器上设置必要的优化参数并重新初始化数据文件目录

]# vim /etc/my.cnf
[mysqld]
...
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON

]# mkdir -p /mydata/data
]# mysql_install_db --user=mysql --datadir=/mydata/data
]# systemctl start mariadb.service

10.测试php与Mariadb联动

]# mysql
MariaDB [(none)]> grant all on *.* to 'root'@'192.168.0.%' identified by 'magedu';                 #在mysql中创建远程连接账号用于联动测试
MariaDB [(none)]> flush privileges;

]# vim /data/www/index.php              #在php服务器上创建测试页面
<?php
        $conn = mysql_connect('192.168.0.25','root','magedu');
        if ($conn)
                echo "OK";
        else
                echo "Failure";
?>

11. 在MySQL中创建wordpress数据库和用户

MariaDB [(none)]> create database wpdb;                                                  
MariaDB [(none)]> grant all on wpdb.* to wpuser@'192.168.0.%' identified by 'magedu';   
MariaDB [(none)]> flush privileges;

12.在php服务器上部署wordpress

]# cd /data/www
]# unzip wordpress-3.3.1-zh_CN.zip
]# cd wordpress
]# cp wp-config-sample.php wp-config.php          #生成wordpress配置文件
]# vim wp-config.php
define('DB_NAME', 'wpdb');                        #修改为实际库名

/** MySQL 数据库用户名 */
define('DB_USER', 'wpuser');                      #修改为实际用户名

/** MySQL 数据库密码 */
define('DB_PASSWORD', 'magedu');                  #修改为实际密码

/** MySQL 主机 */
define('DB_HOST', '192.168.0.25');               #修改为实际IP

13.使用浏览器完成后续的图形化安装步骤

浏览器输入:http://192.168.0.21/wordpress/wp-admin/install.php

第十七周作业

14. 在lvs服务器上安装lvs

]# yum install ipvsadm -y

15. 在lvs物理网卡上配置VIP

]# ifconfig eno16777736:0 192.168.0.20 netmask 255.255.255.255 broadcast 192.168.0.20

16.在两台rs上修改内核参数,禁止lo对VIP的广播做响应

]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
]# echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce 
]# echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce

17.在两台rs的lo网卡上配置VIP并添加到lvs的vip的路由

]# ifconfig lo:0 192.168.0.20 netmask 255.255.255.255 broadcast 192.168.0.20
]# route add -host 192.168.0.20 dev lo:0

18.在lvs上配置ipvsadm规则

]# ipvsadm -A -t 192.168.0.20:80 -s rr
]# ipvsadm -a -t 192.168.0.20:80 -r 192.168.0.22 -g -w 1 
]# ipvsadm -a -t 192.168.0.20:80 -r 192.168.0.23 -g -w 1 
]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.20:80 rr
  -> 192.168.0.22:80              Route   1      0          0         
  -> 192.168.0.23:80              Route   1      0          0     

19.在浏览器中访问lvs的vip,测试是否成功

第十七周作业

3、基于heartbeat v2 crm实现HA LAMP组合;要求,部署wordpress,用于编辑的文章中的任何数据在节点切换后都能正常访问;

第十七周作业

1. 在两台rs节点上分别安装httpd,php并配置

]# yum install httpd php php-mysql php-mbstring php-gd php-xml nfs-utils -y 
]# vim /etc/httpd/conf/httpd.conf
...
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
...
AddType application/x-httpd-php .php
]# /etc/init.d/httpd start

2.配置nfs服务器

]# mkdir -p /data/www
]# vim /etc/exports
/data/www 192.168.0.0/24(rw,no_root_squash)                          
]# systemctl start nfs.service

3.安装并配置mariadb服务器

]# vim /etc/my.cnf
[mysqld]
...
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON

]# mkdir -p /mydata/data
]# mysql_install_db --user=mysql --datadir=/mydata/data
]# systemctl start mariadb.service
]# mysql
MariaDB [(none)]> create database wpdb;                                                  
MariaDB [(none)]> grant all on wpdb.* to wpuser@'192.168.0.%' identified by 'magedu';   
MariaDB [(none)]> flush privileges;

4.在nfs服务器上修改wordpress配置文件

]# cd /data/www
]# unzip wordpress-3.3.1-zh_CN.zip
]# cd wordpress
]# cp wp-config-sample.php wp-config.php          
]# vim wp-config.php
define('DB_NAME', 'wpdb'); 

/** MySQL 数据库用户名 */
define('DB_USER', 'wpuser');    

/** MySQL 数据库密码 */
define('DB_PASSWORD', 'magedu');

/** MySQL 主机 */
define('DB_HOST', '192.168.0.25'); 

5.在两个rs上分别挂在nfs目录

]# mount -t nfs 192.168.0.24:/data/www /var/www/html

6.使用浏览器完成后续的图形化安装步骤,确保通过每个rs节点都能正常访问wordpress

7.配置heartbeat v2 crm的准备工作

1)各节点hosts中添加自己和对端节点的名称解析

2)各节点之间建立ssh互信关系

3)各节点之间时间同步

8.在各rs节点安装heartbeat

]# yum install net-snmp-libs libnet PyXML libtool-ltdl gnutls gettext -y
]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

9.在两个rs节点上分别配置heartbeat

]# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,authkeys} /etc/ha.d/
]# cd /etc/ha.d/
]# chmod 600 authkeys
]# vim authkeys
auth2
#1 crc
2 sha1 1q2w3e4R
#3 md5 Hello!

]# vim /etc/ha.d/ha.cf
logfile /var/log/ha-log                 #只用heartbeat日志
#logfacility    local0                  #禁用rsyslog的local0
mcast eth0 225.23.190.1 694 1 0         #设定组播地址
keepalive 2                             #监听频率为2秒
deadtime 30                             #死亡判定时间为30秒
warntime 10                             #异常警告时间为10秒
auto_failback on                        #修复后自动上线
node node1.magede.com                   #设置节点1
node node2.magedu.com                   #设置节点2
ping 192.168.0.1                        #设定第三方仲裁设备
crm on                                  #开启crm,同时也会禁用haresources

10.打开hb_gui图形界面

]# echo "magedu"|passwd --stdin hacluster                           #为hacluster设定密码,用于后面图形化登录时身份验证
]# service heartbeat start;ssh node2 service heartbeat start
]# hb_gui &

 输入hacluster密码后进入hb_gui主界面

第十七周作业

创建资源组ha_wordpress

第十七周作业

创建资源webip,用于启停VIP

第十七周作业

创建资源nfs,用于挂载nfs共享磁盘

第十七周作业

创建资源webserver,用于启停httpd服务

第十七周作业

创建colocation约束,用于将不同资源绑定在一起

第十七周作业

创建约束nfs_with_webip,即nfs服务必须与webip在同一个节点上

第十七周作业

创建约束webserver_with_nfs,即webserver必须与nfs在同一个节点上

第十七周作业

创建顺序约束,用来指定资源服务的启停顺序

第十七周作业

创建约束nfs_after_webip,即nfs必须在webip启动之后才能启动

第十七周作业

创建约束webserver_after_nfs,即webserver服务必须在nfs服务启动之后才能启动

第十七周作业

启动资源ha_wordpress之后,可以发现所有节点均启动在节点2上,此时访问http://192.168.0.20/wordpress正常。

第十七周作业

将节点2置为standby

第十七周作业

可以发现所有的资源均已漂移到节点1上,再次访问http://192.168.0.20/wordpress,依然正常,说明高可用实现成功。

第十七周作业

原创文章,作者:N26-西安-方老喵,如若转载,请注明出处:http://www.178linux.com/76289

(0)
上一篇 2017-05-27 13:39
下一篇 2017-05-28 16:58

相关推荐

  • 第一周作业

    计算机的组成以CPU/存储/IO设备 硬件层次 CPU以完成运算和控制 存储包含 I/O设备为连接计算机的多样性输入输出设备(包含打印机/显示器等) 软件层次 以机器语言为基础,到符合使用的应用程序, Linux的发行版本 RedHat(商业组织维护版本,有enterprise version)-CentOS-主要以此为主 Debian(community)…

    Linux干货 2016-12-04
  • vim编辑器和bash算术入门

    vim末行模式:       内建的命令行接口      (1)地址界定          :start_pos[,end_pos]          #: 特定的第#行,例如5即第5行; &nbsp…

    Linux干货 2016-12-23
  • bash脚本之函数及循环特殊用法

    一,概述 while的循环特殊用法(遍历文件的每一行)     while read line;do         循环体        &nbsp…

    Linux干货 2016-08-29
  • 马哥教育网络班20期+第2周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。   答:文件操作     ls 列出目录下的文件名      ls -l /     touch 文件不存在时生成该文件      touch a.txt   &…

    Linux干货 2016-06-23
  • Homework Week-10 CentOS启动相关及bash脚本编程

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;   (1) 为硬盘新建两个主分区;并为其安装grub;   (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;   (3) 为rootfs提供…

    Linux干货 2016-10-24
  • vsphere虚拟机下的Linux在线移除硬盘后的报错处理(基于LVM)

    1)故障描述( vmware虚拟机,在线移除一块被设置为pv格式的硬盘后,提示unknown device错误): 说明:/dev/sdb1 /dev/sdc1 /dev/sdd1是组成/dev/vg_test/lvm_test的PV,这里我们模拟/dev/sdd1硬盘被直接断电了 [root@docker mnt]# pvdisplay…

    Linux干货 2016-07-29

评论列表(1条)

  • luoweiro
    luoweiro 2017-06-26 22:33

    非常赞,尤其是lvs集中模型的数据流走向,其实理清楚里面的网络地址和mac地址转换过程,对于以后排查lvs相关的故障就轻而易举了。