Rabbitmq集群构建

2020-12-25  本文已影响0人  jan29

一、RabbitMQ简介

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在不同的应用之间共享数据(跨平台跨语言)。RabbitMQ是使用Erlang语言编写,并且基于AMQP协议实现。

1、RabbitMQ的优势:

2、RabbitMQ的集群架构

rabbitmq集群架构.png
  • 生产者是投递消息的一方,首先连接到Server,建立一个连接,开启一个信道;然后生产者声明交换器和队列,设置相关属性,并通过路由键将交换器和队列进行绑定。同理,消费者也需要进行建立连接,开启信道等操作,便于接收消息。
  • 接着生产者就可以发送消息,发送到服务端中的虚拟主机,虚拟主机中的交换器根据路由键选择路由规则,然后发送到不同的消息队列中,这样订阅了消息队列的消费者就可以获取到消息,进行消费。

二、Rabbitmq集群搭建

实验环境
test1 192.168.100.23
test2 192.168.100.24

1、修改/etc/hosts文件

[root@test1 ~]# vi /etc/hosts
192.168.100.23 test1
192.168.100.24 test2
[root@test2 ~]# vi /etc/hosts
192.168.100.23 test1
192.168.100.24 test2

2、安装rabbitmq

[root@test1 ~]# yum -y install rabbitmq-server
[root@test2 ~]# yum -y install rabbitmq-server

3、启动rabbiqmq

[root@test1 ~]# systemctl start rabbitmq-server && systemctl enable rabbitmq-server
[root@test2 ~]# systemctl start rabbitmq-server && systemctl enable rabbitmq-server

4、同步cookie文件

[root@test1 ~]# scp /var/lib/rabbitmq/.erlang.cookie
test2:/var/lib/rabbitmq/.erlang.cookie
systemctl restart rabbitmq-server

5、加入集群

[root@test2 ~]# rabbitmqctl stop_app
Stopping node rabbit@test2 ...
...done.
[root@test2 ~]# rabbitmqctl join_cluster rabbit@test1
Clustering node rabbit@test2 with rabbit@test1 ...
...done.
[root@test2 ~]# rabbitmqctl start_app
Starting node rabbit@test2 ...
...done.

6、设置集群策略

[root@test1 ~]# rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode":"all"}'

参数意思为:

  • ha-all:为策略名称。
  • ^:为匹配符,只有一个 ^ 代表匹配所有,^zlh为匹配名称为zlh的exchanges或者queue。
  • ha-mode:为匹配类型,他分为3种模式:
    all-所有(所有的queue)
    exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器)
    nodes-指定(需配置ha-params参数,此参数为数组类型比如["3rabbit@F","rabbit@G"]这样指定为F与G这2台机器。)。

所有集群策略看下图

398358-20170311180957826-368967163.png

7、验证结果

[root@test1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@test1 ...
[{nodes,[{disc,[rabbit@test1,rabbit@test2]}]},
 {running_nodes,[rabbit@test2,rabbit@test1]},
 {cluster_name,<<"rabbit@test1">>},
 {partitions,[]}]
...done

8、开启web界面

[root@test1 ~]# rabbitmqctl add_user admin 000000
Creating user "admin" ...
...done.
[root@test1 ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
...done.
[root@test1 ~]# rabbitmq-plugins enable rabbitmq_management
[root@test1 ~]# netstat -ntulp | grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      1444/beam.smp       
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      1444/beam.smp       
tcp6       0      0 :::5672                 :::*                    LISTEN  

9、验证

image.png
上一篇 下一篇

猜你喜欢

热点阅读