设为首页 收藏本站
查看: 867|回复: 0

[经验分享] Keepalive VIP 故障

[复制链接]

尚未签到

发表于 2017-7-8 20:17:54 | 显示全部楼层 |阅读模式
  
前端环境如下:



              Nginx + Keepalived ( MASTER ) --> node * 12
|
|
Cisco ASA --> VIP 1.18
|
|
Nginx + Keepalived ( BACKUP )
  
问题描述:
  客户端访问域名指向 Cisco ASA 外网端口,通过 NAT 地址转换到内网的 VIP 1.18,到达 Nginx 负载均衡器,之后将请求转向节点服务器。
  故障时,客户端打开页面直接返回失败。
  解决方法:
  1、通过 Zabbix 监控发现 Cisco ASA 的外网接口流量正常。说明域名指向没有问题,请求已经到达防火墙。
  2、登录防火墙查看地址映射表,发现地址映射正常。ping 1.18 也没有问题。
  3、登录 Nginx 分发器,查看 VIP 处于绑定状态、Keepalived 处于 MASTER 状态、Nginx 服务处于运行状态。curl -I VIP 返回 200。
  4、登录 Nginx BACKUP,发现处于 BACKUP 状态,也没有绑定 VIP。
  5、实在没办法了,重启 Keepalived 之后发现服务正常。客户端访问无异常、故障恢复。
  6、过了大概 5 小时左右,故障重现、一切如故。依然重启解决。( 03:20 )
  7、又过了大概 5 小时左右,故障重现、一切如故。依然重启解决。( 08:20 )
  8、经过各种查日志、设想、推理、google 后依然没有头绪,开始启用临时方案。
  # 检测负载均衡器访问日志,如果前一分钟访问总数少于 500 条,则自动重启 Keepalived 记入 log、发邮件通知运维工程师。



#!/bin/bash
# Check Nginx access.log, Per minute is less than 500 restart Keepalived
# Wang 2016/09/09
dtime=`date -d '1 minute ago' +%Y:%H:%M`
num=`grep $dtime /data/logs/nginx/access.log | wc -l`
email=('xxxxxxx@qq.com' 'xxxxxxx@139.com' 'xxxxxxxx@qq.com')
send_mail() {
for addr in ${email[@]};do
echo "$body" | /bin/mail -s "$subject" -r NGMA $addr
done
}
if [ $num -lt 500 ];then
body='Nginx access per minute is less than 500.'
echo `date +%F` $dtime $num >> re.log
/etc/init.d/keepalived restart
if [ $? -eq 0 ];then
subject='S-Keepalived Restart'
send_mail $body $subject
else
subject='F-Keepalived Restart'
send_mail $body $subject
fi
fi
# End
  9、换换脑子继续排查故障。
  shlle > ansible all-host -m shell -a 'ip addr | grep 10.10.1.18',发现问题了,除了 Nginx MASTER 绑定了 VIP 后,还有三台机器也绑定了 VIP。
  # 绑定 VIP 有三种情况:1、手动采用命令绑定 2、当作 LVS 节点服务器时,执行脚本绑定 3、当作 Keepalived MASTER 是程序绑定
# 目前这三台机器都不属于这三种情况,异常!



shell > ip -f inet addr delete 10.10.1.18/32 dev lo  # 从 lo 口删除 VIP 1.18
shell > ip -o -f inet addr show            # 再次查看,发现 VIP 已经删除
shell > /etc/init.d/keepalived restart     # 重启发现,其余机器没有再次绑定 VIP
  10、进一步确认问题。
  # 再次查看这三台服务器的流量图,发现其中有一台 1.10 的机器,在故障时间段的流量有一个小突发,应该是该机接管了 1.18,但又没有 WEB 服务,导致故障。
  # 危机解除,故障之日至今14天,没有再次发生该故障。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-391767-1-1.html 上篇帖子: python net-snmp使用 下篇帖子: Python黑帽编程 3.5 DTP攻击
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表