RabbitMQ集群文档
https://www.rabbitmq.com/clustering.html
描述了一个过程,通过这个过程,您可以为集群部署一个configuration文件,以便在您的rabbitmq节点boot.eg中自动创build一个集群
[{rabbit, [{cluster_nodes, {['rabbit@rabbit1', 'rabbit@rabbit2', 'rabbit@rabbit3'], ram}}]}].
您将这个文件应用于/etc/rabbitmq/rabbitmq.config中的每个节点上,然后在每个节点上启动rabbitmq,并显然会形成一个集群。
这似乎不太好,例如
如果你启动rabbit2,并且rabbit3尚未启动,那么这个服务将不会在rabbit2上启动,因为它正在尝试使用rabbit3创build一个群集。
同样的,如果你只在兔子1上应用configuration,并且已经预先启动了兔子2和兔子3,兔子1将只与兔子2形成一个簇,根据文档(我不明白为什么):
RabbitMQ will try to cluster to each node provided, and stop after it can cluster with one of them.
这似乎工作的唯一方法是如果您应用所有3个节点上的configuration文件,并让他们在同一时间启动。 我正在试图用Ansible来部署这个,它依次创build节点,所以这是行不通的。
我在这里错过了什么?
我也使用Puppet部署RabbitMQ集群,而且实际上并不需要在同一时间启动所有节点。
我通常做的,迄今为止为我工作的是:
。
192.168.1.11 dev-c1n01-rabbitmq.example.com dev-c1n01-rabbitmq 192.168.1.12 dev-c1n02-rabbitmq.example.com dev-c1n02-rabbitmq 192.168.1.13 dev-c1n03-rabbitmq.example.com dev-c1n03-rabbitmq
我们正在群集在一起的节点(因为我不想依靠DNS可用)*部署rabbitmq.config
。
[ {rabbit, [ {cluster_nodes, {['rabbit@dev-c1n01-rabbitmq', 'rabbit@dev-c1n02-rabbitmq', 'rabbit@dev-c1n03-rabbitmq'], disc}}, {cluster_partition_handling, pause_minority}, {disk_free_limit, 2147483648}, {heartbeat, 0}, {tcp_listen_options, [binary, {backlog, 1024}, {nodelay, true}, {keepalive, true} ]}, {vm_memory_high_watermark, 0.6}, {default_user, <<"admin">>}, {default_pass, <<"somedefaultpass">>} ]}, {kernel, [ ]} , {rabbitmq_management, [ {listener, [ {port, 15672} ]} ]} ]. % EOF
要创builderlang cookie,我通常使用http://passwordsgenerator.net/并将其设置为仅创build大写字符的20个string。 然后,把这个string放到/var/lib/rabbitmq/.erlang.cookie中,像这样:
echo -n 'LCQLSHVOPZFHRUXMMAPF' > /var/lib/rabbitmq/.erlang.cookie
这应该适合你。 testing3.2,3.3和3.5版本。
我在这方面取得了一些进展。
这个问题似乎与在rabbitmq.config文件中使用RAM节点而不是磁盘节点有关。 从文档:
RAM节点是高级用例; 设置你的第一个群集时,你应该不使用它们。 您应该有足够的光盘节点来处理您的冗余要求,然后在需要时添加额外的RAM节点进行缩放。
只包含RAM节点的集群是脆弱的; 如果群集停止,您将无法再次启动,并将丢失所有数据。 RabbitMQ将阻止在许多情况下创buildRAM节点的群集,但不能完全阻止它。
当我改变configuration文件使用“光盘”而不是“ram”时,群集创build更加稳定。
[{rabbit, [{cluster_nodes, {['rabbit@rabbit1', 'rabbit@rabbit2', 'rabbit@rabbit3'],disc}}]}].