准备工作
需要最少准备三台虚拟机,关闭selinx和防火墙。
| 主机名 |
身份 |
网络接口 |
连接模式 |
IP地址 |
软件 |
| DS |
调度服务器 |
ens224 |
仅主机 |
172.21.8.80/24 |
ipvsadm |
| web1 |
真实服务器 |
ens224 |
仅主机 |
172.21.8.20/24 |
nginx |
| web1 |
真实服务器 |
lo(VIP) |
- |
172.21.8.80/32 |
nginx |
| web2 |
真实服务器 |
ens224 |
仅主机 |
172.21.8.30/24 |
nginx |
| web2 |
真实服务器 |
lo(VIP) |
- |
172.21.8.80/32 |
nginx |
PS:
- 建议DS(调度机)的网卡使用仅主机模式的。
- web1和web2的loopback网卡都要设置为DS主机的metric值大的那一张网卡。
- 可以使用
route -n查看metric值。
- metric值可以在网卡配置文件中修改,修改后记得重启网络服务生效。
DS主机配置
1 2 3 4
| ipvsadm -A -t 172.21.8.80:80 -s wrr ipvsadm -a -t 172.21.8.80:80 -r 172.21.8.20:80 -g -w 1 ipvsadm -a -t 172.21.8.80:80 -r 172.21.8.30:80 -g -w 2 ipvsadm --set 1 1 1
|
调度策略中,前面的这个IP是调度机虚拟出来的VIP,后面的这个IP是真实Web服务器的IP地址。
也可以直接编辑成一个脚本文件,方便后面进行策略的调整
1 2 3 4 5 6 7 8 9
| #!/bin/bash ipvsadm -C ipvsadm -A -t 10.8.7.10:80 -s wrr ipvsadm -a -t 10.8.7.10:80 -r 10.8.7.80:80 -g -w 1 ipvsadm -a -t 10.8.7.10:80 -r 10.8.7.81:80 -g -w 2 ipvsadm -a -t 10.8.7.10:80 -r 10.8.7.82:80 -g -w 1 ipvsadm -a -t 10.8.7.10:80 -r 10.8.7.83:80 -g -w 2 ipvsadm --set 1 1 1 echo "轮巡策略已成功添加!!!"
|
Web1主机和Web2主机配置
1
| ip addr add 172.21.8.80/32 dev lo
|
因为环回口配置的IP在每次重启之后都会丢失IP,每次配置起来也比较麻烦,同样的把他写成一个脚本
1 2 3
| #!/bin/bash ip addr add 10.8.7.10/32 dev lo:1 echo "VIP 已经成功添加到loopback口。"
|
折叠代码1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #!/bin/bash if [ $# -ne 1 ] then echo 'error!'"usage:$0 on|off" exit 1 fi case $1 in on) echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce echo "LVS DR 模式已开启!" ;; off) echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce echo "LVS DR 模式已关闭!" ;; *) echo 'error!'"usage:$0 on|off" exit 1 esac
|
1 2
| chmod +x lvs_dr.sh ./lvs_dr.sh on
|
测试
- 在Web1、Web2启动Nginx。
- 分别执行
curl 172.21.8.20,curl 172.21.8.30。验证无误后,在客户端(第4台机器)上测试curl 172.21.8.80,使用DR机器是不好使的。
版权声明:以上的shell脚本知识产权由私人所有,禁止商用。