Centos7环境下搭建Rabbitmq集群教程

 更新时间:2026年05月04日 10:42:09   作者:84岁带头冲锋  
本文主要介绍了在CentOS 7.6上安装和配置RabbitMQ集群的过程,包括安装依赖、配置Erlang cookie、搭建集群、添加信任关系、安装管理插件等步骤,最后介绍了如何创建镜像队列以提高集群的可用性

一、服务器环境

操作系统:centos7.6

[root@localhost opt]# uname -srm
Linux 3.10.0-957.el7.x86_64 x86_64

服务器IP

192.168.161.16 node16
192.168.161.17 node17
192.168.161.18 node18

安装包

二、服务搭建

2.1 配置服务器名称

在正式部署环境前,需要将本节点必须的集群其他机器的IP、主机名加入hosts文件,执行指令如下:

[root@localhost opt]# vim /etc/hosts
#node
192.168.161.16 node16
192.168.161.17 node17
192.168.161.18 node18

注:根据实际配置,将所有集IP都添加进去。

2.2 关闭防火墙与增强

不关闭防火墙开放端口

开通端口:

[root@localhost opt]# 
firewall-cmd --permanent --add-port={4369/tcp,25672/tcp,5671/tcp,5672/tcp,15672/tcp}
或者
关闭防火墙
[root@localhost opt]# systemctl stop firewalld
[root@localhost opt]# systemctl disable firewalld

通常,在部署环境时候需要关闭selinux。编辑/etc/selinux/config文件将SELINUX设置为disabled。如下
[root@localhost opt]# vim /etc/selinux/config
[root@localhost opt]# setenforce 0   ##临时关闭,不需要重启即可生效

2.3 添加信任关系

生成密钥对(所有服务器均处理)

[root@localhost opt]# ssh-keygen -t rsa

将公钥复制到需要无密码登陆的服务器上

在192.168.161.16服务器上执行:
[root@localhost opt]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.161.17
[root@localhost opt]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.161.18

在192.168.161.17服务器上执行:
[root@localhost opt]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.161.16
[root@localhost opt]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.161.18

在192.168.161.18服务器上执行:
[root@localhost opt]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.161.16
[root@localhost opt]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.161.17

2.4 安装erlang

[root@localhost opt]# rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm

2.5 安装RabbitMQ

[root@localhost opt]# rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm 
[root@localhost opt]# rpm --import rabbitmq-release-signing-key.asc 
[root@localhost opt]# rpm -ivh tcp_wrappers-7.6-77.el7.x86_64.rpm 
[root@localhost opt]# rpm -ivh socat-1.7.2.4-1.el7.rf.x86_64.rpm
[root@localhost opt]# rpm -ivh rabbitmq-server-3.6.12-1.el7.noarch.rpm

2.6 查看启动状态与日志

日志文件位置:/var/log/rabbitmq/

[root@localhost ~]# systemctl start rabbitmq-server.service 
[root@localhost ~]# systemctl status rabbitmq-server.service 

出现running则启动成功

2.7 安装管理插件

2.7.1安装web管理插件

查看插件列表

[root@localhost ~]# rabbitmq-plugins list

安装插件

[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management

2.7.2 安装日志管理插件

#rabbitmq启用trace插件
[root@localhost ~]# rabbitmq-plugins enable rabbitmq_tracing
#打开trace的开关:rabbitmqctl trace_on
#打开trace的开关(test为需要日志追踪的vhost):rabbitmqctl trace_on -p test
#关闭trace的开关:rabbitmqctl trace_off

2.7.3安装rabbitmq_delayed_message_exchange(延时队列)

将rabbitmq_delayed_message_exchange-0.0.1.ez传至/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins目录下

[root@localhost opt]# mv rabbitmq_delayed_message_exchange-0.0.1.ez  /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins/
[root@localhost opt]# cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins/
[root@localhost plugins]# rabbitmq-plugins enable rabbitmq_delayed_message_exchange

出现以下信息则说明启动成功

至此3台上面的rabbitmq都已安装完成,并且启动正常,现在开始配置集群服务。

2.8 普通集群配置

2.8.1 设置每个节点的cookie

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

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

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

比如以192.168.161.16 node16为准

[root@localhost plugins]# cd /var/lib/rabbitmq/
[root@localhost rabbitmq]# cat .erlang.cookie
RGDIJSPIUOPKSUACDCVU

再编辑另两台.erlang.cookie,将原来的内容删掉替换为RGDIJSPIUOPKSUACDCVU;使用wq!强制保存。

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

[root@localhost rabbitmq]# systemctl stop rabbitmq-server.service
[root@localhost rabbitmq]# systemctl start rabbitmq-server.service 
[root@localhost rabbitmq]# systemctl status rabbitmq-server.service 

2.8.2 添加到集群

以节点192.168.161.16为集群主节点,在节点192.168.161.17和节点192.168.161.18上添加配置,以加入到集群中

[root@localhost rabbitmq]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@localhost
[root@localhost rabbitmq]# rabbitmqctl reset
Resetting node rabbit@localhost
[root@localhost rabbitmq]# rabbitmqctl join_cluster rabbit@192.168.161.16
[root@localhost rabbitmq]# rabbitmqctl start_app
Starting node rabbit@localhost

每台都查看集群状态

[root@localhost rabbitmq]# rabbitmqctl cluster_status

2.8.3 账号管理

==添加账号:(仅在主节点上执行即可)==
[root@localhost rabbitmq]# rabbitmqctl add_user admin admin
Creating user "admin"
==添加权tag:==
[root@localhost rabbitmq]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator]
[root@localhost rabbitmq]# rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
Setting permissions for user "admin" in vhost "/"
==查看当前用户列表:==
[root@localhost rabbitmq]# rabbitmqctl list_users
Listing users
admin	[administrator]
guest	[administrator]
==查看用户权限:==
[root@localhost rabbitmq]# rabbitmqctl list_user_permissions admin
Listing permissions for user "admin"
/	.*	.*	.*
[root@localhost rabbitmq]# 

