RabbitMQ-无法消费


一、现网问题描述

1.理想情况

现网mq倒换演练,即关闭rabbitmq主,此时keepalived的检测脚本检查到rabbitmq服务异常,触发脚本关闭主服务的keepalived,那么keepalived的虚拟ip就会绑定到从服务器上,继续使用rabbitmq从节点。

2.实际情况

消息队列无法被消费,必须重启应用才能正常消费

二、现网应用包参考

rabbitmq3.6.6
rabbitmq3.6.6创建队列脚本


三、现网问题复现

1.客户操作

image

2.问题时间线

a、凌晨客户倒换演练的操作
1、在1机上systemctl stop rabbitmq-server
reboot
重启后 systemctl status rabbitmq-server
发现mq没有启动
然后通过 systemctl list-unit-files | grep mq 确认mq已经设置了开始自启
保险起见 执行 systemctl enable rabbitmq-server
再重启一次 reboot
systemctl status rabbitmq-server 确认了mq已经启动

2、在2机 systemctl stop rabbitmq-server
reboot
重启后 systemctl status rabbitmq-server
发现mq没有启动
然后通过 systemctl list-unit-files | grep mq 发现mq没有设置开始自启
执行 systemctl enable rabbitmq-server
再重启一次 reboot
systemctl status rabbitmq-server 确认了mq已经启动

b、上午的处理操作
1、在2机上ps -ef | grep mq
kill 掉进程
再执行 systemctl stop rabbitmq-server
systemctl disabled rabbitmq-server
最后执行 rabbitmq-server -detached

2、1机上执行 systemctl restart rabbitmq-server

3.尝试复现问题

1)正常情况
主mq正常消费消息队列

2)异常情况-主mq服务异常
此时keepalived每15s检查主mq服务,发现主mq异常,停止keepalived服务器,keepalived自动绑定到从服务器上,此时从mq继续正常消费消息队列

3)异常情况-主keepalived异常
同情况2,直接自动绑定到从服务器上

4)异常情况-从mq或keepalived异常
不影响正常主mq消费

5)异常情况-mq倒换演练-重启主服务器
重启操作后(即手动模拟重启,先关机shutdown -h now,再开机)
--关机后的主服务器
keepalived的vip是否已飘到从服务器上--成功飘到从服务器
rabbitmq的主集群是否挂掉--挂掉,从mq接管服务
是否能够正常消费消息队列--从mq正常消费
--开机后的主服务器
keepalived 关闭状态
rabbitmq 关闭状态,使用命令rabbitmq-server -detached即可启动主集群
==>仍然能正常生产和消费消息队列

四、现网问题处理

1.分析现网问题

在虚拟机模拟现网环境,重启服务器操作(mq倒换演练)不会复现Rabbitmq无法消费情况;是否是因为使用错误命令/直接杀掉进程导致消息队列阻塞,无从考证

2.解决步骤

  • 与客户确认,由我方提供mq倒换演练具体操作方案
  • 编写mq倒换演练具体操作方案
  • 提供QA部门审核
  • 测试环境执行倒换方案,检查是否有效
  • 确认时间,重新在现网执行倒换演练

参考:
RabbitMQ集群故障恢复详解


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM