作者:hfy2409553 | 来源:互联网 | 2023-05-19 07:38
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目由章文嵩博士在1998年5月创立,是中国国内最早出现的自由软件项目之一。其作用是实现LB(Load Balance)将大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;将单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
HA(High Avalibaility)高可用性,即双机热备的方式保证服务的高可用性。
本文高可用负载均衡集群解决方案,是在LVS实现负载均衡的基础之上,采用双机热备director来保证lvs个高可用性,并通过heartbeat实时监听主director的运行状态,另外使用ldirectord实时监测director后端Real Server的健康状态,将不能正常提供服务的主机离线。
整套方案拓扑架构如图:
650) this. border=0>
下面开始详述实现步骤:
一、两台Real Server:RS1、RS2的配置
初始化步骤:配置ip地址、主机名、yum源等不在赘述
- echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
- echo 2> /proc/sys/net/ipv4/conf/lo/arp_announce
- echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
- echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
-
Ps:由于使用DR模型故要屏蔽arp对后端realserver的解析
- ifconfig lo:0 192.168.0.123 broadcast 192.168.0.123 netmask 255.255.255.255 up
-
- route add -host 192.168.0.123 dev lo:0
-
- yum install -y httpd
-
- service httpd start
- echo 'Real Server 1' > /var/www/html/index.html
-
- mkdir /var/www/html/test/
- echo 'ok' > /var/www/html/test/index.html
-
- service httpd start
Ps:这里仅以RS1为实例进行说明,RS2同此法操作。
二、高可用HA director节点的配置
初始化步骤:配置ip、yum源等。
Ps:两台director节点都使用双网卡,eth0与real server同网段,eth1使用网卡直连用于传输心跳信号。
- vim /etc/hosts
- 192.168.0.71 node1.a.org node1
- 192.168.0.72 node2.a.org node1
-
- vim /etc/sysconfig/network
-
- hostname node1.a.org
-
使heartbeat信息加密传输
- ssh-keygen -t rsa
-
- ssh-copy-id -i .ssh/id_rsa.pub root@node2.a.org
-
- ssh node2 -- ‘ifconfig’
-
安装heartbeat
- cd heartbeat
- yum localinstall -y --nogpgcheck ./*
-
650) this. border=0>
- cd /usr/share/doc/heartbeat-2.1.4
- cp authkeys /etc/ha.d/
- cp haresources /etc/ha.d/
- cp ha.cf /etc/ha.d/
- #拷贝heartbeat所需配置文件到指定目录下
- vim /etc/ha.d/ha.cf
- bcast eth1
-
- node node1.a.org
- node node2.a.org
-
- vim /etc/ha.d/authkeys
- auth 2
- 2 sha1 [键入随机数]
- chmod 400 authkeys
-
- vim /etc/ha.d/haresource
- node1.a.org 192.168.0.123/24/eth0/192.168.0.255 ldirectord::ldirectord.cf httpd
同步配置文件到node2
- /usr/lib/heartbeat/ha_propagate
-
- scp haresources node2:/etc/ha.d/
-
650) this. border=0>
配置ldirectord,同步配置文件
- cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ldirectord.cf
- #复制ldirector的配置文件
内容如下配置
- checktimeout=3
- #当DR收不到realserver的回应,设定几秒后判定realserver当机或挂掉了,预设5秒。
- checkinterval=1
- #查询间隔,每个几秒侦测一次realserver
- autoreload=yes
- #配置文件发生改变是否自动重读
- quiescent=yes
- #静态链接,yes:表示侦测realserver宕机,将其权值至零(果开启了persistent参数不要用yes);no:表示侦测到宕机realserver,随即将其对应条目从ipvsadm中删除。
- virtual=192.168.0.123:80
- real=192.168.0.51:80 gate 4
- real=192.168.0.52:80 gate 2
- fallback=127.0.0.1:80 gate #realserver全部失败,vip指向本机80端口。
- service=http
- request="test/index.html" #用于健康检测的url
- receive="ok" #用于健康检测的url包含的关键字
- scheduler=wlc
- #persistent=600
- #持久链接:表示600s之内同意ip将访问同一台realserver
- protocol=tcp
- checktype=negotiate
- #检查类型:negotiate,表示DR发送请求,realserver恢复特定字符串才表示服务正常;connect,表示DR能够连线realserver即正常。
- checkport=80
启动两个节点上的heartbeat
- service heartbeat start
- ssh node2 -- 'service heartbeat start'
- #启动两节点heartbeat服务
Ps:ldirectord同vip一样是DR节点争夺的资源,由heartbeart启动
tail -f /var/log/messages
应出现:heartbeat: info: Running /etc/ha.d/resource.d/ldirectord ldirectord.cf start
650) this. border=0>
ip、ldirectord和httpd资源被主节点成功启动
或查看ipvsadm -ln
650) this. border=0>
主节点node1 web服务反馈realserver宕机提示信息
此时关闭node1上heartbeat,刷新页面
var cpro_id = "u6885494";