在上一章中,我们介绍了如何在一台Windows机器上创建一个RabbitMQ集群。创建好以后自然就是如何来管理和使用了。这一章,我们将介绍如何对RabbitMQ集群进行监控,并部署集群队列。
1. 如何安装RabbitMQ的监控插件。
正如我们所知道的那样,在一台机器上部署应用最痛苦的莫过于对于端口的修改了。RabbitMQ的rabbitmq_management插件,需要先enable一下才可以使用。在RabbitMQ的包中提供了rabbitmq-plugins.bat,来管理本机RabbitMQ实例的plugin组件。这里需要对该脚本做一点修改,如下:
a. 首先,需要在该脚本中设置一下环境参数,以rabbitmq-plugins-cluster1.bat为例
set APPDATA="D:\09-Opensource\rabbitmq\workspace"
set RABBITMQ_CONFIG_FILE="D:\09-Opensource\rabbitmq\workspace\config\1\rabbitmq"
b. 在脚本中指定对应的RabbitMQ实例名
set RABBITMQ_NODENAME=rabbit1@Cluster-Node1
这样就可以使用rabbitmq-plugins-cluster1.bat来管理Node1了。Node2同理。
c. 修改Rabbitmq的配置文件,修改rabbitmq_management的默认监听端口
rabbitmq_management的默认监听端口是15672。 因为在一台机器上配置集群,就需要修改默认端口。这里在Node对应的rabbitmq.config文件中增加配置:{listener, [{port, 8001}]}.
d.启用rabbitmq_management插件
使用命令rabbitmq-plugins-cluster1.bat enable rabbitmq_management,重起Rabbitmq即可启用。(注意:如果在步骤2之前启用了该插件,并重起Rabbitmq的话,有很大的可能会导致Rabbitmq启动不了。)
e. 通过Web登陆Rabbitmq management
登陆localhost:8001(localhost:8002), 用户名/密码 guest/guest。就可以登陆management。这里需要注意的是,一个Node的management就可以管理cluster的其它节点了。
2. 如何在Rabbitmq集群上部署队列
在Rabbitmq上建立队列的核心是ha。因为虽然Rabbitmq已经建立了集群,但是在其上部署的队列默认只是建立在一个Node实例上的。这种情况下,如果从集群中的其它队列尝试获取该队列的信息,那是ok的。但这种情况下并没有实现负载均衡,所有的消息均由消息队列所在的Node传输给访问Node,然后再给客户端;如果队列所在的Node宕机了,那么恭喜你,没法玩了~~。除非该Node重新启动,否则该队列压根就无法被访问到了。这种情况就是常说的伪HA。
为了让我们的HA真正可以实现高可用和负载均衡,这里需要实现不同Node节点间的队列同步。配置也很简单,在控制界面中Admin->Policy->HA mode即可。可以选择针对所有的队列,也可以选择针对所有的exchange或者两者都针对。还可以根据情况做一个过滤(pattern)。一旦设置了该policy,那么RabbitMQ中的资源就彻底实现了高可用了。(这里还需要完善一下如何用脚本建立)
一旦资源在多个RabbitMQ节点中实现了共享(而且是同步式的),那么一个消息从任意一个节点中获取都没有问题啦,再加上Connection时可以配置多个Address地址,这样随便哪个Node宕机了都不会影响到最终的应用了,nice!!
但是这里还需要注意一点。在实际测试中,当一个节点宕机后再起来,如果原来集群中的队列中还保存有消息的话,会有一个等待Synchronized的人工操作。但是据我观察,实际的数据这里已经都同步了啊。(这里需要研究一下,看看后续是否可以改为自动)。
不管怎么样,这样的一个集群环境加上Client端的muti-address配置,让我们的程序/架构变的异常健壮了,这无疑是我们都愿意看到的。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。