lvs DR模式,一键部署脚本:
在这个脚本VIP和RIP等都是可以自定义的。并且脚本可以根据主机名自动的判断是配置vip和rip,即实现一个脚本到处执行。
#!/bin/bash
#by zyz
#############################
# 获取主机名
HOSTNAME=`hostname`
# 设置VIP和RIP的主机名变量
VIP_HOSTNAME="LVS-72-200"
RIP_HOSTNAME_1="RIP-72-127"
RIP_HOSTNAME_2="RIP-72-128"
VIP=192.168.72.200
RIP1=192.168.72.127
RIP2=192.168.72.128
PORT=80
# VIP服务器的VIP子网卡
VIP_INTERFACE=ens32:1
# 后端服务器的lo子网卡
LO_INTERFACE=lo:1
# VIP和RIP出去的网关,该网关为路由器的内网地址
GATEWAY=192.168.72.130
# 配置LVS:
if [ "$HOSTNAME" = "$VIP_HOSTNAME" ];then
case "$1" in
start)
ping -c2 $VIP &>/dev/null
if [ $? -ne 0 ];then
cd /etc/sysconfig/network-scripts/
cat > ifcfg-$VIP_INTERFACE <<-EOF
TYPE="Ethernet"
BOOTPROTO="none"
DEVICE="${VIP_INTERFACE}"
ONBOOT="yes"
IPADDR=$VIP
PREFIX=24
GATEWAY=$GATEWAY
EOF
ifup ${VIP_INTERFACE}
# 设置VIP虚拟服务器
/usr/sbin/ipvsadm -A -t $VIP:$PORT -s rr
for i in $RIP{1..2};do
/usr/sbin/ipvsadm -a -t $VIP:$PORT -r ${i}
done
echo -e "\nVIP服务部署成功!配置如下:\n`ipvsadm -ln`"
else
echo "检查VIP是否已经被使用!"
fi
;;
stop)
/usr/sbin/ipvsadm -D -t $VIP:$PORT
cd /etc/sysconfig/network-scripts/
ifdown ${VIP_INTERFACE} &>/dev/null
rm -rf ifcfg-${VIP_INTERFACE}
route del default gw $GATEWAY &>/dev/null
echo "VIP service stopped!"
;;
status)
ipvsadm -ln
;;
*)
echo "Usage: $0 {start|stop|status}"
;;
esac
# 配置RIP
elif [ "$HOSTNAME" = "$RIP_HOSTNAME_1" ];then
case "$1" in
start)
cd /etc/sysconfig/network-scripts/
cat > ifcfg-$LO_INTERFACE <<-EOF
DEVICE=$LO_INTERFACE
IPADDR=$VIP
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback
EOF
ifdown $LO_INTERFACE &>/dev/null && ifup ${LO_INTERFACE}
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
route add default gw $GATEWAY &>/dev/null
;;
stop)
ifdown $LO_INTERFACE &>/dev/null
cd /etc/sysconfig/network-scripts/
rm -rf ifcfg-$LO_INTERFACE
route del default gw $GATEWAY &>/dev/null
;;
status)
echo "VIP: `ip a | awk '/lo:1/{print $2}'`"
echo "GATEWAY: `route -n | awk 'NR==3{print $2}'`"
;;
*)
echo "$0: Usage: $0 {start|status|stop}"
exit 1
;;
esac
elif [ "$HOSTNAME" = "$RIP_HOSTNAME_2" ];then
case "$1" in
start)
cd /etc/sysconfig/network-scripts/
cat > ifcfg-$LO_INTERFACE <<-EOF
DEVICE=$LO_INTERFACE
IPADDR=$VIP
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback
EOF
ifdown $LO_INTERFACE &>/dev/null && ifup ${LO_INTERFACE}
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
route add default gw $GATEWAY &>/dev/null
;;
stop)
ifdown $LO_INTERFACE &>/dev/null
cd /etc/sysconfig/network-scripts/
rm -rf ifcfg-$LO_INTERFACE
;;
status)
echo "VIP: `ip a | awk '/lo:1/{print $2}'`"
echo "GATEWAY: `route -n | awk 'NR==3{print $2}'`"
;;
*)
echo "$0: Usage: $0 {start|status|stop}"
exit 1
;;
esac
fi