双nginx做负载均衡实验用shell来实现

162242939.jpg

上图是整个环境部署:

1、外部网通过虚拟IP访问真实服务器,但是如果其中一个真实的服务器down掉了,虚拟的IP并不知道,现在写一个脚本来判定,若其中一台真实服务器down掉,则把相应的虚拟IP用脚本自动切换到另一台机器上,实现方法如下所示:

vimnginx_ha1.sh

#!/bin/bash

date=$(date--date="today"+"%Y-%m-%d%H:%M:S")

fuction_bind_vip1()

{

/sbin/ifconfigeth0:ha161.1.1.2broadcast200.232.254.255netmask255.255.255.192up

/sbin/routeadd-host61.1.1.2deveth0:ha1

}

fuction_bind_vip2()

{

/sbin/ifcofigeth0:ha261.1.1.3broadcast200.232.254.255netmask255.255.255.192up

/sbin/routeadd-host61.1.1.3deveth0:ha2

}

fuction_remove_vip1()

{

/sbin/ifconfigeth0:ha161.1.1.2broadcast200.232.254.255netmask255.255.255.192down

}

fuction_remove_vip2()

{

/sbin/ifconfigeth0:ha261.1.1.3broadcast200.232.254.255netmask255.255.255.192down

}

fuction_vip_arping1()

{

/sbin/arping-Ieth0-c2-s61.1.1.261.1.1.1>/dev/null2>&1

}

fuction_vip_arping2()

{

/sbin/arping-Ieth0-c2-s61.1.1.361.1.1.1>/dev/null2>&1

}

bind_time_vip1="N"

bind_time_vip2="N"

httpcode_rip1=`/usr/bin/curl-o/dev/null-s-w%{http_code}http://61.1.1.4`

httpcode_rip2=`/usr/bin/curl-o/dev/null-s-w%{http_code}http://61.1.1.5`

if[$httpcode_rip1=="200"];

then

if[$bind_time_vip1=="N"];

then

fuction_bind_vip1

fuction_vip_arping1

bind_time_vip1="Y"

fi

fuction_vip_arping1

else

if[$bind_time_vip1=="Y"];

then

fuction_remove_vip1

bind_time_vip1="N"

fi

fi

if[$httpcode_rip2=="200"];

then

if[$bind_time_vip2=="Y"];

then

fuction_remove_vip2

bind_time_vip2="N"

fi

else

if[$bind_time_vip2=="N"];

then

fuction_bind_vip2

fuction_vip_arping2

fi

fuction_vip_arping2

fi

sleep10

done

以上脚本是运行在真实服务器1上,判断地方的意思是有点绕,大家好好理解一下,另一台机器上的脚本跟上面一样,只是相应的变量不一样,大家有时间可以学习一下。

还可以利用keepalive来做,原理差不多。

你可能感兴趣的:(双nginx做负载均衡实验用shell来实现)