1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 运维企业专题(8)LVS高可用与负载均衡后篇——LVS健康检查与高可用详解

运维企业专题(8)LVS高可用与负载均衡后篇——LVS健康检查与高可用详解

时间:2019-01-22 18:00:35

相关推荐

运维企业专题(8)LVS高可用与负载均衡后篇——LVS健康检查与高可用详解

实验准备

1.下面的实验使用的是rhel6系列(rhel6.5)的虚拟机,因此你需要有对应的镜像和yum源

2.准备三台虚拟机,为了区分主机名与IP分别为

server1 172.25.6.1

server2 172.25.6.2

server3 172.25.6.3

3.我们将server1(172.25.6.1)作为调度器,server2、server3作为后端服务器,物理机作为客户端

1.为什么要进行健康检查?

像前面配置好了,整个集群开始工作,但如果某些Real Server出现问题,不能正常访问,但依旧会执行调度。因此我们就要使Director的ipvs配置做出相应改变,删除出问题的Real Server;当Real Server又能正常访问时,也要把其添加回ipvs的调度列表,这就需要实时检查各Real Server的健康状态,以此来保证整个集群能够提供稳定可用的服务。

2.配置过程(在调度器server1上进行)

1)修改yum源(使其获得高可用源)

vim /etc/yum.repos.d/rhel-source.repo

[LoadBalancer]name=Red Hat Enterprise Linux $releasever - $basearch - Sourcebaseurl=http://172.25.8.250/rhel6.5/HighAvailabilityenabled=1gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

2)获得ldirectord-3.9.5-3.1.x86_64.rpm软件包,并进行安装

yum install ldirectord-3.9.5-3.1.x86_64.rpm -yrpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm

3)将模板文件进行复制,进行编写

cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/vim /etc/ha.d/ldirectord.cf

11 # Global Directives#“ 全局 ” 设置12 checktimeout=3#指定定real server出错的时间间隔13 checkinterval=1#指定ldirectord在两次检查之间的时间间隔16 autoreload=yes#自动重载配置文件,选yes时,当配置文件发生变化,自动载入配置信息22 quiescent=no#当一个节点在 checktimeout 设置的时间周期内没有响应时它是 “ 静止的 ” (它的权重为0),当你设置了这个选项后,ldirectord 将 会从 IPVS 表中移除真实服务器而不是 “ 停止 ” 它,从 IPVS 表移除节点将中断现有的客户端连接,并使 LVS 丢掉所有的连接跟踪记录和持续连接模板,如果 你不将这个选项设置为 no,当某个节点崩溃时,对某些客户端计算机而言可能会显示为集群关闭了,因为在这个节点崩溃前这些客户端计算机被分配给它了,而连接跟踪记录和程序连接模板仍然保留在Director上。logfile="/var/log/ldirectord.log" #设定ldirectord日志输出文件路径# Sample for an http virtual servicevirtual=172.25.6.100:80 #VIP 地址和端口号real=172.25.6.2:80 gate#指定RealServer地址和端口,同时设定LVS工作模式,gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式。real=172.25.6.3:80 gate#当所有的real server节点不能工作时,web服务重定向的地址fallback=127.0.0.1:80 gate#当所有的real server节点不能工作时,web服务重定向的地址service=http #指定服务类型,对http服务做负载均衡scheduler=rr #指定调度算法,这里是rr(轮叫)算法#persistent=600#netmask=255.255.255.255protocol=tcp#指出该服务使用的协议:tcp、udp 或 fwmchecktype=negotiate #指定Ldirectord的检测类型,默认为negotiatecheckport=80#健康检查使用的端口是 80request="index.html"#receive="Test Page" #指定请求和应答字串#virtualhost=www.x.y.z#虚拟服务器的名称

4)清除手动编写的规则,让文件的规则生效

ipvsadm -C/etc/init.d/ldirectord startipvsadm -l

5)添加IP

ip addr add 172.25.6.100/24 dev eth0 ##server1上添加24位IP,server2,server3上应该添加32位IP,如下图

6)编写默认发布文件

cd /var/www/htmlvim index.html

6.测试

1)客户端进行检查看是否采用轮循

2)将后端服务器server2的httpd服务关掉,测试调度器是否会调度挂掉的服务器

仅调度server3上的资源

3)当两台后端的服务器都宕机,会如何?

3.LVS高可用(画重点)

具体概念在前篇已经都说过了,这里简单说一下

我们实现LVS高可用将使用到keepalived,它是集群管理中保证集群高可用的一个服务软件;它能够保证当个别节点宕机时,整个网络可以不间断地运行,所以,Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能

目的:防止单点故障(ld)

vrrp:虚拟路由冗余协议

keepalived:基于vrrp的路由器的高可用(1个master 多个backup vip)

具体配置详情如下

