针对Web服务器容灾的自动切换方案测试
admin
2023-03-18 10:43:09
0次



我们网站的XX服务随着业务的增长我们需要配置跨IDC容灾情况,为了处理突发事件,避免影响网站的正常访问

自己在网上看了很多处理方法,结合自己的实际情况,我自己也在在局域网的测试服务器上演练了一把。

测试结果表现良好,现在把我在局域网中的部署整理如下:

思路:
当服务器A 发生故障,服务器B可以迅速接管服务器A的任务,不影响用户的正常访问。
当服务器A 故障恢复,服务器A可以马上接管服务器B的任务,服务器B恢复备机状态。

做法:
两台服务器上配置一个虚拟IP地址,主服务器先绑定虚拟ip地址,当发生故障时,备机自动接管虚拟ip地址

刷新网关路由地址。当主机恢复后,备机释放虚拟ip地址,主机再次主动接管虚拟ip地址,刷新网关路由地址

结构图:

针对Web服务器容灾的自动切换方案测试

主服务器:ip 192.168.190.199
备服务器: ip 192.168.190.208

vip:192.168.190.88
gateWay=192.168.190.254
netMask=255.255.255.0
bcast=192.168.190.255

步骤:

1、配置虚拟ip:192.168.190.88 到 www.test.com 绑定虚拟ip

/sbin/ifconfig eth0:1 192.168.190.88 broadcast 192.168.190.255    

netmask 255.255.255.0  up  

/sbin/route add -host 192.168.190.88 dev eth0:1 

2、刷新网关路由

/sbin/arping -i eth0 -s 192.168.190.88  192.168.190.254 > /dev/null 2>&1  


3、当发生故障时,主机192.168.190.199 ,释放虚拟ip192.168.190.88,备机192.168.190.208接管 虚拟ip192.168.190.88

/sbin/ifconfig eth0:1 192.168.190.88  broadcast  192.168.190.255   netmask 255.255.255.0 down          

/sbin/arping -i eth0 -s 192.168.190.88  192.168.190.254 > /dev/null 2>&1  


4、这时 www.test.com 解析到了备机服务器192.168.190.208

5、重启备机web服务器

6、若主机192.168.190.199服务恢复正常,备机192.168.190.208

释放虚拟IP,主机,绑定虚拟IP 192.168.190.88 备机释放虚拟ip:


/sbin/ifconfig eth0:1 192.168.190.88  broadcast  192.168.190.255   netmask 255.255.255.0 down          

/sbin/arping -i eth0 -s 192.168.190.88  192.168.190.254 > /dev/null 2>&1  


7、重启启动主备机web服务

主机192.168.190.199
autoSwitchMain.sh切换脚本


    #!/bin/sh  
    #############################################################  
    #desc:服务器宕机自动切换服务  
    #author:gaozhonghui  
    #mail:toptreegzh@163.com  
    #date:20121101  
    #############################################################  
      
    vip=192.168.190.88  
    gateWay=192.168.190.254  
    netMask=255.255.255.0  
    bcast=192.168.190.255  
      
    function_bind_vip1(){  
    /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} up  
    /sbin/route add -host ${vip} dev eth0:1  
    }  
      
    function_remove_vip1(){  
    /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask down  
    }  
      
    function_vip_arping1(){  
    /sbin/arping -i eth0 -s ${vip} ${gateWay} > /dev/null 2>&1  
    }  
      
    function_restart_nginx(){  
    /web/webserver/nginx/sbin/nginx -s reload  
    }  
      
    bind_time_vip="N"  
      
    while true  
    do  
        httpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.168.190.199`  
          
        if [ x${httpCode_rip1} == "x200" ];  
        then  
            if [ ${bind_time_vip} == "N" ];  
            then  
                function_bind_vip1  
                function_vip_arping1  
                bind_time_vip="Y"  
            fi  
            function_vip_arping1  
        else  
            if [ ${bind_time_vip} == "Y" ]  
            then  
                function_remove_vip1  
                bind_time_vip="N"  
            fi  
        fi  
        sleep 10  
    done 


然后linux 启动守候进程
/usr/bin/nohup /bin/sh  /home/Gzh/shell/ autoSwitchMain.sh   2>&1 > /dev/null &

备机192.168.190.208:
autoSwitchSlave.sh


    #!/bin/sh  
    #############################################################  
    #desc:服务器宕机自动切换服务  
    #author:gaozhonghui  
    #mail:toptreegzh@163.com  
    #date:20121101  
    #############################################################  
      
    vip=192.168.190.88  
    gateWay=192.168.190.254  
    netMask=255.255.255.0  
    bcast=192.168.190.255  
      
    function_bind_vip1(){  
    /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} up  
    /sbin/route add -host ${vip} dev eth0:1  
    }  
      
    function_remove_vip1(){  
    /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} down  
    }  
      
    function_vip_arping1(){  
    /sbin/arping -i eth0 -s ${vip} ${gateWay} > /dev/null 2>&1  
    }  
      
    function_restart_nginx(){  
    /web/webserver/nginx/sbin/nginx -s reload  
    }  
      
    bind_time_vip="N"  
      
    while true  
    do  
            httpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.168.190.199`  
      
            if [ x${httpCode_rip1} == "x200" ];  
            then  
                    if [ ${bind_time_vip} == "Y" ];  
                    then  
                            function_remove_vip1  
                            bind_time_vip="N"  
                    fi  
                    function_vip_arping1  
            else  
                    if [ ${bind_time_vip} == "N" ]  
                    then  
                            function_bind_vip1  
                            function_vip_arping1  
                            bind_time_vip="Y"  
                    fi  
            fi  
      
            sleep 10  
    done 


启动守候进程
/usr/bin/nohup /bin/sh  /home/Gzh/shell/autoSwitchSlave.sh   2>&1 > /dev/null &


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...