6. 较验Rabbit_Cluster集群服务
##前提条件,必须确保有一个Rabbit节点是正常运行的,下面只举一个例。 ##关闭Rabbitmqctl服务节点,基其他节点上查看集群信息 root@rabbit1:~# rabbitmqctl stop
##在Rabbit2节点上查看集群信息
root@rabbit2:~# rabbitmqctl cluster_status
##在Rabbit3节点上查看集群信息
root@rabbit3:~# rabbitmqctl cluster_status
##现在,重新启动Rabbit1节点,并查看集群信息 root@rabbit1:~# rabbitmq-server –detached
##在Rabbit2节点上查看集群信息
root@rabbit2:~# rabbitmqctl cluster_status
##在Rabbit3节点上查看集群信息
root@rabbit3:~# rabbitmqctl cluster_status
由此可见,无论是关闭或恢复的哪个节点,在其他节点查到的集群信息都是不变的,也即某个集群节点出现问题并不影响整体运行。
7. 较验Haproxy+Keepalived主备服务
7.1 首先查看一下Haproxy和Keepalived的进程
Haproxy主节点(Rabbit2服务器)
root@rabbit2:~# ps -ef|grep haproxy|grep -v grep && ps -ef|grep keepalived|grep -v grep
Haproxy备节点(Rabbit3服务器)
主备节点的Haproxy和Keepalived的进程都是正常运行的。
7.2 模拟故障1:主节点Haproxy进程死掉,进程自动恢复
a) Kill掉Haproxy进程
b) 查看日志
tail -f /var/log/keepalived-ha-state.log
/etc/keepalived/scripts/haproxy_check.sh脚本起作用了,发现Haproxy进程挂掉后立刻重启进程。
7.3 模拟故障2:主节点Haproxy进程死掉,进程无法恢复
因为我们的haproxy配置是正确的,所以进程死掉后肯定可以正常启动,但这里我们设法要让其启动不起来,那么,我们来改动一下配置文件。
a) 重命名haproxy配置文件 cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg_bak
b) Kill掉Haproxy进程
Haproxy进程已经死掉了,而且无法正常启动,连着Keepalived的进程也关闭了。 c) 查看日志
tail -f /var/log/keepalived-ha-state.log
d) VIP地址更换(主:Rabbit2——>备:Rabbit3) Rabbit2主节点,可以查看到已经释放VIP地址 tail -f /var/log/syslog
Rabbit3备节点,可以查看到已经获得VIP地址 tail -f /var/log/syslog
至此,故障切换成功。
7.4 模拟故障恢复3:主节点Haproxy恢复正常
a) 重命名haproxy配置文件 cd /etc/haproxy/
mv haproxy.cfg_bak haproxy.cfg service keepalived restart
b) 查看日志
tail -4 /var/log/keepalived-ha-state.log
tail -f /var/log/syslog
VIP地址又切回到主节点进行运行。
至此,《RabbitMQ_Cluster+HA(haproxy+keepalived)热备》服务搭建验证完毕。
如有不足之处,敬请指示,谢谢!
文档参考地址:
http://blog.csdn.net/wudelong0112/article/details/8801725 http://www.rabbitmq.com/clustering.html http://www.rabbitmq.com/ha.html http://eccp.csdb.cn/blog/?p=400 http://blog.csdn.net/jljf_hh/article/details/17381425