赞
踩
服务器情况
节点(理解用) | 节点名称(计算生成) | 主机名 | 主机IP |
---|---|---|---|
node1 | rabbit@VM-24-15-centos | VM-24-15-centos | 49.xxx.99 |
node2 | rabbit@hello-TQ2 | hello-TQ2 | 15xxxx212 |
node3 | rabbit@hello_TQ1 | hello_TQ1 | 43.xxx.116 |
部署设计,如下:
rabbit@node1.messaging.svc.local
是一个节点名称,前缀为 rabbit,主机名为 node1.messaging.svc.local。再例如:rabbit@VM-24-15-centos
、rabbit@hello_TQ1
。4369
端口、25672
端口,关于相关端口,如下:/var/lib/rabbitmq/.erlang.cookie
(由服务器使用)和$HOME/.erlang.cookie(由CLI工具使用)中。firewall-cmd --state # 查看防火墙的状态
sudo firewall-cmd --add-port=4369/tcp --permanent
sudo firewall-cmd --add-port=25672/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
rabbitmqctl stop_app
时报错,不能链接此端口。vim /etc/hosts
,让集群节点间需能互相访问,故每个集群节点的hosts文件应包含集群内所有节点的信息以保证互相解析。
服务器IP1 VM-24-15-centos
服务器IP2 hello-TQ2
服务器IP3 hello_TQ1
systemctl restart network
.erlang.cookie
文件分别拷贝到 node2 和 node3 对应的机器上。systemctl stop rabbitmq-server
或
service rabbitmq-server stop
scp /var/lib/rabbitmq/.erlang.cookie root@node2服务IP:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@node3服务IP:/var/lib/rabbitmq/
rabbitmq-server -detached
rabbit@hello-TQ2
和rabbit@hello_TQ1
,加入node1节点的集群,比如rabbit@VM-24-15-centos
。在此之前,必须重置两个新加入的成员。
rabbitmqctl stop_app # 1.关闭RabbitMQ服务
rabbitmqctl reset # 2.重置节点
# 3.节点加入, 在一个node加入cluster之前,必须先停止该node的rabbitmq应用,即先执行stop_app
rabbitmqctl join_cluster rabbit@VM-24-15-centos
rabbitmqctl start_app # 4.启动服务
rabbit@hello-TQ2
与rabbit@hello_TQ1
加入一个集群。为此,我们要在 rabbit@hello-TQ2
与rabbit@hello_TQ1
上停止 RabbitMQ 应用程序并加入 rabbit@VM-24-15-centos
(node1节点) 群集,然后重新启动 node2、node3的RabbitMQ 应用程序。unable to connect to epmd (port 4369) on VM-24-15-centos: nxdomain (non-existing domain)
rabbitmqctl reset
命令时报错,错误如下:Error:
{:cannot_start_mnesia, {{:shutdown, {:failed_to_start_child, :mnesia_kernel_sup, :killed}}, {:mnesia_app, :start, [:normal, []]}}}
cd /var/lib/rabbitmq/mnesia/rabbit@hello_TQ1
rm -rf ./*
cd /var/lib/rabbitmq
rm -rf erl_crash.dump
rm -rf MnesiaCore*
Error:
{:corrupt_or_missing_cluster_files, {:error, :enoent}, {:error, :enoent}}
rabbitmq-server -detached
rabbitmqctl start_app # 先启
rabbitmqctl cluster_status
rabbitmqctl stop_app # 再停
rabbitmqctl reset # 重置
rabbitmqctl join_cluster rabbit@VM-24-15-centos
rabbitmqctl start_app
rabbitmqctl cluster_status
命令,我们可以看到这两个节点已加入集群中:rabbitmqctl cluster_status
rabbitmqctl add_user mqAdmin2 123456
rabbitmqctl set_user_tags mqAdmin2 administrator
rabbitmqctl set_permissions -p "/" mqAdmin2 ".*" ".*" ".*"
RabbitMQ 3.9.13 Erlang 23.3.4.18
,没有找到默认的 rabbitmq.conf
文件 或 rabbitmq.conf.d
文件。
/etc/rabbitmq
目录下,如果有这个配置文件的,可以查看配置文件里的 cluster_formation.peer_discovery_backend
行的配置,如果该行的值为rabbit_peer_discovery_classic_config
,则表示启用了自动集群发现机制。如果该行的值为其他任何值,则表示未启用自动集群发现机制。rabbitmqctl environment
命令查看配置,如下:rabbitmqctl environment | grep peer_discovery_backend
rabbitmqctl stop_app # 关闭rabbitMQ服务
rabbitmqctl forget_cluster_node rabbit@hello_TQ1
rabbitmqctl -n rabbit@hello-TQ2 stop_app
rabbitmqctl forget_cluster_node rabbit@hello-TQ2
exactly
,并指定复制系数 ha-params
。rabbitmqctl set_policy ha-two "^two\." \
'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
report-two
当策略名称:rabbitmqctl set_policy report-two "^report\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
以“susu.”开头
的队列匹配,并配置镜像到群集中的所有节点。
rabbitmqctl set_policy ha-all "^susu\." '{"ha-mode":"all"}'
以“beijing.”开头
的队列将镜像到群集中的特定节点
(即:指定的节点),配置命令如下:rabbitmqctl set_policy ha-nodes "^beijing\." '{"ha-mode":"nodes","ha-params":["rabbit@VM-24-15-centos","rabbit@hello-TQ2"]}'
rabbitmqctl set_policy ha-nodes "^haidian\." '{"ha-mode":"nodes","ha-params":["rabbit@VM-24-15-centos"]}'
ha
指的是:high available(高可用)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。