ldirectord + apache 实现LVS的DR模式下的健康检查
- 部署LVS的DR模式
- 部署Ldirectord实现健康检查
1.部署LVS的DR模式
系统环境:RedHat6.5系统
实验环境:
- 在调度器server1上重新配置yum源,添加LoadBalancer模块;安装ipvsadm
yum install ipvsadm -y
- 在server2和server3上开启apache服务
- 配置真实主机server2和server3上的apache服务的默认发布页面
server2:
编辑/var/www/html/index.html文件
访问页面如下
server3:
编辑/var/www/html/index.html文件
访问页面如下:
实验主机: 172.25.60.1 Director调度器
172.25.60.2 真实主机
172.25.60.3 真实主机
部署DR过程如下:
第一步:配置三台主机的虚拟网络
server1:
server2:
server3:
第二步:在调度器server1上配置ipvsadm策略
[root@server1 ~]# ipvsadm -A -t 172.25.60.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.60.100:80 -r 172.25.60.2:80 -g
[root@server1 ~]# ipvsadm -a -t 172.25.60.100:80 -r 172.25.60.3:80 -g
测试:在server1,server2,server3三台主机中随机选择
清除缓存,再次测试,得到不同的结果
随机连接三台主机,有违我们的初衷,我们想要的是采用虚拟网络,连接我们的调度节点,按照一定的调度算法,达到负载均衡。
想要实现如上想法,我们要怎么做呢???
我们要配置server2和server3的arp路由策略!!!
配置步骤如下:
- 安装arp
yum install arptables_jf -y
- 配置arp路由策略
arptables -A IN -d 172.25.27.100 -j DROP
arptables -A OUT -s 172.25.27.100 -j mangle --mangle-ip-s 172.25.27.2
arptables -L
/etc/init.d/arptables_jf save(将策略保存在/etc/sysconfig/)
测试:测试虚拟网络时,屏蔽掉server2和server3 ,通过访问调度器server1轮询访问真实服务器
2.在server1调度器上部署Ldirectord实现健康检查
第一步:下载ldirectord安装包,并安装。
yum install ldiirectored -y
重新配置yum源
第二步:编辑ldireectord的配置文件
rpm -qc ldirectord-3.9.5-3.1.x86_64.rpm
rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm ##查找lldirector的配置文件cd /etc/ha.d/
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf .
vim ldirectord.cf
第三步:在server1调度器上开启appche服务
yum install httpd -y
编辑apache的默认发布文档
vim /etc/www/html/index.html
<h1>系统维护中。。。</h1>
重启服务,进行测试:
- 健康检查的作用:当后台主机中有一台挂掉,客户端不会感知到,只会访问没有挂掉的主机
- 当后台主机中其中一台宕机,不再轮询访问后台主机,只访问没有宕机的主机, 但在客户端不会察觉到异样,若两台都宕机,web服务器重定向到调度器server1,访问server1 的apache服务。
两台后台主机都正常工作时:
其中一台服务器宕机时:
两台服务器都宕机时:
282 /etc/init.d/ldirectord start
283 cd /var/www/html/
284 ls
285 rm -fr *
286 vim index.html
287 /etc/init.d/httpd start