注意:该健康检查是在DR模式下进行的。
一.为什么要进行健康检查?
当后端真实服务器出现问题时,那么客户端在访问时可能会给用户返回错误的界面,所以我们需要对后端真实服务器进行健康检查,保证给用户返回正确信息。
二.在调度器(server1)上部署健康检查功能
1.添加高可用yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo #在原来的yum源的基础上添加如下内容
[HighAvailability] //高可用
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/HighAvailability
enabled=1
gpgcheck=0
[root@server1 ~]# yum clean all
[root@server1 ~]# yum repolist ##可以看到新的yum源的软件数有3750(高可用有56个包);如果不是,代表yum源的搭建有误。
2.安装健康检查需要安装的安装包:ldirectord-3.9.5-3.1.x86_64.rpm
3.将配置文件拷贝到/etc/ha.d目录下
4.编辑配置文件
[root@server1 ha.d]# vim ldirectord.cf
25 virtual=172.25.83.100:80 ##LB的虚拟IP
26 real=172.25.83.2:80 gate ##真实服务器的IP
27 real=172.25.83.3:80 gate ##真实服务器的IP
28 fallback=127.0.0.1:80 gate
29 service=http
30 scheduler=rr
31 #persistent=600
32 #netmask=255.255.255.255
33 protocol=tcp
34 checktype=negotiate
35 checkport=80
36 request="index.html"
37 #receive="Test Page"
38 #virtualhost=www.x.y.z
5.开启服务
6.在调度器(server1)上下载httpd服务并开启,在默认发布目录下编辑默认发布文件,写入当服务器出现问题时给用户所展现的内容
[root@server1 ha.d]# yum install httpd
[root@server1 ha.d]# /etc/init.d/httpd start
[root@server1 ha.d]# cd /var/www/html/
[root@server1 html]# vim index.html<h1>网站维护中...</h1>
客户端测试:
1.后端服务器都正常时,实现轮循
2.当server2关掉即一台真实服务器出现问题时,则只调度server3
此时调度器中剩下的真实的服务器只剩下server3。
3.将server1上的httpd服务端口该为80(之前做CDN推送时将端口该为8080),关掉server2和server3,即当两台服务器都出现问题时,会出现错误页面(调度器server1的httpd服务的默认发布文件中的内容)
此时调度器中已经没有真实服务器。
即:测试时,如果当关闭server3的httpd,只会server2;如果server2和server3的httpd 都关闭时,我们访问100这个IP时,它会访问本地,即显示:系统正在维护中……
实验中遇到的问题:如果在调度器(server1)上的/var/www/html目录中,删除index.html文件以外的文件,会出现下面的内容。
所以要删除/var/www/html目录中的index.html文件以外的文件。