其他操作:

删除用户guest
[root@localhost rabbitmq]# rabbitmqctl delete_user guest 
Deleting user "guest"
查看用户列表
[root@localhost rabbitmq]# rabbitmqctl list_users
Listing users
admin	[administrator]
更改用户密码
[root@localhost rabbitmq]# rabbitmqctl change_password Username Newpassword

[root@localhost rabbitmq]# rabbitmqctl change_password admin 123456
Changing password for user "admin"

2.8.4 访问web地址

URL:
http://192.168.161.16:15672

使用admin登陆,登陆成功后界面如下:

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

2.9其他维护操作

2.9.1从集群中移除节点

(在需要移除的节点服务器上操作,比如移除node17)

[root@node17 rabbitmq]#rabbitmqctl stop_app
[root@node17 rabbitmq]#rabbitmqctl reset
[root@node17 rabbitmq]#rabbitmqctl start_app

2.9.2改变集群节点类型

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

[root@node16 rabbitmq]]#rabbitmqctl stop_app
[root@node16 rabbitmq]]#rabbitmqctl join_cluster --ram rabbit@192.168.161.16
[root@node16 rabbitmq]]#rabbitmqctl start_app

备注:–ram 指定内存节点类型,–disc指定磁盘节点类型

修改节点类型:

[root@node16 rabbitmq]]#rabbitmqctl stop_app
[root@node16 rabbitmq]]#rabbitmqctl change_cluster_node_type disc
[root@node16 rabbitmq]]#rabbitmqctl start_app

2.9.3日志文件

/var/log/rabbitmq/rabbit@node16.log
/var/log/rabbitmq/rabbit@node16-sasl.log

2.10集群镜像模式配置

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

镜像队列的创建可通过rabbitmq管理界面或者使用命令来创建。

  • Pattern:“^” 表示所有匹配所有队列名称。”^log” 是指同步”log”开头的队列名称。
  • ha-mode:“all”代表同步到所以节点。

2.10.1 命令方式建立镜像队列

输入以下命令:(所有服务器均操作)

rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:“all”}'

这样三台rabbitmq就可以数据同步了。

2.10.2 rabbitmq管理界面方式建立镜像队列

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • windows apache多端口虚拟主机配置方法

    windows apache多端口虚拟主机配置方法

    有很多朋友喜欢在windows下使用apache作为web服务器,有时候想用非80端口提供服务,因为未备案域名都是封了80端口,提供下载的时候可以用别的端口了,这里简单分享下,方便需要的朋友
    2013-03-03
  • Linux下解压,压缩JAR包的简单方法

    Linux下解压,压缩JAR包的简单方法

    下面小编就为大家带来一篇Linux下解压,压缩JAR包的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Linux命令之mkdir,cat,touch,vi/vim的详解

    Linux命令之mkdir,cat,touch,vi/vim的详解

    这篇文章主要介绍了Linux命令之mkdir,cat,touch,vi/vim的内容,文章内容很详细,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2023-01-01
  • Linux使用cron定时任务被隐藏的解决方法

    Linux使用cron定时任务被隐藏的解决方法

    这篇文章主要为大家详细介绍了Linux使用cron定时任务出现被隐藏的情况的解决方法,有需要的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • Apache实现多端口多主机名配置

    Apache实现多端口多主机名配置

    这篇文章主要介绍了Apache实现多端口多主机名配置的相关资料,需要的朋友可以参考下
    2018-08-08
  • 查看Linux系统版本的常用方法

    查看Linux系统版本的常用方法

    本文介绍了如何使用Linux命令来查看系统内核版本和发行版本,包括`cat/proc/version`,`uname-a`,`lsb_release-a`,`cat/etc/issue`等,适用于不同需求和不同的Linux发行版,有这方面需求的小伙伴不妨记一下下面的这些命令
    2025-06-06
  • linux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 解决navicat连接不上linux服务器上的mysql问题

    解决navicat连接不上linux服务器上的mysql问题

    这篇文章主要介绍了navicat连接不上linux服务器上的mysql的解决办法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • CentOS安装Python2.7与Python2.6并存的方法

    CentOS安装Python2.7与Python2.6并存的方法

    这篇文章主要介绍了CentOS安装Python2.7与Python2.6并存的方法,非常具有实用价值,需要的朋友可以参考下
    2017-08-08
  • CentOS 7中 Minimal 安装JDK 1.8的教程

    CentOS 7中 Minimal 安装JDK 1.8的教程

    这篇文章主要介绍了CentOS 7 Minimal 安装JDK 1.8的教程,非常不错,具有参考借鉴价值 ,需要的朋友可以参考下
    2018-05-05

最新评论