|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 690|回復: 0
打印 上一主題 下一主題

在liunx双机下自己动手实现浮动IP技术

[複製鏈接]

1053

主題

45

好友

6158

積分

教授

Rank: 8Rank: 8

  • TA的每日心情

    5 分鐘前
  • 簽到天數: 2510 天

    [LV.Master]伴壇終老

    推廣值
    0
    貢獻值
    1205
    金錢
    4784
    威望
    6158
    主題
    1053

    回文勇士 文明人 中學生 高中生 文章勇士 附件高人 簽到勳章 簽到達人 附件達人

    樓主
    發表於 2013-2-5 19:55:15

    有两台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收到很多邮件,用户跟踪脚本执行情况


    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-11-1 12:39 , Processed in 0.046635 second(s), 17 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部