1)新建虚拟机,主机名和IP分别为

主机名:server4IP:172.25.6.4

qemu-img create -f qcow2 -b peng.qcow2 peng4##利用之前的快照

2)将server1上的yum源文件发送给server4

scp /etc/yum.repos.d/rhel-source.repo root@172.25.6.4:/etc/yum.repos.d/

3)官网下载获得keepalived-2.0.6.tar.gz,解压并安装

tar zxf keepalived-2.0.6.tar.gz ##对资源包进行解压cd keepalived-2.0.6##进入到解压好的目录下,安装服务需要的软件yum install openssl-devel -yyum install libnl libnl-devel -y

4)获得libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm资源包,进行安装

yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm -y

5)进入解压好的keepalived-2.0.6目录下,进行源码编译

yum install gcc -y##源码编译需要用到cd keepalived-2.0.6./configure --with-init=SYSV --prefix=/usr/local/keepalived./configure --with-init=SYSV --prefix=/usr/local/keepalived

注意:因为源码是C,需要安装gcc;出现Use IPVS Framework : Yes成功,继续执行下一步

make && make install

6)查看编译完成后的目录

cd /usr/local/lscd keepalived/ls

7)将server4上编译好的keepalived发送给server1,检查是否一致

scp -r /usr/local/keepalived/ root@172.25.6.1:/usr/local/du -sh keepalived/

7)在server1和server4上赋予执行权限,添加链接(操作命名完全相同)

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ln -s /usr/local/keepalived/etc/keepalived/ /etc/ln -s /usr/local/keepalived/sbin/keepalived /sbin/

8)server4上安装调度器软件

yum install ipvsadm -y

9)编辑server1、server4上的keepalived配置文件——server1作为主机、server4作为备机

vim /etc/keepalived/keepalived.conf

3 global_defs {##全局定义块4 notification_email {##邮件通知5root@localhost6 }7 notification_email_from keepalived@localhost#设置邮件的发送地址8 smtp_server 127.0.0.1#设置 smtp server 地址9 smtp_connect_timeout 30#设置连接 smtp 服务器超时时间10 router_id LVS_DEVEL#load balancer 的标识 ID,用于 email 警报11 vrrp_skip_check_adv_addr12 #vrrp_strict13 vrrp_garp_interval 014 vrrp_gna_interval 015 }16 17 vrrp_instance VI_1 {18state MASTER#备机改BACKUP,此状态是由 priority 的值来决定的,当前19interface eth0#HA 监测网络接口20virtual_router_id 59#主、备机的 virtual_router_id 必须相同,取值 0-25521priority 100#主机的优先级,备份机改为 50,主机优先级一定要大于备机22advert_int 1#主备之间的通告间隔秒数23authentication {24 auth_type PASS#设置验证类型,主要有 PASS 和 AH 两种25 auth_pass 111126}27virtual_ipaddress {##指定漂移地址(VIP),即切换到MASTER时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令),所以每台服务器可以不用绑定任何的虚拟地址。28 172.25.6.10029}30 }31 ## 虚拟服务配置32 virtual_server 172.25.6.100 80 {#定义虚拟服务器33delay_loop 3#定义虚拟服务器34lb_algo rr#lvs 调度算法,这里使用轮叫35lb_kind DR#LVS 是用 DR 模式36#persistence_timeout 50#注释掉(像lftp等连接性服务,会有连接时间,此处用httpd做实验)37protocol TCP#指定转发协议类型,有 tcp 和 udp 两种38 39real_server 172.25.6.2 80 {#配置服务节点40 TCP_CHECK {##TCP方式的健康检查,realserve 的状态检测设置部分,单位是秒41 weight 1##默认为1,0为失效42 connect_timeout 3 #3 秒无响应超时43 retry 3#重试次数44 delay_before_retry 3#重试间隔45 }46}47 48real_server 172.25.6.3 80 {49 TCP_CHECK {50 weight 151 connect_timeout 352 retry 353 delay_before_retry 354 }55}56 }

10)将上一个实验中的健康检查服务关掉,开机启动关闭;并将server1上的IP删除

/etc/init.d/ldirectord stopchkconfig ldirectord offipvsadm -lipvsadm -Cip addr del 172.25.6.100/24 dev eth0ip addr show

11)调度器主备机上安装邮件服务

yum install mailx -y

12)server1和server4同时启动

/etc/init.d/keepalived start

可以使用日志方式查看

tail -f /var/log/messages

测试:

测试1:此时MASTER主机自动被分配172.25.6.100/32这个ip,并开启调度器;但是BACKUP是新的

测试2:将MASTER的keepalived下线,此时BACKUP工作

/etc/init.d/httpd stop

客户端依然能正常访问

测试2:将后端apache关闭,模拟故障

调度器调度三次无响应后,直接将server2踢出工作集群

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。