RabbitMQ单机多实例部署

本文详细介绍了如何在 CentOS 7 系统中安装 Erlang 和 RabbitMQ,单机部署后,逐步扩展为多节点部署,并配置管理UI、用户权限及不同节点间的隔离。最后,展示了如何通过修改配置文件和环境变量启动多个独立且互不干扰的 RabbitMQ 实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先部署单台 RabbitMQ


#环境 centos 7
#1、安装依赖:
yum install socat -y
#2、安装Erlang
#下载 
#https://github.com/rabbitmq/erlang-rpm/releases/download/v23.0.2/erlang-23.0.2-1.el7.x86_64.rpm
#安装
rpm -ivh erlang-23.0.2-1.el7.x86_64.rpm
#rpm -ivh erlang-23.0.2-1.el8.x86_64.rpm
#3、安装RabbitMQ
#下载地址:
#https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5-1.el7.noarch.rpm
#安装
rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm
#rpm -ivh rabbitmq-server-3.8.5-1.el8.noarch.rpm
#默认安装位置
/usr/lib/rabbitmq
#跳转到可执行文件位置
/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.5/sbin
#开启UI插件
rabbitmq-plugins enable rabbitmq_management
#启动rabbitmq
systemctl start rabbitmq-server
#或
./rabbitmq-server
#或
rabbitmq-server 
#或者后台启动
rabbitmq-server -detached
#或
./rabbitmq-server -detached
#查看帮助
rabbitmqctl help
#查看用户
rabbitmqctl list_users 
#添加用户
➜  / rabbitmqctl add_user root 1234
Adding user "root" ...
#设置标签(角色)
➜  / rabbitmqctl set_user_tags root administrator
Setting tags for user "root" to [administrator] ...
#设置权限 对于虚拟主机/赋予配置、写、读权限
➜  / rabbitmqctl set_permissions --vhost / root ".*" ".*" ".*"
#rabbitmqctl set_permissions --vhost / root" "^$" ".* ".*"
Setting permissions for user "root" in vhost "/" ...
#网页版登陆rabbitmq
http://172.16.94.13:15672/
#idea访问rabbitmq
http://172.16.94.13:15672/

开始单机多部署

下载 rabbitMQ 的源码

https://github.com/rabbitmq/rabbitmq-server/releases

在下面路径下找到 rabbitmq.conf.example

/Users/dulane/Downloads/SafariDownload/rabbitmq-server-3.8.22/deps/rabbit/docs

因为是通过 rpm 安装的 rabbitmq 没有 rabbitmq.conf 文件

参考 rabbitmq.conf.example 这个文件新建 rabbitmq.conf 文件

具体操作

➜  ~ cd /opt
➜  /opt mkdir rabbitconf
➜  /opt ls
rabbitconf
➜  /opt ll
总用量 0
drwxr-xr-x. 2 root root 6 96 18:02 rabbitconf
➜  /opt id rabbitmq
uid=997(rabbitmq) gid=995(rabbitmq)=995(rabbitmq)
#更改权限组
➜  /opt chown :rabbitmq -R rabbitconf/
➜  /opt ll  
总用量 0
drwxr-xr-x. 2 root rabbitmq 6 96 18:02 rabbitconf
➜  /opt cd rabbitconf 
#创建配置文件rabbit.conf
➜  rabbitconf touch rabbit1.conf rabbit2.conf rabbit3.conf
➜  rabbitconf ll
总用量 0
-rw-r--r--. 1 root root 0 96 18:04 rabbit1.conf
-rw-r--r--. 1 root root 0 96 18:04 rabbit2.conf
-rw-r--r--. 1 root root 0 96 18:04 rabbit3.conf
#更改权限组
➜  rabbitconf chown :rabbitmq rabbit*.conf
➜  rabbitconf ll
总用量 0
-rw-r--r--. 1 root rabbitmq 0 96 18:04 rabbit1.conf
-rw-r--r--. 1 root rabbitmq 0 96 18:04 rabbit2.conf
-rw-r--r--. 1 root rabbitmq 0 96 18:04 rabbit3.conf
➜  rabbitconf  
#分别修改
vim rabbit1.conf
vim rabbit2.conf
vim rabbit3.conf
#添加如下内容 一个是management ui插件的访问端口默认15672 第二个guest 访问默认不允许远程访问
management.tcp.port = 6001
loopback_users.guest = false
management.tcp.port = 6002
loopback_users.guest = false
management.tcp.port = 6003
loopback_users.guest = false
#分别启动三个rabbitmq
#也可以这种方式 export RABBITMQ_NODE_PORT=5001 export RABBITMQ_NODENAME=rabbit1  rabbitmq-server
RABBITMQ_NODENAME=rabbit1 RABBITMQ_NODE_PORT=5001 RABBITMQ_CONFIG_FILE=/opt/rabbitconf/rabbit1.conf rabbitmq-server
RABBITMQ_NODENAME=rabbit2 RABBITMQ_NODE_PORT=5002 RABBITMQ_CONFIG_FILE=/opt/rabbitconf/rabbit2.conf rabbitmq-server
RABBITMQ_NODENAME=rabbit3 RABBITMQ_NODE_PORT=5003 RABBITMQ_CONFIG_FILE=/opt/rabbitconf/rabbit3.conf rabbitmq-server
#分别访问 用户名密码guest
http://172.16.94.13:6001/
http://172.16.94.13:6002/
http://172.16.94.13:6003/
#查看生成的文件
➜  ~ cd /var/lib/rabbitmq
➜  rabbitmq ls
erl_crash.dump  mnesia
➜  rabbitmq cd mnesia
➜  mnesia ls
rabbit1@rabbitmq                 rabbit2@rabbitmq.pid             rabbit@mha
rabbit1@rabbitmq-feature_flags   rabbit2@rabbitmq-plugins-expand  rabbit@mha-feature_flags
rabbit1@rabbitmq.pid             rabbit3@rabbitmq                 rabbit@mha-plugins-expand
rabbit1@rabbitmq-plugins-expand  rabbit3@rabbitmq-feature_flags   rabbit@rabbitmq
rabbit2@rabbitmq                 rabbit3@rabbitmq.pid             rabbit@rabbitmq-feature_flags
rabbit2@rabbitmq-feature_flags   rabbit3@rabbitmq-plugins-expand  rabbit@rabbitmq-plugins-expand
➜  mnesia cd /var/log/rabbitmq/
➜  rabbitmq ls
log                           rabbit3@rabbitmq_upgrade.log        rabbit@rabbitmq.log-20210826.gz
rabbit1@rabbitmq.log          rabbit@mha.log                      rabbit@rabbitmq.log-20210902.gz
rabbit1@rabbitmq_upgrade.log  rabbit@mha.log-20210826.gz          rabbit@rabbitmq.log-20210905.gz
rabbit2@rabbitmq.log          rabbit@mha_upgrade.log              rabbit@rabbitmq_upgrade.log
rabbit2@rabbitmq_upgrade.log  rabbit@mha_upgrade.log-20210826.gz  rabbit@rabbitmq_upgrade.log-20210826.gz
rabbit3@rabbitmq.log          rabbit@rabbitmq.log                 rabbit@rabbitmq_upgrade.log-20210902.gz
#优雅的关闭
➜  rabbitmq rabbitmqctl -n rabbit1 stop
Stopping and halting node rabbit1@rabbitmq ...
➜  rabbitmq rabbitmqctl -n rabbit2 stop
Stopping and halting node rabbit2@rabbitmq ...
➜  rabbitmq rabbitmqctl -n rabbit3 stop
Stopping and halting node rabbit3@rabbitmq ...
➜  rabbitmq 
访问客户端

