在liunx双机下自己动手实现浮动IP技术
2015-06-19 09:27
134 查看
原文:
http://www.360doc.com/content/11/0823/18/5907545_142730623.shtml
有两台Linux服务器,其中一台主机(IP:139.24.214.22)对外提供了一定的网络服务,另一台从机(IP:139.24.214.24)能提供相同的服务,但IP地址没有对外部公开。
客户端连接的都是139.24.214.22这个IP地址,如果主机故障,则会使网络服务暂时中断,时间越长造成损失越大,
由于没有采用双机热备份技术,考虑自己用Linux脚本来实现简单的浮动IP技术,当主机故障时从机获得139.24.214.22这个IP,暂时替代主机提供服务,当主机恢复时,从机自动释放这个IP。
思路:
利用单个网卡绑定多个IP地址的技术和crontab自动执行技术
为主机的网卡多绑定一个静态IP,如139.24.214.82,这个地址是便于从机判断的,
为从机的网卡多绑定一个动态IP,127.0.0.1,它在主机故障时将会被脚本修改为139.24.214.22
在从机上添加一个脚本 /root/autoFloatIP.sh,使用crontab技术让这个脚本每分钟执行一次,这个脚本的作用是判断主机的地址82能否Ping通,一旦不正常则将让自己的网卡多余的那个IP地址改为139.24.214.22,如果主机恢复,则将这个地址改回为127.0.0.1
步骤
1.为主机添加一个静态IP139.24.214.82,由于这个是静态IP,可以采用在图形化界面中设置此IP并保存的办法,或者在/etc/sysconfig/network-scripts目录里面创建一个名为ifcfg-eth0:1的文件,内容为:
DEVICE=eth0:1
IPADDR=139.24.214.82
NETMASK= 255.255.255.0
ONBOOT= yes
2.在从机上,在/root下建立一个脚本autoFloatIP.sh
用chmod +x autoFloatIP.sh让它可以执行,脚本的内容为
c1=$(ping 139.24.214.82 -c 1|grep Unreachable|wc -l)
if [ $c1 -gt 0 ] ; then
c2=$(ping 139.24.214.82 -c 10|grep Unreachable|wc -l)
if [ $c2 -gt 9 ] ; then
c3=$(ping 139.24.214.22 -c 10|grep Unreachable|wc -l)
if [ $c3 -gt 9 ] ; then
/sbin/ifconfig eth0:1 139.24.214.22 netmask 255.255.254.0
echo "float ip to 22"
fi
fi
echo "can not connect"
else
c4=$(/sbin/ifconfig|grep 139.24.214.22|wc -l)
if [ $c4 -gt 0 ] ; then
/sbin/ifconfig eth0:2 127.0.0.1 netmask 255.255.254.0
echo "reset ip"
fi
echo "connection is ok"
fi
其中关键的命令为
/sbin/ifconfig eth0:1 139.24.214.22 netmask 255.255.254.0
/sbin/ifconfig eth0:2 127.0.0.1 netmask 255.255.254.0
用这个方法来动态修改IP,动态IP在电脑重启会消失
3从机上建立crontab
用crontab -e命令
让后加上这样的一行并保存
* * * * * /root/autoFloatIP.sh > /dev/null 2>&1
小提示
在测试时,你可以先将这句话改为 * * * * * /root/autoFloatIP.sh
这样你可以用mutt收到很多邮件,用户跟踪脚本执行情况
原文:
http://www.360doc.com/content/11/0823/18/5907545_142730623.shtml
有两台Linux服务器,其中一台主机(IP:139.24.214.22)对外提供了一定的网络服务,另一台从机(IP:139.24.214.24)能提供相同的服务,但IP地址没有对外部公开。
客户端连接的都是139.24.214.22这个IP地址,如果主机故障,则会使网络服务暂时中断,时间越长造成损失越大,
由于没有采用双机热备份技术,考虑自己用Linux脚本来实现简单的浮动IP技术,当主机故障时从机获得139.24.214.22这个IP,暂时替代主机提供服务,当主机恢复时,从机自动释放这个IP。
思路:
利用单个网卡绑定多个IP地址的技术和crontab自动执行技术
为主机的网卡多绑定一个静态IP,如139.24.214.82,这个地址是便于从机判断的,
为从机的网卡多绑定一个动态IP,127.0.0.1,它在主机故障时将会被脚本修改为139.24.214.22
在从机上添加一个脚本 /root/autoFloatIP.sh,使用crontab技术让这个脚本每分钟执行一次,这个脚本的作用是判断主机的地址82能否Ping通,一旦不正常则将让自己的网卡多余的那个IP地址改为139.24.214.22,如果主机恢复,则将这个地址改回为127.0.0.1
步骤
1.为主机添加一个静态IP139.24.214.82,由于这个是静态IP,可以采用在图形化界面中设置此IP并保存的办法,或者在/etc/sysconfig/network-scripts目录里面创建一个名为ifcfg-eth0:1的文件,内容为:
DEVICE=eth0:1
IPADDR=139.24.214.82
NETMASK= 255.255.255.0
ONBOOT= yes
2.在从机上,在/root下建立一个脚本autoFloatIP.sh
用chmod +x autoFloatIP.sh让它可以执行,脚本的内容为
c1=$(ping 139.24.214.82 -c 1|grep Unreachable|wc -l)
if [ $c1 -gt 0 ] ; then
c2=$(ping 139.24.214.82 -c 10|grep Unreachable|wc -l)
if [ $c2 -gt 9 ] ; then
c3=$(ping 139.24.214.22 -c 10|grep Unreachable|wc -l)
if [ $c3 -gt 9 ] ; then
/sbin/ifconfig eth0:1 139.24.214.22 netmask 255.255.254.0
echo "float ip to 22"
fi
fi
echo "can not connect"
else
c4=$(/sbin/ifconfig|grep 139.24.214.22|wc -l)
if [ $c4 -gt 0 ] ; then
/sbin/ifconfig eth0:2 127.0.0.1 netmask 255.255.254.0
echo "reset ip"
fi
echo "connection is ok"
fi
其中关键的命令为
/sbin/ifconfig eth0:1 139.24.214.22 netmask 255.255.254.0
/sbin/ifconfig eth0:2 127.0.0.1 netmask 255.255.254.0
用这个方法来动态修改IP,动态IP在电脑重启会消失
3从机上建立crontab
用crontab -e命令
让后加上这样的一行并保存
* * * * * /root/autoFloatIP.sh > /dev/null 2>&1
小提示
在测试时,你可以先将这句话改为 * * * * * /root/autoFloatIP.sh
这样你可以用mutt收到很多邮件,用户跟踪脚本执行情况
相关文章推荐
- 正式版使用说明
- MRC
- 大型网站系统架构演化之路
- Hibernate 报错:this project is not a myeclipse hibernate project . assuming hibernate 3 cap
- Uva - 439 - Knight Moves
- 如何实现企业应用部署自动化
- 天声人語 20150619
- Uva - 439 - Knight Moves
- 几种数据存储方式
- XE8 update1发布了
- [转载] 【每周推荐阅读】C-Store:列式存储数据库
- JavaScript中数据结构与算法(二):队列
- 令Apache中沉睡的无用进程自动退出的方法
- 汽车省油办法
- 900
- 记录下window 命令行下设置IP地址命令
- GIS可视化——属性图
- [转载] 每周推荐阅读 BFQ:实现IO的隔离共享与高吞吐访问
- C#中Switch的简单用法
- Visual studio 2008/2010 MFC程序Menu、Toolbar字体模糊偏小解决办法