1、开发脚本 管理服务端 LVS
#!/bin/bash
. /etc/init.d/functions
VIP=192.168.1.66
INTERFACE=ens33
subinterface=${interface}:`echo $vip| cut -d. -f4`
PORT=80
GW=192.168.1.1
RETVAR=0
IP=/sbin/ip
ROUTE=/sbin/route
IPVSADM=/sbin/ipvsadm
ARPING=/sbin/arping
RIPS={
192.168.1.133
192.168.1.140
}
function uasge (){
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=$?
#更新 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 () { #停止 Ipvs
$IPVSADM -C
$IPVSADM -Z
$IP addr del $VIP/24 dev ${INTERFACE} label $suninterface &>/dev/null #删除 VIP
RETVAR=$?
$ROUTE del -host $VIP dev $subinterface &>/dev/null # 删除路由
$ARPING -c 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 ()
{
if [ $# -ne 1 ]; then
usage $0
fi
case "$1" in
start)
ipvsStart
;;
stop) ipvsStop
;;
restart)
ipvsStop
ipvsStart
;;
*)
usage $0
;;
esac
}
main $*
2、LVS 节点健康检查及管理脚本
#!/bin/bash
IPVSADM=/sbin/ipvsadm
vip=192.168.1.66
port=80
RIPS=(
192.168.1.7
192.168.1.8
)
while true
do
for ((i=0;i<${#RIPS[*]};i++))
do
port_count=`nmap ${RIPS[$i]} -p $port | grep open | wc -l` #节点检查,是否正常
if [ $port_count -ne 1 ];then #如果节点不通
if [ `$IPVSADM -Ln| grep ${RIPS[$i]} | wc -l` -ne 0 ];then
# 并且确定没有从池中剔除
$IPVSADM -d -t $VIP:$port -r ${RIPS[$i]}:$PORT >/dev/null 2>&1
# 则 剔除 不正常的节点
fi
else
if [ `$IPVSADM -Ln | grep ${RIPS[$i]}| wc -l` -eq 0 ];then
# 如果节点池中没有 RS
$IPVSADM -a -t $VIP:$port -r ${RIPS[$i]}:$port >/dev/null 2>&1
# 则添加对应的节点
fi
fi
done
sleep 5
done
3、LVS 客户端配置脚本
#!/bin/bash
RETVAR=0
vip=(
192.168.1.7
192.168.1.8
)
. /etc/init.d/functions
case "$1" in
start)
for ((i=0; i<`echo ${#vip[*]}`;i++))
do
interface="lo:`echo ${vip[$i]}|awk -F . '{print $4}'`"
/sbin/ip addr add ${vip[$i]}/24 dev lo label $interface
RETVAR=$?
done
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/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_annouce
if [ $RETVAR -eq 0 ];then
action "Start LVS config of rearserver." /bin/true
else
action "Start LVS config of rearserver." /bin/false
fi
;;
stop)
for ((i=0; i<`echo ${#vip[*]}`;i++))
do
interface="lo:`echo ${vip[$i]}|awk -F . '{print $4}'`"
/sbin/ip addr add ${vip[$i]}/24 dev lo label $interface
RETVAR=$?
done
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_annouce
if [ $RETVAR -eq 0 ];then
action "Start LVS config of rearserver." /bin/true
else
action "Start LVS config of rearserver." /bin/false
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit $RETVAR
4、模拟 keepalived 软件高可用
#!/bin/bash
vip=192.168.1.66
port=80
ipvs_tools=`rpm -qa ipvsadm| wc -l`
if [ $ipvs_tools -ne 1 ]
then
yum install ipvsadm -y
fi
while true
do
ping -w2 -c2 ${vip} >/dev/null 2>&1
if [ $? -ne 0 ];then
/bin/sh ./lvsstart.sh start >/dev/null 2>&1
else
/bin/sh ./lvsstart.sh stop >/dev/null 2>&1
fi
sleep 5
done
# 要借助上面的lvs 服务启动的脚本
5、编写 正(长)方形 图形
## 长方形
#!/bin/bash
read -p "Please enter a number:" Line
for ((i=1;i<=$Line;i++))
do
for ((m=1;m<=$(($Line+1));m++))
do
echo -n "*"
done
for ((h=1;h<=$(($Line-1));h++))
do
echo -n '*'
done
echo
done
## 正方形
#!/bin/bash
read -p "please input a number:" Line
for ((i=1;i<=$Line;i++))
do
for ((m=1;m<=$(($Line));m++))
do
echo -n " ⚪ "
done
echo
done