针对web服务器容灾自动切换方案

简介:

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

做法: 
两台服务器上配置一个虚拟IP地址,主服务器先绑定虚拟ip地址,当发生故障时,备机自动接管虚拟ip地址,刷新网关路由地址。当主机恢复后,备机释放虚拟ip地址,主机再次主动接管虚拟ip地址,刷新网关路由地址。 

结构图: 
 

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

Shell代码  复制代码  收藏代码
  1. /sbin/ifconfig eth0:1 192.168.190.88 broadcast 192.168.190.255     
  2. netmask 255.255.255.0  up   
  3. /sbin/route add -host 192.168.190.88 dev eth0:1  



2、刷新网关路由 
 

Shell代码  复制代码  收藏代码
  1. /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 
 

Shell代码  复制代码  收藏代码
  1. /sbin/ifconfig eth0:1 192.168.190.88  broadcast  192.168.190.255   netmask 255.255.255.0 down           
  2. /sbin/arping -i eth0 -s 192.168.190.88  192.168.190.254 > /dev/null 2>&1  



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

4、重启备机web服务器 

5、若主机192.168.190.199服务恢复正常,备机192.168.190.208释放虚拟IP,主机 
绑定虚拟IP 192.168.190.88 
备机释放虚拟ip: 
 

Shell代码  复制代码  收藏代码
  1. /sbin/ifconfig eth0:1 192.168.190.88  broadcast  192.168.190.255   netmask 255.255.255.0 down           
  2. /sbin/arping -i eth0 -s 192.168.190.88  192.168.190.254 > /dev/null 2>&1  



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

主机192.168.190.199 
autoSwitchMain.sh切换脚本 
 

Shell代码  复制代码  收藏代码
  1. #!/bin/sh   
  2. #############################################################   
  3. #desc:服务器宕机自动切换服务   
  4. #author:gaozhonghui   
  5. #mail:toptreegzh@163.com   
  6. #date:20121101  
  7. #############################################################   
  8.   
  9. vip=192.168.190.88  
  10. gateWay=192.168.190.254  
  11. netMask=255.255.255.0  
  12. bcast=192.168.190.255  
  13.   
  14. function_bind_vip1(){   
  15. /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} up   
  16. /sbin/route add -host ${vip} dev eth0:1  
  17. }   
  18.   
  19. function_remove_vip1(){   
  20. /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask down   
  21. }   
  22.   
  23. function_vip_arping1(){   
  24. /sbin/arping -i eth0 -s ${vip} ${gateWay} > /dev/null 2>&1  
  25. }   
  26.   
  27. function_restart_nginx(){   
  28. /web/webserver/nginx/sbin/nginx -s reload   
  29. }   
  30.   
  31. bind_time_vip="N"  
  32.   
  33. while true   
  34. do   
  35.     httpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.168.190.199`   
  36.        
  37.     if [ x${httpCode_rip1} == "x200" ];   
  38.     then   
  39.         if [ ${bind_time_vip} == "N" ];   
  40.         then   
  41.             function_bind_vip1   
  42.             function_vip_arping1   
  43.             bind_time_vip="Y"  
  44.         fi   
  45.         function_vip_arping1   
  46.     else   
  47.         if [ ${bind_time_vip} == "Y" ]   
  48.         then   
  49.             function_remove_vip1   
  50.             bind_time_vip="N"  
  51.         fi   
  52.     fi   
  53.     sleep 10  
  54. done  



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

备机192.168.190.208
autoSwitchSlave.sh 
 

Shell代码  复制代码  收藏代码
  1. #!/bin/sh   
  2. #############################################################   
  3. #desc:服务器宕机自动切换服务   
  4. #author:gaozhonghui   
  5. #mail:toptreegzh@163.com   
  6. #date:20121101  
  7. #############################################################   
  8.   
  9. vip=192.168.190.88  
  10. gateWay=192.168.190.254  
  11. netMask=255.255.255.0  
  12. bcast=192.168.190.255  
  13.   
  14. function_bind_vip1(){   
  15. /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} up   
  16. /sbin/route add -host ${vip} dev eth0:1  
  17. }   
  18.   
  19. function_remove_vip1(){   
  20. /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} down   
  21. }   
  22.   
  23. function_vip_arping1(){   
  24. /sbin/arping -i eth0 -s ${vip} ${gateWay} > /dev/null 2>&1  
  25. }   
  26.   
  27. function_restart_nginx(){   
  28. /web/webserver/nginx/sbin/nginx -s reload   
  29. }   
  30.   
  31. bind_time_vip="N"  
  32.   
  33. while true   
  34. do   
  35.         httpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.                                                168.190.199`   
  36.   
  37.         if [ x${httpCode_rip1} == "x200" ];   
  38.         then   
  39.                 if [ ${bind_time_vip} == "Y" ];   
  40.                 then   
  41.                         function_remove_vip1   
  42.                         bind_time_vip="N"  
  43.                 fi   
  44.                 function_vip_arping1   
  45.         else   
  46.                 if [ ${bind_time_vip} == "N" ]   
  47.                 then   
  48.                         function_bind_vip1   
  49.                         function_vip_arping1   
  50.                         bind_time_vip="Y"  
  51.                 fi   
  52.         fi   
  53.   
  54.         sleep 10  
  55. done  



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




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

相关文章
|
28天前
|
存储 Unix Linux
服务器数据恢复—DELL EqualLogic PS6100系列存储简介及发生故障后的处理方案
DELL EqualLogic PS6100系列存储采用虚拟ISCSI SAN阵列,支持VMware、Solaris、Linux、Mac、HP-UX、AIX操作系统,提供全套企业级数据保护和管理功能,具有可扩展性和容错功能。
|
1月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
47 3
|
2月前
|
存储 运维 监控
服务器高效运维管理方案
智能运维作为保障业务连续性和提升系统性能的关键环节,其重要性日益凸显。服务器作为承载各类应用与数据的核心基础设施,其稳定性、安全性和性能直接关系到企业的业务运行效率和用户体验
81 1
|
2月前
|
存储 弹性计算 SDN
企业级 ECS 集群的构建需要综合考虑多个因素,通过不断的比较和对比不同的方案,选择最适合企业自身需求和发展的架构。
【9月更文挑战第5天】在数字化商业环境中,构建企业级ECS(弹性计算服务)集群对提升业务稳定性、扩展性和性能至关重要。本文将比较传统物理服务器与ECS架构,分析云服务商选择(如AWS和阿里云)、实例配置(CPU/内存)、网络架构(SDN vs 传统)及存储方案(本地存储 vs 云存储),帮助企业根据自身需求选出最优方案,实现高效稳定的ECS集群部署。
71 18
|
2月前
|
Web App开发 前端开发 JavaScript
Web前端项目的跨平台桌面客户端打包方案之——CEF框架
Chromium Embedded Framework (CEF) 是一个基于 Google Chromium 项目的开源 Web 浏览器控件,旨在为第三方应用提供嵌入式浏览器支持。CEF 隔离了底层 Chromium 和 Blink 的复杂性,提供了稳定的产品级 API。它支持 Windows、Linux 和 Mac 平台,不仅限于 C/C++ 接口,还支持多种语言。CEF 功能强大,性能优异,广泛应用于桌面端开发,如 QQ、微信、网易云音乐等。CEF 开源且采用 BSD 授权,商业友好,装机量已超 1 亿。此外,GitHub 项目 CefDetector 可帮助检测电脑中使用 CEF
366 3
|
3月前
|
JavaScript 搜索推荐 前端开发
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
82 1
|
3月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
167 0
|
3月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
42 0
|
3月前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
57 0
下一篇
无影云桌面