1.环境准备
准备节点 m162p235 m162p239 两台服务器,分别按照前文的方式安装完成了rabbitmq,并启动。
image.png image.png
保证上述两个节点都是可以正常工作的。下面我们就将这两个节点连接起来形成高可用的cluster,之后就可以让我们的exchange、queue在这两个节点之间复制,形成高可用的queue。
2.修改cookie 和hosts文件
在用户的默认目录下,有一个.erlang.cookie文件,其权限默认是400:
image.png
这个文件是erlang用来发现和互连的基础。我们需要做的很简单,将两个节点中的.erlang.cookie设置成一样的。这是erlang的约定,一样的cookie hash key他认为是合法和正确的连接。
chmod 644 .erlang.cookie
vim .erlang.cookie
#修改为另外一个节点对应的值
#注意修改完毕之后要重新修改权限为400 不然rabbitmq启动会出现错误
chmod 400 /opt/rabbitmq/.erlang.cookie
另外需要注意的是hosts文件,需要在hosts中都配置每个节点的host:
192.168.162.235 m162p235
192.168.162.239 m162p239
两个节点都配置完hosts.能够进行互ping:
[root@m162p239 etc]# ping m162p235
PING m162p235 (192.168.162.235) 56(84) bytes of data.
64 bytes from m162p235 (192.168.162.235): icmp_seq=1 ttl=64 time=1.52 ms
64 bytes from m162p235 (192.168.162.235): icmp_seq=2 ttl=64 time=0.786 ms
64 bytes from m162p235 (192.168.162.235): icmp_seq=3 ttl=64 time=1.69 ms
64 bytes from m162p235 (192.168.162.235): icmp_seq=4 ttl=64 time=0.753 ms
64 bytes from m162p235 (192.168.162.235): icmp_seq=5 ttl=64 time=3.22 ms
64 bytes from m162p235 (192.168.162.235): icmp_seq=6 ttl=64 time=1.41 ms
^C
--- m162p235 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5172ms
rtt min/avg/max/mdev = 0.753/1.566/3.226/0.823 ms
[root@m162p239 etc]#
另外一个节点:
[root@m162p235 etc]# ping m162p239
PING m162p239 (192.168.162.239) 56(84) bytes of data.
64 bytes from m162p239 (192.168.162.239): icmp_seq=1 ttl=64 time=0.700 ms
64 bytes from m162p239 (192.168.162.239): icmp_seq=2 ttl=64 time=0.768 ms
64 bytes from m162p239 (192.168.162.239): icmp_seq=3 ttl=64 time=1.48 ms
64 bytes from m162p239 (192.168.162.239): icmp_seq=4 ttl=64 time=4.03 ms
64 bytes from m162p239 (192.168.162.239): icmp_seq=5 ttl=64 time=5.24 ms
64 bytes from m162p239 (192.168.162.239): icmp_seq=6 ttl=64 time=0.559 ms
^C
--- m162p239 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5291ms
rtt min/avg/max/mdev = 0.559/2.130/5.245/1.830 ms
[root@m162p235 etc]#
3.配置集群
选择其中一个节点,连到另外一个节点,现在选择m162p235:
cd /opt/rabbitmq/rabbitmq/sbin
查看集群状态
[rabbitmq@m162p235 sbin]$ ./rabbitmqctl cluster_status
Cluster status of node rabbit@m162p235 ...
[{nodes,[{disc,[rabbit@m162p235]}]},
{running_nodes,[rabbit@m162p235]},
{cluster_name,<<"rabbit@m162p235">>},
{partitions,[]},
{alarms,[{rabbit@m162p235,[]}]}]
停止app
[rabbitmq@m162p235 sbin]$ ./rabbitmqctl stop_app
Stopping rabbit application on node rabbit@m162p235 ...
加入集群
[rabbitmq@m162p235 sbin]$ ./rabbitmqctl join_cluster --ram rabbit@m162p239
Clustering node rabbit@m162p235 with rabbit@m162p239
启动app
[rabbitmq@m162p235 sbin]$ ./rabbitmqctl start_app
Starting node rabbit@m162p235 ...
## ##
## ## RabbitMQ 3.7.7. Copyright (C) 2007-2018 Pivotal Software, Inc.
########## Licensed under the MPL. See http://www.rabbitmq.com/
###### ##
########## Logs: /opt/rabbitmq/rabbitmq/var/log/rabbitmq/rabbit@m162p235.log
/opt/rabbitmq/rabbitmq/var/log/rabbitmq/rabbit@m162p235_upgrade.log
Starting broker...
completed with 3 plugins.
[rabbitmq@m162p235 sbin]$
查看网页状态:
image.png image.png
这样就能看到两个节点。
为了提高性能,不需要两个节点都是disc的节点,所以我们需要启动一个节点为RAM模式。
可以通过如下命令改变节点的模式:
rabbitmqctl change_cluster_node_type ram
这样集群假设成功。
网友评论