#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DR-RIP
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.46.150
. /etc/rc.d/init.d/functions
start() {
PID=`ifconfig | grep lo:10 | wc -l`
if [ $PID -ne 0 ];
then
echo "The LVS-DR-RIP Server is already running !"
else
/sbin/ifconfig lo:10 $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev lo:10
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/ens160/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/ens160/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
/bin/touch $LOCK
echo "starting LVS-DR-RIP server is ok !"
fi
}
stop() {
/sbin/route del -host $VIP dev lo:10
/sbin/ifconfig lo:10 down >/dev/null
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/ens160/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/ens160/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
rm -rf $LOCK
echo "stopping LVS-DR-RIP server is ok !"
}
status() {
if [ -e $LOCK ];
then
echo "The LVS-DR-RIP Server is already running !"
else
echo "The LVS-DR-RIP Server is not running !"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $1 {start|stop|restart|status}"
exit 1
esac
exit 0
# 创建开机自启动脚本lvs_dr
[root@openEuler ~]# vim /etc/init.d/lvs_rs
# 设置编辑权限
[root@openEuler ~]# chmod +x /etc/init.d/lvs_rs
# 修改脚本内容
[root@openEuler ~]# vim /etc/init.d/lvs_rs
VIP=192.168.46.100
echo "1" >/proc/sys/net/ipv4/conf/ens160/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/ens160/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/ens160/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/ens160/arp_announce
# 将 lvs_dr 服务添加到系统的服务列表中
[root@openEuler ~]# chkconfig --add lvs_rs
# 将 lvs_dr 服务设置为在系统运行级别 3、4 和 5 时自动启动
[root@openEuler ~]# chkconfig lvs_rs on
# 启动该服务
[root@openEuler ~]# systemctl start lvs_rs.service
# 查看服务是否启动
[root@openEuler ~]# systemctl status lvs_rs.service
# 查看是否运行脚本,存在VIP
[root@openEuler ~]# ip ad
复制代码
# 查看是否配置成功
[root@openEuler ~]# route -n
3. 测试
(1)查看VIP在哪个机器上
VIP在lvs01上
(2)在client上访问192.168.46.100
复制代码
[root@slient ~]# for ((i=1;i<7;i++)) ; do curl 192.168.46.100; done
实现负载均衡!
(3)假设master上的keepalived停止服务,看lvs02是否承担master任务
复制代码
# 在lvs01 上停止服务
[root@lvs01 ~]# systemctl stop keepalived.service
#查看lvs02 IP地址
[root@lvs02 ~]# ip ad