对后端服务器健康检查:
如果一个后端服务器挂掉将这个服务器踢出集群,让用户无感知,否则会出现访问时好时坏的情况,当宕机的服务器恢复正常时自动将他加回集群,当服务器集群宕机的时候返回一个统一的错误页面,这个页面来自于调度器
注意:ldirectord的依赖性来自于高可用(HighAvailability)的包,这个包是rhel6.5镜像中自带的,不需要专门去下载,将这个包加入到yum仓库中就可以用
1.正常情况下,客户端访问后端服务器时是两个服务器交替被访问
[root@foundation22 westos]# curl 172.25.22.100
<h1>server2.example.com</h1>
[root@foundation22 westos]# curl 172.25.22.100
<h1>server3- www.westos.org</h1>
[root@foundation22 westos]# curl 172.25.22.100
<h1>server2.example.com</h1>
[root@foundation22 westos]# curl 172.25.22.100
<h1>server3- www.westos.org</h1>
2.但是当其中某一个服务器宕掉的时候会出现下面的情况,一会有结果,一会返回连接失败
关闭server3的httpd
[root@server3 ~]# /etc/init.d/httpd stop
物理机测试:
[root@foundation22 westos]# curl 172.25.22.100
<h1>server2.example.com</h1>
[root@foundation22 westos]# curl 172.25.22.100
curl: (7) Failed connect to 172.25.22.100:80; Connection refused
[root@foundation22 westos]# curl 172.25.22.100
<h1>server2.example.com</h1>
[root@foundation22 westos]# curl 172.25.22.100
curl: (7) Failed connect to 172.25.22.100:80; Connection refused
server1:
3.官网下载ldirectord的安装包,配置yum仓库,这个工具安装时的依赖性在镜像中的HighAvailability目录中
(1)获得安装包
[root@server1 ~]# cd /
[root@server1 /]# ls
bin etc lib media proc selinux tmp
boot home lib64 mnt root srv usr
dev ldirectord-3.9.5-3.1.x86_64.rpm lost+found opt sbin sys var
(2)配置yum仓库
[root@server1 yum.repos.d]# ls
rhel-source.repo
[root@server1 yum.repos.d]# vim rhel-source.repo
[root@server1 yum.repos.d]# yum clean all
[root@server1 yum.repos.d]# yum repolist
(3)安装工具
[root@server1 ~]# yum install -y ldirectord-3.9.5-3.1.x86_64.rpm
4.将ldirectord的配置文件复制到/etc/ha.d目录下
(1)查询他的配置文件和配置目录
[root@server1 /]# rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm
(2)复制配置文件到配置目录
[root@server1 /]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d
[root@server1 /]# cd /etc/ha.d
[root@server1 ha.d]# ls
ldirectord.cf resource.d shellfuncs
5.编辑配置文件,开启服务
fallback :集群全部挂掉调度器返回的页面
[root@server1 ha.d]# vim ldirectord.cf
[root@server1 ha.d]# /etc/init.d/ldirectord start
Starting ldirectord... success
6.server1将/var/www/html下的东西删除,编写一个测试页(确保server1的httpd的端口是80),重启服务
将/var/www/html目录下的其他文件删除,编辑一个测试页index.html
更改httpd的端口为80
查看正在使用的端口
7.物理机测试:
(1)第一种情况:两个服务器都正常时,轮循调度
(2)第二种情况:某一个服务器挂掉,其他正常
挂掉的服务器被踢出集群,可以访问到的只有正常的服务器server2
(3)第三种情况:如果挂掉的服务器恢复,会被自动加入到集群中
开启server3的httpd服务,两台服务器都正常运行
物理机再次测试:
两台服务器交替被访问,恢复轮循调度,不用再次手动配置
(4)第四种情况:后端服务器集群全部宕机
两台服务器都挂掉,访问是返回的是调度器的页面
关闭server2和server3的httpd,物理机测试
[root@server2 ~]# /etc/init.d/httpd stop
Stopping httpd: [ OK ]
[root@server3 ~]# /etc/init.d/httpd stop
Stopping httpd: [ OK ]
返回的是调度器的页面
[root@foundation22 ~]# curl 172.25.22.100
是的,我挂了。。。