#分别访问 用户名密码 guest
http://172.16.94.13:6001/
http://172.16.94.13:6002/
http://172.16.94.13:6003/

在客户端分别创建 Queue 发现并不互通而是相互独立的

image.png

image.png

启动效果

image.png

image.png

### RabbitMQ 单机部署教程 #### 准备工作 确保操作系统已更新至最新状态,并安装必要的依赖项。对于基于 Debian 的系统,可以使用如下命令来准备环境: ```bash sudo apt update && sudo apt upgrade -y ``` #### 安装 Erlang 和 RabbitMQ Erlang 是运行 RabbitMQ 所必需的语言环境。通常情况下,在安装 RabbitMQ 时会自动处理此依赖关系。 通过包管理器安装 RabbitMQ: ```bash sudo apt install -y rabbitmq-server[^3] ``` 完成上述操作后,验证 RabbitMQ 是否成功安装以及其版本号: ```bash rabbitmqctl status ``` 如果一切正常,则表示 RabbitMQ 已经被正确安装到本地环境中。 #### 配置文件调整 为了使配置更灵活,建议创建自定义的 `rabbitmq.config` 文件用于指定特定参数设置。这可以通过复制默认样例配置实现: ```bash cp /usr/share/doc/rabbitmq-server-3.3.5/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config[^2] ``` 编辑 `/etc/rabbitmq/rabbitmq.config` 来满足具体需求,比如修改监听地址、端口号等选项。 #### 启动与停止服务 当所有准备工作完成后,就可以尝试启动 RabbitMQ 服务了。首次启动前可能需要先启用一些插件功能,例如 Web 管理界面: ```bash sudo rabbitmq-plugins enable rabbitmq_management ``` 之后便能以守护进程模式后台运行 RabbitMQ: ```bash sudo systemctl start rabbitmq-server.service ``` 要优雅地关闭正在运行的服务实例可执行下面这条指令: ```bash sudo rabbitmqctl stop[^1] ``` #### 使用 Docker 进行快速部署 另一种简便的方法是利用容器化技术——Docker 来部署 RabbitMQ 实例。这种方式特别适合于开发测试场景下临时性的单机多实例部署。以下是构建一个带有预设用户名/密码 (`itcast`/`123321`) 及暴露相应端口映射的基础镜像命令: ```dockerfile docker run -d \ -v ${PWD}/mq2/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \ -v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \ -e RABBITMQ_DEFAULT_USER=itcast \ -e RABBITMQ_DEFAULT_PASS=123321 \ --name mq2 \ --hostname mq2 \ -p 8072:5672 \ -p 8082:15672 \ rabbitmq:3.8-management[^4] ``` 这样就完成了基本的单机RabbitMQ部署过程。当然实际生产环境下还需要考虑更多因素如性能调优、安全加固等方面的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值