Heartbeat+lvs+ldirectord
Heartbeat可实现高可用、lvs可实现负载均衡但对负载无健康检查,实现高可用集群与lvs的整合需要使用软件ldirectord,该软件对lvs后端负载有健康检查。
一、集群结点端进行软件安装及配置
如选择server1、server3作为集群结点,均做如下操作,部分不同操作会分别讲述:
<1>软件安装
1.yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
2.可使用rpm -q ldirectord -d查看配置文件存放位置
[root@server3 ~]# rpm -q ldirectord -d
/usr/share/doc/ldirectord-3.9.5/COPYING
/usr/share/doc/ldirectord-3.9.5/ldirectord.cf
/usr/share/man/man8/ldirectord.8.gz
3.cd /usr/share/doc/ldirectord-3.9.5
cp ldirectord.cf /etc/ha.d
##必须将配置文件放至heartbeat的安装目录才能起到相应作用
<2>ldirectory与lvs整合
1.cd /etc/ha.d
vim ldirectord.cf
部分内容设置及解释如下:
checktimeout=3 ##检测服务的频率
virtual=172.25.13.113:80 ##定义vip=172.25.13.113及端口
real=172.25.13.2:80 gate ##后端负载serer2
real=172.25.13.4:80 gate ##后端负载server3
fallback=127.0.0.1:80 gate
##当后端负载均故障时(80端口),服务器将响应请求:给客户返回信息,实现健康检查
service=http ##选择服务http,默认发布目录:/var/www/html
scheduler=rr ##选择轮询算法
#persistent=600 ##开启时表示持续连接,相当于ip_hash
#netmask=255.255.255.255
protocol=tcp ##Tcp协议
checktype=negotiate
checkport=80
request="index.html" ##请求响应为/var/www/html/index.html
:wq
2.vim /var/www/html/index.html
##http默认发布首页,当后端负载均故障时,客户响应结果为该文件内容
3.测试配置是否正确:
/etc/init.d/httpd start
/etc/init.d/ldirectord start ##仅在server1端开启即可。server3的配置是与server1相同的,这里不再测试
(1)浏览器访问172.25.13.113或curl 172.25.13.113,查看后端负载(server2、server4)是否轮询:
(2)检测是否有健康检查:
先关闭某负载的httpd服务:当服务器连接不到该后端负载时,将其从负载池中移除。
再关闭另一负载的httpd服务,此时后端负载均故障,访问结果应为server1:
4.测试之后应关闭集群结点的httpd、ldirectord服务
/etc/init.d/httpd stop ##关闭httpd服务
/etc/init.d/ldirectord stop ##关闭ldirectord服务
<3>ldirectord与Heartbeat整合
1.ip del 172.25.13.113 dev eth0 ##若有之前因做lvs实验时添加的vip,先将其删除
2.cd /etc/ha.d
(1)vim ha.cf ##主配置文件
主要参数设定:
node server1 ##定义主结点,注意必须使用主机名,非ip
node server3 ##定义"热备"结点
:wq
(2)vim authkeys
部分内容设置及解释如下:
auth1 ##选择第1种认证方式
1crc ##本次操作是在本地,为方便选择crc认证方式,该方式安全性能低
#2sha1 HI! ##安全性能最高
#3md5 Hello!
:wq
chmod +x authkeys ##加执行权限,否则认证文件不起作用
提示:(ha.cf与authkeys文件的配置可参考博客
(3)vim haresources
编辑内容:
server1 IPaddr::172.25.13.113/24/eth0 httpd ldirectord
:wq
提示:选择server1为主结点将ldirectord服务加入集群管理,注意加入集群管理的服务不可手动开启,这也是为什么在<2>的测试后选择关闭服务的原因。
3.测试:server1与server3的heartbeat服务
/etc/init.d/heartbeat start
ip addr ##查看vip是否在主结点生效
ipvsadm -l ##查看集群结点与负载的连接次数,ipvsadm配置见博客
(1)如图:客户端访问三次vip,服务器server1调度后端负载响应客户端,其中调度server4两次,server2一次;server3未调度负载
(2)server1停止心跳服务,server3将接管vip并当客户端访问时调度负载,如图:
(3)回切检测:server1恢复心跳,v将接管vip,进行调度负载
(4)后端负载健康检查:
如先关闭server2的httpd服务,客户端访问vip时,主结点server1将一直调度server4,结果如图:
再关闭server4的httpd服务,客户端再访问vip时,因为之前的配置,主结点server1将响应请求,结果如图: