针对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
- /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
/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
/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
/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:
- /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
/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切换脚本
- #!/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
#!/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
- #!/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
#!/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服务器容灾自动切换方案相关推荐
- ZEGO 最后一公里网络传输的容灾及优化方案
作为运维,你是否遇到过一些用户域名解析异常,你是否又遇到过某些区域云商加速节点异常导致业务不可用,此时的你一脸茫然,不知所措?作为运维,你是否被最后一公里问题搞得焦头烂额? 那么今天我们就来探讨一下最 ...
- 宁波市第九医院采购服务器容灾设备项目
一.项目编号:NBITC-20173402G 二.项目概况: 子包 招标货物名称 数量 预算 主要技术规格 一 服务器容灾设备 1批 150万元 详见招标文件第二章招标需求 一.设备采购需求 序号 ...
- oracle异地容灾备份 英文6,异地容灾备份的方案.doc
异地容灾备份的方案 PAGE PAGE 4 异地容灾 数据备份解决方案 BakBone NetVault 2006-3 目 录 TOC \o "1-3" \h \z \u HYPE ...
- 第一讲:双活容灾技术和方案概述
容灾建设在我国已有十多年的历史了,尤其是2007年发布国标GB/T20988-2007<信息系统灾难恢复规范>后,各行各业对容灾建设都非常重视,各种新的容灾技术和产品也得到了快速的发展和应 ...
- cisco 双ISP线路接入 链路自动切换方案
最近接到的一个项目,客户总部在惠州,分部在香港,在香港分部设有ERP服务器与邮件服务器,总部出口为铁通10M光纤与网通1M DDN 专线(新增),原总部是用netscreen 防火墙与香港的pix 5 ...
- cisco 双ISP线路接入,链路自动切换方案
最近接到的一个项目,客户总部在惠州,分部在香港,在香港分部设有ERP服务器与邮件服务器,总部出口为铁通10M光纤与网通1M DDN 专线(新增),原总部是用netscreen 防火墙与香港的pix 5 ...
- mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案
前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用.更安全.后来又经过思考,对脚本中一些条件和行为做了些改变.经过几次修 ...
- ERP容灾备份维护工作有哪些?服务器容灾备份
ERP维护工作有哪些?这是公司信息化专员工作职责: 信息规划 1.参与 公司信息化系统总体构架,建立健全公司信息化各项管理制度和标准业务流程,组织公司各业务部门不断进行业务流程的梳理.优化和创新,推动 ...
- Redis Sentinel主从复制自动切换方案
一.准备环境 #配置环境: Redis Sentinel:192.68.40.16:26379 Redis server主:192.168.40.17:6379 Redis server从:192.1 ...
最新文章
- 【组队学习】【29期】2. 计算机视觉
- html怎么把图片作为背景_抖音背景图片怎么弄,抖音背景图片引导关注
- android中字符串转换成整型
- C语言 · 8皇后问题
- 使用maven的profile区分本地环境和线上环境
- mysql not in 多列,MySQL中的多列外键?
- 创建优秀团队文化的四大要点
- 关系型数据库的隔离级别 读一致性
- 仅需1分钟,让你的电脑变无线路由器
- 模式识别 - 名词解释整理
- ROI和widthStep
- 基于STM32的双向DC-DC变换器(论文+原理图+PCB+源码)
- FOXIT PDF EDITOR工具分割PDF
- 记python opencv的一次恶搞
- 疯狂创客圈 JAVA 高并发 总目录
- android 活动生命,Android 活动生命周期
- 【油猴脚本】Hypothesis导出为markdown文件
- 怎么让计算机休眠的时候不断网,Windows10系统如何让电脑睡眠状态也不断网?
- SpringBoot+Vue实现前后端分离教学评价系统
- 微信小程序项目从app.js中获取数据
热门文章
- SQL Server 2005 查询处理器未能为执行并行查询启动必要的线程资源。
- 超时流式处理 - 没有消息流入的数据异常监控
- Android 多线程下载 显示进度 速度
- How to resolve unassigned shards in Elasticsearch——写得非常好
- Zookeeper源码编译为Eclipse工程(转)
- 按树型显示BOM的结构
- 如何在Eclipse中查看JDK以及JAVA框架的源码(转载)
- C++中定义对象的语法,带括号与不带括号有什么区别?
- 面试官:说说Innodb中LRU怎么做的?
- ICO流程,casestudy