1 配置eth0 IP
2 关闭ARP相应
rs1 rs2关闭arp 通告 回应
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.eth0.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -w net.ipv4.conf.all.arp_announce=2
3 3个全配置
rs2 rs1 ifconfig lo:0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.100
DR ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.100
rs1 rs2 route add -host 192.168.1.100 dev lo:0
DR route add -host 192.168.1.100 dev eth0:0
4 配置ipvsadm -g DR模式
ipvsadm -A -t 192.168.1.100:80 -s wrr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g -w 2
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -g -w 1
5
脚本实现后端健康检查 自动删除添加
#!/bin/bash
#
VIP=192.168.1.100 (1 提供服务IP)
CPORT=80
FAIL_BACK=127.0.0.1
FBSTATUS=0
RS=("192.168.1.10" "192.168.1.12" "192.168.1.13") (2 此处可以添加其他真实主机)
RSTATUS=("1" "1" "1") (3 添加真实主机时, 此处加 一个)
RW=("2" "1" "1") (4 添加真实主机时, 此处加 一个)
RPORT=80
TYPE=g
add() {
ipvsadm -a -t $VIP:$CPORT -r $1:$RPORT -$TYPE -w $2
[ $? -eq 0 ] && return 0 || return 1
}
del() {
ipvsadm -d -t $VIP:$CPORT -r $1:$RPORT
[ $? -eq 0 ] && return 0 || return 1
}
while :; do
let COUNT=0
for I in ${RS[*]}; do
if curl --connect-timeout 1 http://$I &> /dev/null; then
if [ ${RSTATUS[$COUNT]} -eq 0 ]; then
add $I ${RW[$COUNT]}
[ $? -eq 0 ] && RSTATUS[$COUNT]=1
fi
else
if [ ${RSTATUS[$COUNT]} -eq 1 ]; then
del $I
[ $? -eq 0 ] && RSTATUS[$COUNT]=0
fi
fi
let COUNT++
done
sleep 5
done
执行 . /zd.sh &
测试 关闭一台 查看 ipvsadm -L -n
本文出自 “ITcain” 博客,请务必保留此出处http://521kun.blog.51cto.com/9397206/1775233