centos7.3 rabbitmq集群

  • 时间:
  • 浏览:0
  • 来源:大发UU快3APP—大发UU快三

本文演示的实例是用源码安装,之后 这一 文件权限是 100,很多时要先修改 node2、node3 中的该文件权限为 777:

yancongadmin@node2:~$ rabbitmqctl stop_app

7

4

yancongadmin@node1:~$ cat .erlang.cookie

 {running_nodes,[rabbit@node3]},

23

node1:

yancongadmin@node1:~$ rabbitmqctl cluster_status

[{nodes,[{disc,[rabbit@node1,rabbit@node2,rabbit@node3]}]},

参考:http://idoall.org/blog/post/lion/15

7

12

3

Cluster status of node rabbit@node3 ...

Cluster status of node rabbit@node3 ...

Clustering node rabbit@node2 with rabbit@node1 ...

4

12

4

这行命令在vhost名称为hrsystem创建了一个多 策略,策略名称为ha-allqueue,策略模式为 all 即克隆到所有节点,蕴含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。

server   node1 10.0.0.231:5672 check inter 100 rise 2 fall 3 

4

.erlang.cookie                                                                                     100%   20     0.0KB/s   00:00

VORMVSAAOFOFEQKTNWBB

1

yancongadmin@node3:~$ rabbitmqctl stop_app

8

VORMVSAAOFOFEQKTNWBB

node1:

Clustering node rabbit@node3 with rabbit@node1 ...

yancongadmin@node3:~$ rabbitmqctl cluster_status

10

8

node2:

5

6

17

balance roundrobin

6

5

7

10

分别在node1、node2、node3将权限恢复过来:

3

13

9

6

14

这一:

yancongadmin@node1:~$ rabbitmqctl stop

  RabbitMQ节点之间和命令行工具 (e.g. rabbitmqctl)是使用Cookie互通的,Cookie是一组随机的数字+字母的字符串。当RabbitMQ服务器启动的日后,Erlang VM会自动创建一个多 随机内容的Cookie文件。之后 是通过yum源安装RabbitMQ励志的话 ,Erlang Cookie 文件在/var/lib/rabbitmq/.erlang.cookie。之后 是通过源码安装的RabbitMQ,Erlang Cookie文件$HOME/.erlang.cookie。

8

yancongadmin@node1's password:

rabbitmqctl set_policy queue-xxx "^queue" \

 {cluster_name,<<"rabbit@node1">>},

5

 {partitions,[]},

16

之后 时要负载均衡器,时要安装并配置 HAProxy

1

集群配置好后,时要在 RabbitMQ 任意节点上执行 rabbitmqctl cluster_status 来查看有无集群配置成功。

5

node1:

8

yancongadmin@node2:~$ rabbitmqctl cluster_status

yancongadmin@node2:~$ cat .erlang.cookie

13

yancongadmin@node1's password:

9

设置 Erlang Cookie

Stopping node rabbit@node2 ...

node2:

19

yancongadmin@node2:

listen rabbitmq_cluster 0.0.0.0:5672

1

最后分别在确认三台机器上的.erlang.cookie的值是一致的

将node1、node2、node3组成集群

22

1

Gracefully halting Erlang VM

1

13

11

Setting policy "ha-all" for pattern "^" to "{\"ha-mode\":\"all\"}" with priority "0"

9

16

15

之后 rabbitmq-server启动时,会同時 启动节点和应用,它预先设置RabbitMQ应用为standalone模式。要将一个多 节点加入到现有的集群中,你时要停止这一 应用并将节点设置为原始请况,之后 就为加入集群准备好了。之后 使用./rabbitmqctl stop,应用和节点都将被关闭。很多使用rabbitmqctl stop_app仅仅关闭应用。 

[{nodes,[{disc,[rabbit@node1,rabbit@node2,rabbit@node3]}]},

 {partitions,[]},

.erlang.cookie                                                                                     100%   20     0.0KB/s   00:00

7

Stopping and halting node rabbit@node1 ...

[{nodes,[{disc,[rabbit@node1]}]},

5

yancongadmin@node3:~$ rabbitmqctl start_app

2

 {running_nodes,[rabbit@node1]},

之后 要使用内存节点,则时要使用以下命令:

17

27

yancongadmin@node3:~$ scp -r node1:/home/yancongadmin/.erlang.cookie ~/

Cluster status of node rabbit@node2 ...

server   node2 10.0.0.232:5672 check inter 100 rise 2 fall 3

15

node3:

 {partitions,[]},

VORMVSAAOFOFEQKTNWBB

这一下面的命令,^message 这一 规则要根据当时人修改,这一 是指同步”message”开头的队列名称,让我们 都 配置时使用的应用于所有队列,很多表达式为”^”。

yancongadmin@node1:~$ chmod 777 .erlang.cookie

 {cluster_name,<<"rabbit@node1">>},

24

3

node3:

26

8

 {running_nodes,[rabbit@node1]},

server   node3 10.0.0.233:5672 check inter 100 rise 2 fall 3

yancongadmin@node2:~$ rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'

2

Cluster status of node rabbit@node2 ...

14

RabbitMQ镜像功能

11

9

6

3

4

node3:

 {alarms,[{rabbit@node1,[]}]}]

yancongadmin@node2:~$ rabbitmqctl join_cluster rabbit@node1

 {cluster_name,<<"rabbit@node3">>},

18

15

10.0.0.231  node1

yancongadmin@node3:~$ chmod 777 .erlang.cookie

     那此节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列行态克隆。本方案中搭建 3 个节点,之后 都会磁盘节点(所有节点请况保持一致,节点全部对等),要是有任何一个多 节点要能工作,RabbitMQ 集群对外就能提供服务。

node2:

21

Starting node rabbit@node2 ...

[{nodes,[{disc,[rabbit@node1,rabbit@node2]}]},{alarms,[{rabbit@node1,[]}]}]

Starting node rabbit@node3 ...

Stopping node rabbit@node3 ...

4

2

我使用过的例子,仅供参考:

15

1

yancongadmin@node1:~$ rabbitmqctl cluster_status

Cluster status of node rabbit@node1 ...

4

 {alarms,[{rabbit@node1,[]}]}]

10.0.0.232  node2

本文转自 yanconggod 51CTO博客,原文链接:http://blog.51cto.com/yanconggod/19339100

2

rabbitmqctl set_policy ha-xxx "^cn\.xxx" \

 {cluster_name,<<"rabbit@node2">>},

1

mode tcp

node3:

2

14

13

3

node2:

使用detached参数,在后台启动Rabbit Node

 {alarms,[{rabbit@node2,[]}]}]

