CentOS7环境RabbitMQ集群配置管理详解编程语言

CentOS7系统内核版本:3.10.0-514.26.2.el7.x86_64

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

10.100.2.10 v01-app-rabbitmq01 
10.100.2.11 v01-app-rabbitmq02 
10.100.2.12 v01-app-rabbitmq03 

二、3台主机都安装相同的软件:

1.erlang安装:  

下载地址: 
http://www.rabbitmq.com/releases/erlang/ 
 
[[email protected] opt]# wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el6.x86_64.rpm 
[[email protected] opt]# rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm 
准备中...                          ################################# [100%] 
正在升级/安装... 
   1:erlang-19.0.4-1.el6              ################################# [100%] 
[[email protected] opt]#  

2.rabbitMQ安装:

下载地址:https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/ 
 
[[email protected] opt]# wget https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el6.noarch.rpm 
[[email protected] opt]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc 
[[email protected] opt]# rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm 
错误:依赖检测失败: 
        socat 被 rabbitmq-server-3.6.12-1.el6.noarch 需要 
解决报错: 
 
[[email protected] opt]# wget –no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo #如果下载yum源有问题,可以不适用yum源直接安装试试. 
[[email protected] opt]# yum makecache -y 
[[email protected] opt]# yum install socat -y 
[[email protected] opt]# rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm 
准备中...                          ################################# [100%] 
正在升级/安装... 
   1:rabbitmq-server-3.6.12-1.el6     ################################# [100%]

3.启动服务和查看状态:  

service rabbitmq-server start 
service rabbitmq-server status 
 
#CentOS7推荐使用如下方法: 
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.6.12/plugins 
wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez 
 
rabbitmq-plugins enable rabbitmq_delayed_message_exchange 
The following plugins have been enabled: 
rabbitmq_delayed_message_exchange 
 
Applying plugin configuration to [email protected].. started 1 plugin.

至此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 [email protected]:/tmp

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

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

4.添加到集群:

[email protected][email protected]令,以加入集群中.

rabbitmqctl stop_app  
rabbitmqctl reset 
rabbitmqctl join_cluster [email protected] 
rabbitmqctl start_app 

5.3台都查看集群状态

rabbitmqctl cluster_status 

6.账号管理

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

7.访问WEB地址:10.100.2.10:15672

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

从集群中移除节点:

[[email protected] rabbitmq]# rabbitmqctl stop_app 
Stopping rabbit application on node [email protected]' 
[[email protected] rabbitmq]# rabbitmqctl reset 
Resetting node [email protected]' 
[[email protected] rabbitmq]#  rabbitmqctl start_app 
Starting node [email protected]' 

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

rabbitmqctl stop_app 
rabbitmqctl join_cluster --ram [email protected] 
rabbitmqctl start_app 
 
--ram 指定内存节点类型,--disc指定磁盘节点类型 

修改节点类型:

rabbitmqctl stop_app 
rabbitmqctl change_cluster_node_type disc 
rabbitmqctl start_app

日志文件:

[email protected] 
[email protected]

集群镜像模式配置:

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

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

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

下面我们使用web端创建一个完整的镜像队列:

1.点击admin菜单–>右侧的Virtual Hosts选项- Add a new virtual host 

CentOS7环境RabbitMQ集群配置管理详解编程语言

2.点击admin菜单–>右侧的Policies选项–>左侧最下下边的Add / update a policy

CentOS7环境RabbitMQ集群配置管理详解编程语言

如果有多个队列应用ha-all策略,patten就写成正则的,如下

CentOS7环境RabbitMQ集群配置管理详解编程语言

添加一个queues队列

CentOS7环境RabbitMQ集群配置管理详解编程语言

添加后刷新就可以看到策略已经应用了

CentOS7环境RabbitMQ集群配置管理详解编程语言

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

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

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

# rabbitmqctl set_policy -p hrsystem 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

 

参考文档:
rabbitmq——用户管理
http://www.cnblogs.com/AloneSword/p/4200051.html
http://blog.csdn.net/njys1/article/details/53001728

集群高可用配置:
http://88250.b3log.org/rabbitmq-clustering-ha
http://www.cnblogs.com/flat_peach/archive/2013/04/07/3004008.html
http://www.cnblogs.com/wangiqngpei557/p/6158094.html

在WEB端创建镜像队列:
https://jingyan.baidu.com/article/e73e26c0c3841b24adb6a7b9.html

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/11679.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论