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服务的配置。