Java 杂谈首页推荐分布式&高可用

rabbitmq 集群搭建

2018-07-10  本文已影响3人  冬天里的懒喵

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

这样集群假设成功。

上一篇下一篇

猜你喜欢

热点阅读