思路:
当服务器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
/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、刷新网关路由

Shell代码  
  1. /sbin/arping -i eth0 -s 192.168.190.88  192.168.190.254 > /dev/null 2>&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
/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

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
/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

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. vip=192.168.190.88
  9. gateWay=192.168.190.254
  10. netMask=255.255.255.0
  11. bcast=192.168.190.255
  12. function_bind_vip1(){
  13. /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} up
  14. /sbin/route add -host ${vip} dev eth0:1
  15. }
  16. function_remove_vip1(){
  17. /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask down
  18. }
  19. function_vip_arping1(){
  20. /sbin/arping -i eth0 -s ${vip} ${gateWay} > /dev/null 2>&1
  21. }
  22. function_restart_nginx(){
  23. /web/webserver/nginx/sbin/nginx -s reload
  24. }
  25. bind_time_vip="N"
  26. while true
  27. do
  28. httpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.168.190.199`
  29. if [ x${httpCode_rip1} == "x200" ];
  30. then
  31. if [ ${bind_time_vip} == "N" ];
  32. then
  33. function_bind_vip1
  34. function_vip_arping1
  35. bind_time_vip="Y"
  36. fi
  37. function_vip_arping1
  38. else
  39. if [ ${bind_time_vip} == "Y" ]
  40. then
  41. function_remove_vip1
  42. bind_time_vip="N"
  43. fi
  44. fi
  45. sleep 10
  46. done
#!/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.255function_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
dohttpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.168.190.199`if [ x${httpCode_rip1} == "x200" ];thenif [ ${bind_time_vip} == "N" ];thenfunction_bind_vip1function_vip_arping1bind_time_vip="Y"fifunction_vip_arping1elseif [ ${bind_time_vip} == "Y" ]thenfunction_remove_vip1bind_time_vip="N"fifisleep 10
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. vip=192.168.190.88
  9. gateWay=192.168.190.254
  10. netMask=255.255.255.0
  11. bcast=192.168.190.255
  12. function_bind_vip1(){
  13. /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} up
  14. /sbin/route add -host ${vip} dev eth0:1
  15. }
  16. function_remove_vip1(){
  17. /sbin/ifconfig eth0:1 ${vip} broadcast ${bcast}  netmask ${netMask} down
  18. }
  19. function_vip_arping1(){
  20. /sbin/arping -i eth0 -s ${vip} ${gateWay} > /dev/null 2>&1
  21. }
  22. function_restart_nginx(){
  23. /web/webserver/nginx/sbin/nginx -s reload
  24. }
  25. bind_time_vip="N"
  26. while true
  27. do
  28. httpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.                                                168.190.199`
  29. if [ x${httpCode_rip1} == "x200" ];
  30. then
  31. if [ ${bind_time_vip} == "Y" ];
  32. then
  33. function_remove_vip1
  34. bind_time_vip="N"
  35. fi
  36. function_vip_arping1
  37. else
  38. if [ ${bind_time_vip} == "N" ]
  39. then
  40. function_bind_vip1
  41. function_vip_arping1
  42. bind_time_vip="Y"
  43. fi
  44. fi
  45. sleep 10
  46. done
#!/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.255function_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
dohttpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.                                                168.190.199`if [ x${httpCode_rip1} == "x200" ];thenif [ ${bind_time_vip} == "Y" ];thenfunction_remove_vip1bind_time_vip="N"fifunction_vip_arping1elseif [ ${bind_time_vip} == "N" ]thenfunction_bind_vip1function_vip_arping1bind_time_vip="Y"fifisleep 10
done

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

转载于:https://blog.51cto.com/myunix/1120659

