健康检查
- lvs对端无法检查,如果后端的真实服务器出现问题,那么在测试端测试的时候会返回给我们一个错误的页面,那么我们需要对后端服务器做健康检查,保证只返回正确的页面给用户。
- 例如:我们关闭server2的httpd服务之后,客户端在请求的时候,就会出现返回错误界面,网页一会能看到一会看不到:
- 我们要做的是当某台真实的服务器出问题时,可以把这台服务器剔除集群,来保证用户访问的正常效果。
实验环境
- 3台rhel7.5版本的虚拟机
主机 | 服务 |
---|---|
server1(172.25.24.1) | 虚拟服务器 |
server2(172.25.24.2) | 真正的服务器1 |
server3(172.25.24.3) | 真正的服务器2 |
实验步骤
配置DR模式
server1主机
- 删除之前隧道模式的配置,并给eth0上添加一个100的ip。
[root@server1 ~]# modprobe -r ipip #删除隧道模式
[root@server1 ~]# ip addr add 172.25.24.100/24 dev eth0
[root@server1 ~]# ip addr show
- 清除原有的LUN(隧道模式)的策略,添加新的DR模式的策略。
[root@server1 ~]# ipvsadm -C
[root@server1 ~]# ipvsadm -ln
[root@server1 ~]# ipvsadm -A -t 172.25.24.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.24.100:80 -r 172.25.24.2:80 -g
[root@server1 ~]# ipvsadm -a -t 172.25.24.100:80 -r 172.25.24.3:80 -g
[root@server1 ~]# systemctl restart ipvsadm.service
[root@server1 ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.24.100:80 -s rr
-a -t 172.25.24.100:80 -r 172.25.24.2:80 -g -w 1
-a -t 172.25.24.100:80 -r 172.25.24.3:80 -g -w 1
[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.24.100:80 rr
-> 172.25.24.2:80 Route 1 0 0
-> 172.25.24.3:80 Route 1 0 0
server2和server3
- 删除隧道,添加100到eth0:
[root@server2 ~]# modprobe -r ipip
[root@server2 ~]# ip addr add 172.25.24.100/24 dev eth0
真机检测
- DR模式的检测
[root@foundation24 ~]# curl 172.25.24.100
server2-----apache
[root@foundation24 ~]# curl 172.25.24.100
server3-----apache
[root@foundation24 ~]# curl 172.25.24.100
server2-----apache
[root@foundation24 ~]# curl 172.25.24.100
server3-----apache
健康模式
server1
-
下载并安装健康模式需要的安装包ldirector。
-
安装过程会出错,我们还需要配置高可用的yum源。
-
配置yum源。
[rhel7.5]
name=rhel7.5
baseurl=http://172.25.24.24/rhel7.5
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.24.24/rhel7.5/addons/HighAvailability
gpgcheck=0
- 安装该软件
[root@server1 ~]# ls
ldirectord-3.9.5-3.1.x86_64.rpm
[root@server1 ~]# yum install * -y
- 将配置文件移到安装目录下,并修改健康检查的配置文件。
[root@server1 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
[root@server1 ~]# vim /etc/ha.d/ldirectord.cf #配置文件中修改:
25 virtual=172.25.24.100:80 #外部访问的IP
26 real=172.25.24.2:80 gate #真实的服务器1
27 real=172.25.24.3:80 gate #真实的服务器2
28 fallback=127.0.0.1:80 gate #fallback 自己的回环接口,两台RS都挂了就访问这个
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 #注释
- 修改完成后开启服务,且设置为开机自启动。
[root@server1 ~]# /etc/init.d/ldirectord start
[root@server1 ~]# chkconfig ldirectord on
- 安装httpd,写默认的发布文件,并开启httpd服务。
[root@server1 ~]# yum install httpd -y
[root@server1 ~]# vim /var/www/html/index.html
[root@server1 ~]# cat /var/www/html/index.html
糟糕,页面走丢了..
[root@server1 ~]# systemctl start httpd
健康模式测试
server2
- 在server2上,关闭httpd,在真机访问测试,我们发现只能访问server3主机的内容(server2已经被剔除):
- 在server1查看访问的次数。
- 将server3的httpd也关闭,在真机访问测试,此时只能访问server1主机的内容(server3也被剔除):
- 在server1查看访问的次数。