1 #!/bin/bash
2 # 手动安装lpvs前端管理工具
3 # chkconfig: - 85 15
4 #
5 # lvs启动脚本:director
6 # lvs模式类型:nat、dr、ipip
7 # lvs代理协议:tcp、udp、mark
8
9 # 检测输入类型是否为tcp/udp/mark
10 function check_type()
11 {
12 while true
13 do
14 read -p "tcp/udp/mark:" TYPE
15 if [[ $TYPE == tcp ]]
16 then
17 type=t
18 break
19 elif [[ $TYPE == udp ]]
20 then
21 type=u
22 break
23 elif [[ $TYPE == mark ]]
24 then
25 type=f
26 break
27 else
28 echo "Type Error"
29 continue
30 fi
31 done
32 }
33
34 # 检测输入模式是否为nat/dr/ipip
35 function check_mode()
36 {
37 while true
38 do
39 read -p "nat/dr/ipip:" MODE
40 if [[ $MODE == nat ]]
41 then
42 mode=m
43 break
44 elif [[ $MODE == dr ]]
45 then
46 mode=g
47 break
48 elif [[ $MODE == ipip ]]
49 then
50 mode=i
51 break
52 else
53 echo "Mode Error"
54 continue
55 fi
56 done
57 }
58
59
60 case $1 in
61 start)
62 # 虚拟物理接口
63 # ifconfig ethX:0 $VIP netmask 255.255.255.255 up
64 read -p "input the IP what you will do lvs:" VIP
65 read -p "input the PORT what you will do lvs:" PORT
66 check_type
67 check_mode
68 read -p "how many RIP you need:" RIPNUM
69 # 打开转发
70 # echo "1" > /proc/sys/net/ipv4/ip_forward
71 ipvsadm -A -$type $VIP:$PORT -s rr
72 for ((i=1;i<=$RIPNUM;i++))
73 do
74 read -p "请输入第$i个RIP:" RIP
75 ipvsadm -a -$type $VIP:$PORT -r $RIP -$mode
76 done
77 echo "lvs $MODE on $VIP:$PORT start success"
78 ;;
79 stop)
80 # 虚拟物理接口
81 # ifconfig ethX:0 down
82 read -p "input the IP what you will do lvs:" VIP
83 read -p "input the PORT what you will do lvs:" PORT
84 check_type
85 # 关闭转发
86 # echo "0" > /proc/sys/net/ipv4/ip_forward
87 ipvsadm -D -$type $VIP:$PORT
88 echo "lvs on $VIP:$PORT is down"
89 ;;
90 esac