Centos7 RabbitMQ集群配置

Centos7系统内核版本: 3.10.0-693.2.2.el7.x86_64

 

一、对应主机host地址(三台主机host文件要保持一致)

172.20.0.190  aliyun_us_b_mq_m

172.20.0.191  aliyun_us_b_mq_1

172.20.0.192  aliyun_us_b_mq_2

二、3台主机安装相同的包

#根据官方说明添加rabbit源
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
#更新epel源
rpm -Uvh https://download.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm


#安装指定版本rabbitmq
yum list rabbitmq-server --showduplicates
yum install rabbitmq-server-3.6.10-1.el7
# 3.启动服务和查看状态
systemctl start rabbitmq-server.service
systemctl status rabbitmq-server.service
# 4.安装管理插件
web管理插件
rabbitmq-plugins list      #查看插件列表
rabbitmq-plugins enable rabbitmq_management

##日志跟踪插件
rabbitmq-plugins enable rabbitmq_tracing  #rabbitmq启用trace插件
rabbitmqctl trace_on      #打开trace的开关
rabbitmqctl trace_on -p test #打开trace的开关(test为需要日志追踪的vhost)
rabbitmqctl trace_off     #关闭trace的开关

##安装rabbitmq_delayed_message_exchange(延时队列)
##默认插件目录:
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.7/plugins

wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

至此3台机器上的rabbitmq都已经安装完成,并且正常启动

三、普通集群配置

1.说明:

Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群镜像。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在 $home/.erlang.cookie 中,我的是用rpm安装的,所以.erlang.cookie就放在/var/lib/rabbitmq中

2.复制cookie内容

erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400,不然节点之间就无法通信。

打开文件然后需要先把其中的一台服务器的.erlang.cookie中的内容复制到别的机器上,最好是复制内容,因为文件权限不对的话会出现问题,在最后退出保存的时候使用wq!用!来进行强制保存即可.

也可是直接使用scp传过去,记得文件权限和用户属主属组如scp .erlang.cookie root@10.100.2.12:/tmp

scp .erlang.cookie root@172.20.0.191:/var/lib/rabbitmq
scp .erlang.cookie root@172.20.0.192:/var/lib/rabbitmq

3.erlang.cookie复制完成后,逐个重启节点服务:

systemctl restart rabbitmq-server.service
systemctl status rabbitmq-server.service

4.添加到集群:

将rabbit@aliyun_us_b_mq_m 作为主节点,在 节点aliyun_us_b_mq_1 和 节点aliyun_us_b_mq_1上面分别执行如下命令,以加入集群:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@aliyun_us_b_mq_m
rabbitmqctl start_app

5.三台都查看集群状态

rabbitmqctl cluster_status

6.账号管理

# 添加账号:
rabbitmqctl add_user admin admin
# 添加 权限tag
rabbitmqctl set_user_tags admin administrator
 
# 删除用户(删除guest用户)
rabbitmqctl delete_user guest
Deleting user "guest"
 
# 修改用户的密码
rabbitmqctl  change_password  Username  Newpassword
 
[ root@aliyun_us_b_mq_m~]# rabbitmqctl  change_password  admin 0GM1aol4z8GeSZY99
Changing password for user "admin"
 
# 查看当前用户列表
rabbitmqctl  list_users
Listing users
admin   [administrator]

 

7.访问WEB地址:172.20.0.190:15672

 至此rabbitmq普通集群模式创建完成

从集群中移除节点:

[root@aliyun_us_b_mq_2 rabbitmq]# rabbitmqctl stop_app

Stopping rabbit application on node 'rabbit@aliyun_us_b_mq_2'

[root@aliyun_us_b_mq_2 rabbitmq]# rabbitmqctl reset

Resetting node 'rabbit@aliyun_us_b_mq_2'

[root@aliyun_us_b_mq_2 rabbitmq]#  rabbitmqctl start_app

Starting node 'rabbit@aliyun_us_b_mq_2'

改变集群节点类型

加入集群时指定节点类型:

rabbitmqctl stop_app

rabbitmqctl join_cluster --ram rabbit@aliyun_us_b_mq_2

rabbitmqctl start_app



--ram 指定内存节点类型,--disc指定磁盘节点类型

修改节点类型:

rabbitmqctl stop_app

rabbitmqctl change_cluster_node_type disc

rabbitmqctl start_app


日志文件
 

/var/log/rabbitmq/rabbit@aliyun_us_b_mq_1.log
/var/log/rabbitmq/rabbit@rabbit@aliyun_us_b_mq_1_upgrade.log


集群镜像模式配置:

  上面配置RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。

我们看看如何镜像模式来解决复制的问题,从而提高可用性.

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

命令行配置集群镜像模式:

在cluster中任意节点启用策略,策略会自动同步到集群节点

rabbitmqctl add_vhost mqserver
rabbitmqctl set_policy -p mqserver ha-allqueue "^" '{"ha-mode":"all"}'

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

实例

rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'
rabbitmqctl set_policy  ha-all "^SMS_BUSINESS_NOW\." '{"ha-mode":"all","ha-sync-mode":"automatic"}'

virtual_host管理

新建virtual_host: rabbitmqctl add_vhost  xxx
撤销virtual_host: rabbitmqctl delete_vhost  xxx

删除队列:

rabbitmqctl -p /activity purge_queue activity_register

 用户权限

rabbitmqctl  set_permissions -p /vhost1  user_admin '.*' '.*' '.*' 

 

转载于:https://my.oschina.net/devopsxin/blog/1924462

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值