一直以来都是用nginx的upstream模块做网站最前端的负载均衡,为了防止nginx本身宕机导致网站不能访问,通常都会做两套nginx反向代理,然后用keepalive之类的软件提供VIP。

常见的环境是nginx主节点和从节点各有一个公网IP,一个私有IP,VIP地址也使用公网IP来提供,正常情况下VIP只会在nginx主节点上工作,只有主节点宕机或者网络不可达等情况下,VIP才会漂移到nginx从节点上。如果keepalive配置了非抢占模式,则主节点恢复后,VIP也不会漂移会主节点,而是继续在从节工作。这种配置要求机房网络不做mac地址绑定。

最近做的两套培训系统测试情况如下:

系统一:主从节点做双网卡绑定,都只有一个私有IP,VIP也为私有IP,通过防火墙的NAT转发用户的访问请求。主节点宕机后,VIP可以漂移至从节点,但用户无法访问网站,telnet防火墙公网IP的80端口提示无法连接。

系统二:主从节点各有两张网卡,分别配置一个公网IP和一个私有IP。VIP地址也使用公网IP来提供。

主节点宕机后,VIP可以漂移至从节点,但用户无法ping通VIP,自然网站也就打不开。

于是分别对这两种情况进行排查:

系统二:属于比较常见的配置方案。VIP漂移后无法ping通,第一反应询问机房工作人员,是否相应的设备做了mac地址绑定。得知无绑定策略后继续排查。

发现配置net.ipv4.ip_nonlocal_bind = 1 参数并使其生效后重新测试正常。

系统一:情况有点特殊,按系统二的解决方法尝试无果后,怀疑端口路由器映射上出现问题。于是继续测试VIP漂移,发现VIP漂移到从节点后,防火墙上的arp表中vip对应的mac地址依旧是主节点网卡的mac地址,原来防火墙才是罪魁祸首,坑爹的货。机房使用的防火墙型号华为Quidway Eudemon1000E,据说默认配置下,这个arp地址表自动刷新需要20分钟!

好吧!于是用下面的命名手工刷新后,万事大吉,网站访问也很顺畅,比较郁闷的是当主节点重新抢占VIP后,依然需要手工刷新下,否则防火墙还是把请求转给从节点响应。

# arping -I 网卡地址 -c 3 -s VIP地址 网关地址

后记:

要彻底解决系统一的问题,可以从两方面去着手,首先是考虑去调整防火墙的arp表的自动刷新时间;其次是考虑在从节点上部署一个无限循环的脚本,时时去检测是否抢占到了VIP,若抢占成功,则运行前面的刷新命令,命令成功运行后退出脚本,同时可以用nagios监控该脚本,了解最新的主从切换情况。切记,循环运行一次接受后sleep 1秒,否则会死机的哦!

如果在主节点上也部署类似的脚本,则会对网络带来负担,因而主节点恢复后的刷新手工运行下就好了,如果忘记运行了,从节点依然可以工作,无伤大雅!

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

ylw6006

