Keepalive VIP 故障
前端环境如下:
Nginx + Keepalived ( MASTER ) --> node *
|
|
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 restart Keepalived
# Wang // 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 ];then
body='Nginx access per minute is less than 500.'
echo `date +%F` $dtime $num >> re.log
/etc/init.d/keepalived restart
if [ $? -eq ];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/ 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天,没有再次发生该故障。
Keepalive VIP 故障的更多相关文章
- MYSQL + MHA +keepalive + VIP安装配置(二)--MHA的配置
一.总概 1.MHA介绍 MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步). MH ...
- Redis高可用架构—Keepalive+VIP
最近整理一下Redis高可用架构的文档,也准备分享出来,虽然这些架构也不是很复杂.Redis的高可用方案目前主要尝试过5种方式,其中2种方式已经在线上使用. 1)Redis Master-Slave ...
- 2Nginx+keepalive+2tomcat 故障转移
根据真实生产环境 总结. 硬件:共计2台Linux服务器 76和77 每台服务器都安装 Nginx Keepalive Tomcat80作为虚拟ip,负责对外连接. 78和79是两台mys ...
- MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置
一.概述 keepalived介绍:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除 ...
- 【转】Keepalived无法绑定VIP故障排查经历
一 故障描述 我在台湾合作方给定的两台虚拟机上部署HAProxy+Keepalived负载均衡高可用方案.在配置完Keepalived后,重新启动Keepalived,Keepalived没有绑定VI ...
- MYSQL + MHA +keepalive + VIP安装配置(一)--MYSQL安装配置
一.总概: 本文介绍了MySQL高可用性的实现方案MHA,MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,不管是MySQL主服务器,还是MySQL从服务器,都要安装Nod ...
- Nginx+keepalived双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- Nginx+Tomcat+Keepalived+Memcache 负载均衡动静分离技术
一.概述 Nginx 作负载均衡器的优点许多,简单概括为: ①实现了可弹性化的架构,在压力增大的时候可以临时添加Tomcat服务器添加到这个架构里面去; ②upstream具有负载均衡能力,可以自动判 ...
- Keepalived+MySQL双主
一.Keepalived+MySQL Replication的应用场景 MySQL的高可用方案有cluster,MMM,MHA等,这些高可用方案都要三台服务器以上,成本有点高,今天介绍一个低成本高可用 ...
随机推荐
- win10/ubuntu双系统卸载删除ubuntu系统
1.重启进入boot-设置windows启动项为首选项. 2.删除EFI中ubuntu引导启动项: a.将EFI分区挂载到M盘->(管理员权限)命令行输入:mountvol M: /s b.进入 ...
- 关于上架AppStore最后一步的“出口合规信息”、“内容版权”、“广告标识符”的选择(转)
这里只当作记录:http://blog.csdn.net/ashimar_a/article/details/51745675
- windows中查看端口被什么应用程序占用并删除
windows中查看端口的命令是netstat,具体用法如下: 查看端口信息时可以使用如下命令: netstat -ano 运行结果如下: 当前我的本地13067端口被占用,使用命令如下: c:\&g ...
- flask第十四篇——重定向
我们都知道京东的url是www.jd.com,但是当你输入www.jingdong.com时候,你会发现地址自动跳转到了www.jd.com,这种技术手段就叫做重定向. 重定向分为永久重定向和临时重定 ...
- [转]50个很棒的Python模块
转自:http://www.cnblogs.com/foxhengxing/archive/2011/07/29/2120897.html Python具有强大的扩展能力,以下列出了50个很棒的Pyt ...
- 相对导入中Attempted relative import in non-package问题
这一篇应该是解释的比较清楚: http://stackoverflow.com/questions/14664313/attempted-relative-import-in-non-package- ...
- Junit+ant+JaCoCo集成使用
接上文,本文主要介绍Junit+ant+JaCoCo集成使用 1.工具的下载上传 需要的工具有: apache-ant-1.10.5-bin.tarapache-tomcat-8.0.50.tarja ...
- PHP远程连接mysql
http://blog.chinaunix.net/uid-23215128-id-2951624.html # mysql -urootmysql> use mysql; Database c ...
- 写动态库时遇到了symbol lookup error问题
之前写TLPI上的代码一直是手动进行错误处理,感觉代码冗余量很大,最后还是决定使用书上的tlph_hdr.h,顺便回顾下动态库的创建/使用. 参考很久之前的一篇博客 linux上静态库和动态库的编译和 ...
- 学习 FPGA之前的基础知识
在学习一门技术之前往往应该从它的编程语言入手,比如学习单片机时,往往从汇编或者C语言入门.所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的.但小编认为,若能先结合& ...