修改hostname
第一步,先修改/etc/hosts 内容,添加各个主机节点的IP地址和主机名,每个节点都要修改。
第二步,修改/etc/hostname,每个节点都要修改成对应的主机名。
第三步 使用reboot命令重启虚拟机,输入hostname查看主机名是否已经修改成新的主机名。
修改文件权限
cookie文件是隐藏文件,根据erlang安装的方式不同,存放在/root/.erlang.cookie或者/var/lib/rabbitmq/.erlang.cookie
Chmod 600 /root/.erlang.cookie
修改cookie数值
RabbitMQ的集群是依赖erlang集群,而erlang集群是通过这个cookie进行通信认证的。修改两个主机.erlang.cookie文件中的cookie数值,保证这两个主机的数值相同。
配置集群
首先启动两台虚拟机的rabbitmq
rabbitmq-server -detached
然后执行以下命令,配置集群
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbit2
rabbitmqctl start_app
这期间遇到过一个错误,是因为端口号没有开通,如下
使用如下命令开通4369和25672端口
firewall-cmd --add-port=25672/tcp --zone=public --permanent
firewall-cmd --reload
注意:集群配置成功之后,会清空所有节点原来的用户、虚拟主机、队列、策略等,一切都是新的。
使用 rabbitmqctl add_user user1 123新增用户user1,会发现两个主机都同步新增了用户user1.
配置镜像高可用模式集群
/rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
参数意思为:
ha-all:为策略名称。
^:为匹配符,只有一个^代表匹配所有,^zlh为匹配名称为zlh的exchanges或者queue。
ha-mode:为匹配类型,他分为3种模式:all-所有(所有的queue),exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器),nodes-指定(需配置ha-params参数)。