lvs开机自启动脚本
lvs-dr设置步骤
调度器上:
设置调度器的VIP,broadcast表示自广播给自己,在调度器上不是必须的。这个地址配置在外网卡的别名上。
ifconfig ens160:0 192.168.1.108/32 broadcast 192.168.1.108 up
限定从哪个入口进来就从哪个接口出去。在调度器上这个设置不是必须的,但是在RealServer上是必须要设置的。route -n 查看设置的路由。
route add -host 192.168.1.108 dev ens160:0
RealServer上:
RS1:
只要设置如下两个即可:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
也可以把外网卡ens160也设置上,不是一定要设置
echo 1 > /proc/sys/net/ipv4/conf/ens160/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/ens160/arp_announce
这几个文件原来的值都是0
在RealServer上配置VIP:不同与调度器上的是,这个VIP是配置在lo接口的别名上,而不是外网卡的别名上
ifconfig lo:0 192.168.1.108/32 broadcast 192.168.1.108 up
RS2:
一样的设置
在调度器上:
ipvsadm -A -t 192.168.1.108:80 -s rr
ipvsadm -a -t 192.168.1.108:80 -r 192.168.1.106 -g
ipvsadm -a -t 192.168.1.108:80 -r 192.168.1.107 -g
可实现开机自动设置lvs的脚本,在 /etc/rc.local 中执行即可。
#!/bin/bash
#########################################
#
# 实现lvs-dr
#
#########################################
#
# 调度器上要执行的内容
# @param
#
director() {
local network_name=$1
local vip=$2
local rs1=$3
local rs2=$4
if [ -z "$network_name" ]; then
echo "error: network_name can not empty";exit
fi
if [ -z "$vip" ]; then
echo "error: vip can not empty";exit
fi
if [ -z "$rs1" ] || [ -z "rs2" ]; then
echo "error: rs1 and rs2 can not empty";exit
fi
ifconfig $network_name:0 $vip/32 broadcast $vip up
route add -host $vip dev $network_name:0
ipvsadm -A -t $vip:80 -s rr
ipvsadm -a -t $vip:80 -r $rs1 -g
ipvsadm -a -t $vip:80 -r $rs2 -g
# ifconfig
# route -n
# ipvsadm -L -n
}
#
# real server 上要执行的命令
# @param
#
realserver() {
local vip=$1
if [ -z "$vip" ];then
echo "vip can not empty";exit
fi
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 $vip/32 broadcast $vip up
}
#
# 帮助信息
# @param
#
usage() {
cat <<EOF
real server execute:
-r vip
example:
lvs.sh -r 192.168.1.108
director execute:
-d network_name vip
example:
lvs.sh -d ens160 192.168.1.108 192.168.1.106 192.168.1.107
EOF
}
if [ -z "$1" ];then
usage
fi
while [ -n "$1" ]
do
case "$1" in
--realserver|-r)
VIP=$2
realserver $2
shift 2
;;
--director|-d)
director $2 $3 $4 $5
shift 5
;;
--help|-h)
usage
break
;;
esac
done手动配置
调度器的配置:
lvs01:
RIP:192.168.0.15、192.168.0.16
VIP:192.168.0.14
yum install ipvsadm ifconfig eth0:0 192.168.0.14/32 broadcast 192.168.0.14 up route add -host 192.168.0.14 dev eth0:0 ipvsadm --add-service --tcp-service 192.168.0.14:80 --scheduler rr ipvsadm --add-server --tcp-service 192.168.0.14:80 --real-server 192.168.0.15:80 -g ipvsadm --add-server --tcp-service 192.168.0.14:80 --real-server 192.168.0.16:80 -g ipvsadm --list
保存规则:
ipvsadm --save /etc/sysconfig/ipvsadm
恢复规则:
ipvsadm --restore < /etc/sysconfig/ipvsadm
lvs02:
同lvs01完全一样,包括IP
RealServer的配置:
RS1 和 RS2 需要有响应的web服务。
Real Server RS1:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce ifconfig lo:0 192.168.0.14/32 broadcast 192.168.0.14 up # 将VIP配置值在lo接口上 route add -host 192.168.0.14 dev lo:0 # 响应报文要经过lo接口
提供web服务。
Real Server RS2:
同RS1完全一样,包括web服务的配置。