谈谈VIP漂移那点破事相关推荐

  1. 团队管理那点破事!OKR绩效、核心人才、面试、技术分享、研发流程....

    今天来聊聊团队管理,可能你现在还是一线开发,没有带团队,感觉这个话题与你无关,其实不然. 程序员的职业生涯曲折,技术更新迭代快,走技术深度,走架构师路线,势必要付出常人的时间和精力.而管理则可以更好的 ...

  2. 采用 redis主从 + 哨兵(sentinel) + vip漂移搭建一套redis高可用集群

    一.单个实例 当系统中只有一台redis运行时,一旦该redis挂了,会导致整个系统无法运行. 单个实例 二.备份 由于单台redis出现单点故障,就会导致整个系统不可用,所以想到的办法自然就是备份( ...

  3. 关于Android蓝牙串口通信那点破事

    Android蓝牙串口通讯 闲着无聊玩起了Android蓝牙模块与单片机蓝牙模块的通信,简单思路就是要手机通过蓝牙发送控制指令给单片机,并作简单的控制应用.单片机的蓝牙模块连接与程序暂且略过,此文主要 ...

  4. 很好的学习资料-详细介绍SVM-来自matlab论坛-【关于SVM的那点破事】.mht

    上网查阅资料,在matlab论坛发现了一个好长好长的好帖子,推荐给想要踏踏实实研究svm的初学者. 帖子优点: 1,详细.例如:matlab mex的设置问题,详细介绍了 mex -setup 各个选 ...

  5. [Android开发那点破事]解决android.os.NetworkOnMainThreadException

    昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时 ...

  6. 【Android开发那点破事】打开APP加载页面实现

    今天的破事呢就说说APP加载页面的实现.一般情况下,当APP打开的时候,我们需要做很多事情,比如检查网络连接啊,初始化一些配置啊等等.我们可以让这些事情在APP完全打开之前做完,然后呢在打开的过程中显 ...

  7. 【Android开发那点破事】解决android.os.NetworkOnMainThreadException

    昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时 ...

  8. 娃儿一周的“智能国际象棋”使用体验,最后谈谈激发热情这件事

    这个智能棋盘,娃娃摆弄了一周,下完学就下上几盘,一直追的动画片都不看了,做完老师布置的家庭作业,就在棋盘上专研,身为老父亲的我啊,可是太欣慰了! 晒单回顾: 费米L6智能棋盘(国际象棋)开机试玩体验h ...

  9. MHA编写实现VIP漂移

    1.首先编写VIP漂移脚本 vi /masterha/app1/master_ip_failover #!/usr/bin/env perl use strict; use warnings FATA ...

  10. oracle3节点漂移,10.2.0.3 VIP 漂移问题

    问题描述:3节点的Oracle 10.2.0.3版本RAC Oracle Patch  merge6平台上 主机P570,操作系统AIX 5*** 没有压力状态下,拔掉节点node1的2根public ...

最新文章

  1. 青少年电子信息智能创新大赛 赛项说明(Python编程创新挑战赛)
  2. 改变linux终端颜色
  3. 数据库表-权限表应用
  4. BERT, ELMo, GPT-2: 这些上下文相关的表示到底有多上下文化?
  5. 单点登录之SessionExpireFilter重置session有效期
  6. html笔记(一)html4+css2.0、css基础和属性、盒模型
  7. 1^2+2^2+……+n^2的公式证明
  8. java collectiongroup 类_Java中的collection集合类型总结
  9. 【三维深度学习】Sparse Convolutional Network 基于稀疏采样不变性的深度稠密重建
  10. Python正则表达式案例一则:单词非两端字符改为小写
  11. 深圳行:1207-Day 1 - 到达
  12. DBSCAN聚类(code)
  13. tf代码之tf.nn.conv2d_transpose
  14. iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
  15. BlackBerry 9520上结合139邮箱实现Gmail邮件的短信通知
  16. stm32+esp8266+app inventor简单小制作
  17. php在线拍照代码,JQ+PHP实现浏览器webcam摄像头在线定时自动拍照存储照片
  18. css3实现数字滚动效果,JS+CSS实现滚动数字时钟效果
  19. Word中删除全部页眉页脚的方法
  20. 剖析数据结构线性表,代码实现,分文件编写

热门文章

  1. python实现简单爬虫功能
  2. 移动应用UI设计模式pdf
  3. 厚积薄发 - 关于runtime的几个问题
  4. BZOJ 2882 后缀数组的傻逼实现
  5. 【Spring实战】—— 1 入门讲解
  6. linux service和daemon
  7. 机器学习基础:交叉熵损失(Machine Learning Fundamentals: Cross Entropy Loss)
  8. 教你一招,自己就能检测mac
  9. Android内存优化
  10. WebLogic简单的备份和恢复