前言:前面我们说了LVS的DR,TUN工作模式,可以实现后端服务器的论循调度,但如果我们的后端服务器如果出现问题,用户的访问势必会受到影响.
1.模拟问题
/etc/init.d/httpd stop ##关闭一台服务器的http服务
用户在访问的时候会出现问题
这显然是不行的,如何解决这个问题呢
2.ldirectord实现健康检查,当我们的服务器出现问题的时候,会做健康检查,用户的访问不会受到影响
3.后端健康检查的部署
这里用到的软件ldirectord-3.9.5-3.1.x86_64.rpm ,大家可以到官网下载
1.server1 仍然作为调度器,添加调度规则
2 ip a #查看网卡信息
3 ip addr del 172.25.61.100/24 dev tunl0 #删除tunl0网卡,这里我们使用DR模式
4 ipvsadm -C
5 ipvsadm -l
6 ipvsadm -A -t 172.25.61.100:80 -s rr
7 ipvsadm -a -t 172.25.61.100:80 -r 172.25.61.2:80 -g
8 ipvsadm -a -t 172.25.61.100:80 -r 172.25.61.3:80 -g
9 modprobe -r ipip
10 /etc/init.d/ipvsadm save
2.添加网卡信息
ip addr add 172.25.61.100/24 dev eth0
3.配置yum源
14 vim /etc/yum.repos.d/rhel-source.repo
15 yum clean all
安装 ldirectord,修改配置文件
17 yum install -y ldirectord-3.9.5-3.1.x86_64.rpm
18 rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm #查看软件的配置文件
19 /usr/share/doc/ldirectord-3.9.5/ldirectord.cf
20 cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
21 cd /etc/ha.d/
22 ls
23 vim ldirectord.cf
24 /etc/init.d/ldirectord start #重启服务
4.修改http端口
25 cd /var/www/html/
26 ls
27 rm -rf *
28 vim index.html
29 vim /etc/httpd/conf/httpd.conf
30 /etc/init.d/httpd restart
server2和server3作为rs
1.添加网卡和开启apache服务
3 ip addr add 172.25.61.100/32 dev eth0
4 modprobe -r ipip
5 /etc/init.d/httpd stop
测试
第一种情况,两台后端服务器没有出现问题
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server3</h1>
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server3</h1>
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server2</h1
第二种情况,两台后端服务器其中一台出现问题
[root@server2 ~]# /etc/init.d/httpd stop
Stopping httpd: [ OK ]
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server2</h1>
[root@foundation61 yasuo]# curl 172.25.61.100
<h1>LVS server2</h1>
可以看到,访问不受影响
第三种情况,两台后端服务器都出现问题
[root@server2 ~]# /etc/init.d/httpd stop
Stopping httpd: [ OK ]
[root@server3 ~]# /etc/init.d/httpd stop
Stopping httpd: [ OK ]