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

简介:

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

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

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

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

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

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

结构图:

wKiom1lM3piiFMnHAAE-8fryLOM266.png-wh_50

主服务器: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 &



本文转自 2012hjtwyf 51CTO博客,原文链接:http://blog.51cto.com/hujiangtao/1944292,如需转载请自行联系原作者

相关文章
|
1月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
1月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
34 4
|
1月前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
16天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
70 19
Selenium IDE:Web自动化测试的得力助手
|
18天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
121 17
Selenium:强大的 Web 自动化测试工具
|
15天前
|
监控 测试技术 定位技术
HTTP代理IP响应速度测试方案设计与指标体系
随着数字化发展,网络安全、隐私保护及内容访问自由成为核心需求。HTTP代理因其技术优势成为热门选择。本文介绍HTTP代理IP响应速度测试方案,包括基础性能、稳定性、地理位置、实际应用、安全性测试及监控指标,推荐测试工具,并提供测试结果评估标准。
30 2
|
1月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
36 6
|
8天前
|
弹性计算 负载均衡 安全
云端问道-Web应用上云经典架构方案教学
本文介绍了企业业务上云的经典架构设计,涵盖用户业务现状及挑战、阿里云业务托管架构设计、方案选型配置及业务初期低门槛使用等内容。通过详细分析现有架构的问题,提出了高可用、安全、可扩展的解决方案,并提供了按量付费的低成本选项,帮助企业在业务初期顺利上云。
|
1月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
38 4
|
1月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
32 4