LVS 自开发脚本

lvs启动脚本—服务端

chkconfig --add lvs

chmod +x /etc/init.d/lvs

[[email protected] ~]# cat /etc/init.d/lvs

#!/bin/bash

# chkconfig: 2345 90 60

# description: lvs server start and stopscripts

# hexudong

. /etc/init.d/functions

VIP=(

192.168.1.16

)

RS=(

192.168.1.20

192.168.1.21

)

dev=eth0

arp_ip=192.168.1.253

lvs_start(){

ipvsadm -C

ipvsadm --set 30 5 60

for((i=0;i<${#VIP[*]};i++))

do

count=`ip addr|grep ${VIP[i]}|wc -l`

[$count -eq 0 ]&&ip addr add ${VIP[i]}/24 dev $dev

RETVAL1=$?

/sbin/arping -I $dev -c 3 -s ${VIP[i]} $arp_ip >/dev/null 2>&1

ipvsadm -A -t ${VIP[i]}:80 -s rr -p20

for ((n=0;n<${#RS[*]};n++))

do

ipvsadm -a -t ${VIP[i]}:80 -r ${RS[n]} -g -w 1

done

done

((RETVAL=$RETVAL1+$?))

sleep 2

if[ $RETVAL -eq 0 ]

then

action "The lvs_server is start" /bin/true

else

action "The lvs_server is start" /bin/false

fi

}

lvs_stop(){

ipvsadm -C

for((i=0;i<${#VIP[*]};i++))

do

count=`ip addr|grep ${VIP[i]}|wc -l`

[$count -ne 0 ]&&ip addr del ${VIP[i]}/24 dev $dev

RETVAL1=$?

done

((RETVAL=$RETVAL1+$?))

sleep2

if[ $RETVAL -eq 0 ]

then

action "The lvs_server is stop" /bin/true

else

action "The lvs_server is stop" /bin/false

fi

}

USAGE(){

echo "USAGE:$0{start|stop|restart}"

}

[ $# -ne 1 ]&&{

USAGE

exit 2

}

case "$1" in

start)

lvs_start

exit $RETVAL

;;

stop)

lvs_stop

exit $RETVAL

;;

restart)

lvs_stop

lvs_start

exit $RETVAL

;;

*)

USAGE

exit 3

esac

lvs客户端

[[email protected] ~]# cat /etc/init.d/lvs_client

#!/bin/bash

# chkconfig: 2345 90 60

# description: lvs client start and stopscripts

# hexudong

. /etc/init.d/functions

VIP=(

192.168.1.16

)

lvs_start(){

for((i=0;i<${#VIP[*]};i++))

do

count=`ip addr|grep ${VIP[i]}|wc -l`

[$count -eq 0 ]&&ip addr add ${VIP[i]}/32 dev lo

done

RETVAL=$?

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_announce

sleep 1

if[ $RETVAL -eq 0 ]

then

action "The lvs_client is start" /bin/true

else

action "The lvs_client is start" /bin/false

fi

}

lvs_stop(){

for((i=0;i<${#VIP[*]};i++))

do

count=`ip addr|grep ${VIP[i]}|wc -l`

[$count -ne 0 ]&&ip addr del ${VIP[i]}/32 dev lo

done

RETVAL=$?

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

sleep 1

if[ $RETVAL -eq 0 ]

then

action "The lvs_client is stop" /bin/true

else

action "The lvs_client is stop" /bin/false

fi

}

USAGE(){

echo "USAGE:$0{start|stop|restart}"

}

[ $# -ne 1 ]&&{

USAGE

exit2

}

case "$1" in

start)

lvs_start

exit $RETVAL

;;

stop)

lvs_stop

exit $RETVAL

;;

restart)

lvs_stop

lvs_start

exit $RETVAL

;;

*)

USAGE

exit 3

esac

web端 RS的健康检查

[[email protected] scripts]# cat lvs_rs_check.sh

#!/bin/bash

# hexudong

VIP=(

192.168.1.16

)

RS=(

192.168.1.20

192.168.1.21

)

web_file=/data0/check/index.html

html(){

cat>$web_file<<EOF

<html>

<head>

<title>rs nodedetection</title>

<meta http-equiv="refresh"content="1">

</head>

<body >

<center><atarget=_blank><font size=8 color="0000ff"><b>RSCheck</b></font></a><br></center>

<hr>

<div><p>rs checklist</p></div>

<table width="400"height="200"  border=1align=center>

<tr size=300>

<td bgcolor="Cyan"width="200">RS</td>

<td bgcolor="Cyan" width="150">STAT</td>

</tr>

EOF

for((i=0;i<${#RS[*]};i++))

do

echo "   <trsize=300>" >>$web_file

echo "        <tdbgcolor=\"#00CC33\" >${RS[i]}</td>" >>$web_file

echo "        <td id=${RS[i]}bgcolor=\"#00CC33\" >OK</td>" >>$web_file

echo "   </tr>">>$web_file

done

cat>>$web_file<<EOF

</table>

</body>

<html>

EOF

}

lvs_add(){

for((n=0;n<${#VIP[*]};n++))

do

if [ `ipvsadm -L -n|grep ${RS[i]}|wc -l` -ne ${#VIP[*]} ];then

ipvsadm -a -t ${VIP[n]}:80 -r ${RS[i]} -g -w 1

fi

done

}

lvs_del(){

for((n=0;n<${#VIP[*]};n++))

do

if [ `ipvsadm -L -n|grep ${RS[i]}|wc -l` -ne 0 ];then

ipvsadm -d -t ${VIP[n]}:80 -r ${RS[i]}

fi

done

}

check_rs(){

for((i=0;i<${#RS[*]};i++))

do

num=`curl -I -s -w "%{http_code}" -o /dev/null ${RS[i]}`

if [ $num -ne 200 ]

then

sed -i /‘<td id=‘${RS[i]}‘ bgcolor‘/[email protected]*@‘        <td id=‘${RS[i]}‘bgcolor="#FF0000" >BAD</td>‘@g $web_file

lvs_del

else

sed -i /‘<td id=‘${RS[i]}‘ bgcolor‘/[email protected]*@‘        <td id=‘${RS[i]}‘bgcolor="#00CC33" >OK</td>‘@g $web_file

lvs_add

fi

done

}

main(){

html

while true;do

check_rs

sleep 1

done

}

main

lvs 备机-对主机进行健康检查

备机先不要开健康检查,等待主机挂掉,备机增加VIP,并管理RS层

[[email protected] scripts]# cat lvs_check.sh

#!/bin/bash

# hexudong

VIP=(

192.168.1.16

)

RS=(

192.168.1.21

192.168.1.20

)

dev=eth0

lvs_server=192.168.1.14

arp_ip=192.168.235.253

lvs_add(){

ipvsadm -C

ipvsadm --set 30 5 60

for((i=0;i<${#VIP[*]};i++))

do

count=`ip addr|grep ${VIP[i]}|wc -l`

[$count -eq 0 ]&&ip addr add ${VIP[i]}/24 dev $dev

/sbin/arping -I $dev -c 3 -s ${VIP[i]} $arp_ip >/dev/null 2>&1

ipvsadm -A -t ${VIP[i]}:80 -s wrr -p20

for ((n=0;n<${#RS[*]};n++))

do

ipvsadm -a -t ${VIP[i]}:80 -r ${RS[n]} -g -w 1

done

done

}

lvs_del(){

ipvsadm -C

for((i=0;i<${#VIP[*]};i++))

do

count=`ip addr|grep ${VIP[i]}|wc -l`

[$count -ne 0 ]&&ip addr del ${VIP[i]}/24 dev $dev

done

}

check_lvs(){

ping -c2 $lvs_server >>/dev/null 2>&1

RETVAL=$?

if[ $RETVAL -ne 0 ]

then

[ `ipvsadm -L -n|grep "TCP"|wc -l` -eq 0 ]&& \

lvs_add

else

[ `ipvsadm -L -n|grep "TCP"|wc -l` -ne 0 ]&& \

lvs_del

fi

}

main(){

while true;do

check_lvs

sleep 1

done

}

main

时间: 2025-01-21 21:01:24

LVS 自开发脚本的相关文章

一个lvs的安装脚本

一个lvs的安装脚本,大家可以参考一下 说明: 1.给一个可执行权限,在第一台realserver上运行-h,看帮助, 2.创建realserver :运行脚本输入realsever 3.创建lvs:运行脚本输入lvs #!/bin/bash#builed realserverrealserver() {    A=`cat /proc/sys/net/ipv4/conf/all/arp_ignore`    if [ $A -eq 0 ]; then        echo 1 > /proc

linux开发脚本自动部署及监控

开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: 要求: I.部署nginx反向代理三个web服务,调度算法使用加权轮询: #!/bin/sh ngxStatus=`ps aux | grep -v grep |grep -c nginx` function ngxProxyInstall() { if [ -e /usr/sbin/nginx ];then echo "nginx already installed" exit 110 else yum inst

LVS多VIP脚本

#!/bin/bash # description: Config realserver lo and apply noarp SNS_VIP=(         192.168.100.210         192.168.100.220         ) case "$1" in start)         for ((i=0;i<`echo ${#SNS_VIP[*]}`;i++))         do         interface="lo:`ech

企业Shell面试题14:开发脚本入侵检测与报警案例

面试及实战考试题:监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次. 1.1问题分析 1)首先要说明的是,思考过程的积累比实际代码开发的能力积累更重要. 2)什么是恶意篡改,只要是未经过许可的改动都是篡改. 3)文件内容被改动了会有如下特征. ◎ 大小可能会变化 ◎ 修改时间会变化 ◎ 文件内容会变化,利用md5sum指纹校验 ◎ 增加或删除文件,比对每次检测前后的文件数量. 1.2参考解答

LVS DR 实现脚本

# director端脚本 # cat /etc/init.d/ipvs #!/bin/bash # # LVS service script # chkconfig: - 90 10 . /etc/rc.d/init.d/functions # VIP=172.16.100.100 DIP=172.16.100.10 RIP1=172.16.100.11 RIP2=172.16.100.12 PORT=80 RSWEIGHT1=1 RSWEIGHT2=2 LOCKFILE=/var/lock/

LVS之NAT脚本

#!/bin/bash # # chkconfig: - 88 12 # description: LVS script for LVS/NAT # . /etc/rc.d/init.d/functions # VIP=192.168.0.219 DIP=192.168.10.10 RIP1=192.168.10.11 RIP2=192.168.10.12 # case "$1" in start)              /sbin/ifconfig eth0:1 $VIP net

LVS之DR脚本

Director脚本: #!/bin/bash # # chkconfig: - 88 12 # description: LVS script for VS/NAT # . /etc/rc.d/init.d/functions # VIP=192.168.0.219 DIP=192.168.10.10 RIP1=192.168.10.11 RIP2=192.168.10.12 # case "$1" in start)              /sbin/ifconfig eth0

LVS健康检测脚本分享

1.真实服务器健康状态检测 我们可以通过Shell脚本,实现对LVS后端的真实服务器开放服务的健康状态检测功能.当真实服务器服务出现问题,则自动将其从集群服务中移除,当真实服务器服务恢复,则自动将其加入到负载均衡集群服务中. 1.1 基于端口的健康检测 脚本思路: 通过扫描后端服务器的端口来判断真实服务器是否健康! 若端口开放则表示真实服务器健康,则将其加入到LVS集群中.若已存在集群中则不做任何操作. 若端口未开发则表示真实服务器故障,则将其从LVS集群中移除.若不存在则不做任何操作. She

Day11.开发脚本自动部署及监控

1.编写脚本自动部署反向代理.web.nfs:要求:I.部署nginx反向代理三个web服务,调度算法使用加权轮询: II.所有web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性: 2.编写监控脚本,监控nginx,nfs存活状态,内存使用率检测,异常则发送报警邮件 准备发送邮件的工具: 监控脚本的编写: 继续编写刚才的脚本编写,加入邮件功能 3.编写计划任务,定时运行监控脚本,完成监控操作