1、调度服务器的lvs_serv_dr.sh脚本
#! /bin/bash
#定义虚拟IP和实服务IP变量
Vip=192.168.2.200
Rs1=192.168.2.222
Rs2=192.168.2.231
source /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Start LVS of Server..."
# 在Director服务器上基于物理网卡eth0建立一个虚拟网络接口(新增一个子网卡,设置它的虚拟IP和广播地址以及子网掩码并启动)
/sbin/ifconfig eth0:1 $Vip broadcast $Vip netmask 255.255.255.255 up
# 打开Director服务器上开启路由转发功能(多网卡下的网卡间数据包转发)
#echo 1 > /proc/sys/net/ipv4/ip_forward
# 将虚拟地址添加到路由表
/sbin/route add -host $Vip dev eth0:1
# 清除所有的虚拟服务器记录
/sbin/ipvsadm -C
# 在内核虚拟服务器表中添加一台虚拟服务器(指定为tcp协议,指定虚拟ip和prot,指定调度算法)
/sbin/ipvsadm -A -t $Vip:6500 -s rr # rr 表示轮询调度
# 在一台虚拟服务器中增加一台新的真实服务器(执行虚拟服务对应真实服务的关系,指定负载均衡模式)
/sbin/ipvsadm -a -t $Vip:6500 -r $Rs1:6500 -g # -g 表示DR模式
/sbin/ipvsadm -a -t $Vip:6500 -r $Rs2:6500 -g
# 启动LVS
/sbin/ipvsadm
;;
stop)
echo "Close LVS of Server..."
# 清除所有的虚拟服务器记录
/sbin/ipvsadm -C
# 关闭这个子网卡
/sbin/ifconfig eth0:1 down
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
exit 0
2、真实服务器的lvs_real_dr.sh脚本
#!/bin/bash
#定义虚拟IP变量
Vip=192.168.2.200
source /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Start Real Server..."
# 在Real服务器上基于回环虚拟网卡lo建立一个虚拟网络接口
/sbin/ifconfig lo:1 $Vip broadcast $Vip netmask 255.255.255.255 up
# 将虚拟地址添加到路由表
/sbin/route add -host $Vip dev lo:1
# 定义对目标地址为本地IP的ARP询问的应答模式(1表示只应答目标Ip是接收请求的网络接口(非网卡,双接口可共用一个网卡)本地地址的ARP查询请求)
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
# 控制系统在对外发送arp请求时,如何选择arp请求数据包的源IP地址(2表示忽略Ip数据包源地址,选择可能接收到该ARP回应的网络接口来进行发送)
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
echo "Close Real Server..."
# 关闭这个网卡
ifconfig lo:1 down
# 恢复arp_ignore和arp_announce的值
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/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: "$1" {start|stop}"
;;
esac
exit 0
3、补充说明
1). Director 上需要安装 ipvsadm,命令:yum install -y ipvsadm
2). 脚本使用方式:./lvs_serv_dr.sh start