安装 Erlang、RabbitMQ

10

1

19

12

使用Rabbit镜像功能,时要基于RabbitMQ策略来实现,策略是用来控制和修改群集范围的某个vhost队列行为和Exchange行为

2

 {partitions,[]},

yancongadmin@node1:~$ chmod 100 .erlang.cookie

6

5

yancongadmin@node2:~$ rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'

Cluster status of node rabbit@node1 ...

 {running_nodes,[rabbit@node2]},

1

RabbitMQ集群概述

yancongadmin@node3:~$ rabbitmqctl cluster_status

3

11

通过rabbitmqctl cluster_status命令,时要查看和个节点的请况,节点的名称是rabbit@shorthostname,

20

     通过 Erlang 的分布式行态(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。

2

16

 {alarms,[{rabbit@node3,[]}]}]

3

5

yancongadmin@node2:~$ rabbitmqctl start_app

2

10

 {alarms,[{rabbit@node1,[]}]}]

   '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic","ha-promote-on-shutdown":"always","ha-sync-batch-size":20}'

yancongadmin@node2:~$ rabbitmqctl cluster_status

2

yancongadmin@node1:~$ rabbitmq-server -detached

http://yanconggod.blog.51cto.com/1351649/1931009

3

将所有队列设置为镜像队列,即队列会被克隆到各个节点,各个节点请况保持总是。

yancongadmin@node2:~$ scp -r node1:/home/yancongadmin/.erlang.cookie ~/

18

yancongadmin@node2:~$ rabbitmqctl join_cluster --ram rabbit@node1

yancongadmin@node3:~$ rabbitmqctl join_cluster rabbit@node1

7

1

4

修改 /etc/hosts

1

yancongadmin@node3:~$ cat .erlang.cookie

12

此时 node2 与 node3 也会自动建立连接。

10.0.0.233  node3

加入集群 3 个节点的对应关系:

25

1

   '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic","ha-promote-on-shutdown":"always","ha-sync-batch-size":20}'

在任意一个多 节点上执行:

[{nodes,[{disc,[rabbit@node2]}]},

6

20

yancongadmin@node2:~$ chmod 777 .erlang.cookie

1

14

11

[{nodes,[{disc,[rabbit@node3]}]},