Shell脚本实战21-开发脚本管理服务端LVS

1. 需求

请在LVS负载均衡主节点上,开发管理LVS服务的脚本ip_vs。

实现:利用ipvsadm可以启动并配置好LVS服务,脚本如下:/etc/init.d/lvs {start|stop|restart}

2. 问题分析

此题需要对LVS软件有一定的了解。另外,如果进行实际测试,需要提前执行yum install ipvsadm -y安装LVS软件。

3. 参考脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/bash
. /etc/init.d/functions
VIP=10.0.0.3
INTERFACE=eth0
SubINTERFACE=${INTERFACE}:`echo $VIP | cut -d. -f4`
PORT=80
GW=10.0.0.254
RETVAR=0
IP=/sbin/ip
ROUTE=/sbin/route
IPVSADM=/sbin/ipvsadm
ARPING=/sbin/srping
RIPS=( #<==定义realserver节点IP数组
10.0.0.7
10.0.0.8
)
function usage()
{
echo "Usage : $0 {start|stop|restart}"
return 1
}
function ipvsStart() #<==配置ipvs
{
$IP addr add $VIP/24 dev ${INTERFACE} label $SubINTERFACE #<==添加VIP
$ROUTE add -host $VIP dev $SubINTERFACE #<==添加VIP对应主机路由
$IPVSADM -C
$IPVSADM -A -t $VIP:$PORT -s wrr -p 60 #<==生成ipvs实例
for ((i=0; i<`echo ${#RIPS[*]}`; i++))
do
$IPVSADM -a -t $VIP:$PORT -r ${RIPS[$i]}:$PORT -g -w 1
#<==添加节点
done
RETVAR=$?
# update MAC
$ARPING -c 1 -I ${INTERFACE} -s $VIP $GW &> /dev/null #<==arp表
if [ $RETVAR -eq 0 ]
then
action "Ipvsadm started." /bin/true
else
action "Ipvsadm started." /bin/false
fi
return $RETVAR
}
function ipvsStop()
{
$IPVSADM -C
$IPVSADM -Z
$IP addr del $VIP/24 dev ${INTERFACE} label $SubINTERFACE &> /dev/null
#<==删除VIP
RETVAR=$?
$ROUTE del -host $VIP dev $SubINTERFACE &> /dev/null #<==删除路由
$ARPING -从1 -I ${INTERFACE} -s $VIP $GW > /dev/null 2>&1 #<==更新arp表
if [ $RETVAR -eq 0 ]
then
action "Ipvsadm stopped." /bin/true
else
action "Ipvsadm stopped." /bin/false
fi
return $RETVAR
}
main()
{
#judge argv num
if [ $# -ne 1 ]
then
usage $0
fi
case "$1" in
start)
ipvsStart
;;
stop)
ipvsStop
;;
restart)
ipvsStop
ipvsStart
;;
*)
usage $0
;;
esac
}
# start operating
main $*
0%