针对web服务器容灾自动切换方案相关推荐

  1. ZEGO 最后一公里网络传输的容灾及优化方案

    作为运维,你是否遇到过一些用户域名解析异常,你是否又遇到过某些区域云商加速节点异常导致业务不可用,此时的你一脸茫然,不知所措?作为运维,你是否被最后一公里问题搞得焦头烂额? 那么今天我们就来探讨一下最 ...

  2. 宁波市第九医院采购服务器容灾设备项目

    一.项目编号:NBITC-20173402G 二.项目概况: 子包 招标货物名称 数量 预算 主要技术规格 一 服务器容灾设备 1批 150万元 详见招标文件第二章招标需求   一.设备采购需求 序号 ...

  3. oracle异地容灾备份 英文6,异地容灾备份的方案.doc

    异地容灾备份的方案 PAGE PAGE 4 异地容灾 数据备份解决方案 BakBone NetVault 2006-3 目 录 TOC \o "1-3" \h \z \u HYPE ...

  4. 第一讲:双活容灾技术和方案概述

    容灾建设在我国已有十多年的历史了,尤其是2007年发布国标GB/T20988-2007<信息系统灾难恢复规范>后,各行各业对容灾建设都非常重视,各种新的容灾技术和产品也得到了快速的发展和应 ...

  5. cisco 双ISP线路接入 链路自动切换方案

    最近接到的一个项目,客户总部在惠州,分部在香港,在香港分部设有ERP服务器与邮件服务器,总部出口为铁通10M光纤与网通1M DDN 专线(新增),原总部是用netscreen 防火墙与香港的pix 5 ...

  6. cisco 双ISP线路接入,链路自动切换方案

    最近接到的一个项目,客户总部在惠州,分部在香港,在香港分部设有ERP服务器与邮件服务器,总部出口为铁通10M光纤与网通1M DDN 专线(新增),原总部是用netscreen 防火墙与香港的pix 5 ...

  7. mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案

    前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用.更安全.后来又经过思考,对脚本中一些条件和行为做了些改变.经过几次修 ...

  8. ERP容灾备份维护工作有哪些?服务器容灾备份

    ERP维护工作有哪些?这是公司信息化专员工作职责: 信息规划 1.参与 公司信息化系统总体构架,建立健全公司信息化各项管理制度和标准业务流程,组织公司各业务部门不断进行业务流程的梳理.优化和创新,推动 ...

  9. Redis Sentinel主从复制自动切换方案

    一.准备环境 #配置环境: Redis Sentinel:192.68.40.16:26379 Redis server主:192.168.40.17:6379 Redis server从:192.1 ...

最新文章

  1. 【组队学习】【29期】2. 计算机视觉
  2. html怎么把图片作为背景_抖音背景图片怎么弄,抖音背景图片引导关注
  3. android中字符串转换成整型
  4. C语言 · 8皇后问题
  5. 使用maven的profile区分本地环境和线上环境
  6. mysql not in 多列,MySQL中的多列外键?
  7. 创建优秀团队文化的四大要点
  8. 关系型数据库的隔离级别 读一致性
  9. 仅需1分钟,让你的电脑变无线路由器
  10. 模式识别 - 名词解释整理
  11. ROI和widthStep
  12. 基于STM32的双向DC-DC变换器(论文+原理图+PCB+源码)
  13. FOXIT PDF EDITOR工具分割PDF
  14. 记python opencv的一次恶搞
  15. 疯狂创客圈 JAVA 高并发 总目录
  16. android 活动生命,Android 活动生命周期
  17. 【油猴脚本】Hypothesis导出为markdown文件
  18. 怎么让计算机休眠的时候不断网,Windows10系统如何让电脑睡眠状态也不断网?
  19. SpringBoot+Vue实现前后端分离教学评价系统
  20. 微信小程序项目从app.js中获取数据

热门文章

  1. SQL Server 2005 查询处理器未能为执行并行查询启动必要的线程资源。
  2. 超时流式处理 - 没有消息流入的数据异常监控
  3. Android 多线程下载 显示进度 速度
  4. How to resolve unassigned shards in Elasticsearch——写得非常好
  5. Zookeeper源码编译为Eclipse工程(转)
  6. 按树型显示BOM的结构
  7. 如何在Eclipse中查看JDK以及JAVA框架的源码(转载)
  8. C++中定义对象的语法,带括号与不带括号有什么区别?
  9. 面试官:说说Innodb中LRU怎么做的?
  10. ICO流程,casestudy