Centos7 rabbitMQ集群配置
CentOS7系统内核版本:3.10.0-514.26.2.el7.x86_64
一、对应主机host地址(三台主机host文件要保持一致)
192.21.11.182 mq01
192.21.11.183 mq02
192.21.11.184 mq03
二、3台主机都安装相同的软件:
1.erlang安装:
下载地址:https://www.rabbitmq.com/releases/erlang/
# wget http://www.rabbitmq.com/releases/erlang/erlang-19.0-1.el7.centos.x86_64.rpm
# rpm -ivh erlang-19.0-1.el7.centos.x86_64.rpm
2.rabbitMQ安装:
下载地址:https://www.rabbitmq.com/releases/rabbitmq-server/
#wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
安装依赖:
yum install tk -y
yum install tcl
rpm -ivh tcl-8.5.13-8.el7.x86_64.rpm
rpm -ivh unixODBC-2.3.1-11.el7.x86_64.rpm
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
# rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm
#CentOS7:
systemctl start rabbitmq-server.service
systemctl enable 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 v01-app-rabbit@localhost... 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,不然节点之间就无法通信。
主节点:
#cat /var/lib/rabbitmq/.erlang.cookie
3个节点都执行
chmod 700 /var/lib/rabbitmq/.erlang.cookie
echo -n "HGPVKPOZIGFCNKZHHLPE" > /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
ps -ef | grep ^rabbitmq | awk '{print $2}' | xargs kill -9
3.erlang.cookie复制完成后,逐个重启节点服务:
systemctl restart rabbitmq-server.service
systemctl status rabbitmq-server.service
4.添加到集群:
将mq01作为集群主节点,在节点mq02和节点mq03上面分别执行如下命令,以加入集群中.
[root@mq02 opt]# rabbitmqctl stop_app
Stopping node rabbit@mq02 ...
[root@mq02 opt]# rabbitmqctl reset
Resetting node rabbit@mq02 ...
[root@mq02 opt]# rabbitmqctl join_cluster rabbit@mq01
Clustering node rabbit@mq02 with rabbit@mq01 ...
[root@mq02 opt]# rabbitmqctl start_app
Starting node rabbit@mq02 ...
5.3台都查看集群状态
rabbitmqctl cluster_status
[root@mq02 opt]# rabbitmqctl cluster_status
Cluster status of node rabbit@mq02 ...
[{nodes,[{disc,[rabbit@mq01,rabbit@mq02,rabbit@mq03]}]},
{running_nodes,[rabbit@mq03,rabbit@mq01,rabbit@mq02]},
{cluster_name,<<"rabbit@mq01">>},
{partitions,[]},
{alarms,[{rabbit@mq03,[]},{rabbit@mq01,[]},{rabbit@mq02,[]}]}]
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
# 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普通集群模式创建完成.
从集群中移除节点:
# rabbitmqctl stop_app
Stopping rabbit application on node 'rabbit@v01-app-rabbitmq02'
# rabbitmqctl reset
Resetting node 'rabbit@v01-app-rabbitmq02'
# rabbitmqctl start_app
Starting node 'rabbit@v01-app-rabbitmq02'
改变集群节点类型
加入集群时指定节点类型
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@v01-app-rabbitmq01
rabbitmqctl start_app
--ram 指定内存节点类型,--disc指定磁盘节点类型
修改节点类型:
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app
日志文件:
/var/log/rabbitmq/rabbit@v01-app-rabbitmq01.log
/var/log/rabbitmq/rabbit@v01-app-rabbitmq01-sasl.log
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了