RabbitMQ单机部署和集群部署

文章介绍了如何在CentOS7中使用Docker进行RabbitMQ的单机部署,包括在线拉取和本地加载镜像,以及设置MQ容器。接着详细讲解了集群部署的两种模式——普通模式和镜像模式,强调了数据同步和高可用性的重要性。在集群配置中,强调了设置网络和主机间通信的步骤。

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

目录

一、单机部署

二、集群部署


一、单机部署

在centos7虚拟机中使用Docker来安装

(1)下载镜像

方式一:在线拉取

docker pull rabbitmq:3-management

方式二:先下载好后,在本地加载

上传到虚拟机后,使用命令加载镜像即可:

docker load -i mq.tar

(2)安装MQ

执行下面的命令来运算MQ容器:

docker run \
 -e RABBITMQ_DEFAULT_USER=itcast \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 --name mq \
 --hostname mq1 \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3-management

二、集群部署

(1)集群分类

在RabbitMQ的官方文档中,讲述了两种集群的配置方式:

普通模式:普通模式集群不进行数据同步,每个MQ都有自己的队列、数据信息(其它元数据信息如交换机等会同步)。例如我们有2个MQ:mq1,和mq2,如果你的消息在mq1,而你连接到了mq2,那么mq2会去mq1拉取消息,然后返回给你。如果mq1宕机,消息就会丢失。

镜像模式:与普通模式不同,队列会在各个q的镜像节点之间同步,因此你连接到任何一个镜像节点,均可获取到消息。而且如果一个节点宕机,并不会导致数据丢失。不过,这种方式增加了数据同步的带宽消耗。

(2)设置网络

首先,需要让3台MQ互相知道对方

分别在3台机器中,设置/etc/hosts文件,添加如下内容

192.168.150.101 mq1
192.168.150.102 mq2
192.168.150.103 mq3

并在每台机器上测试,是否可用ping通对方

### RabbitMQ 单节点部署教程 #### 准备工作 确保服务器已安装 Erlang 必要的依赖项。对于大多数 Linux 发行版,可以使用包管理器来完成此操作。 ```bash sudo apt-get update && sudo apt-get install erlang ``` 这一步骤会更新软件源并安装最新版本的 Erlang[^1]。 #### 安装 RabbitMQ Server 下载官方提供的 DEB 文件或通过 APT 添加 RabbitMQ 的仓库: ```bash wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.9/rabbitmq-server_3.8.9-1_all.deb sudo dpkg -i rabbitmq-server_3.8.9-1_all.deb ``` 上述命令用于获取指定版本的 RabbitMQ 并执行本地安装[^2]。 #### 启动服务与验证状态 启动 RabbitMQ 服务,并设置开机自启: ```bash sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server ``` 确认 RabbitMQ 正常运行: ```bash sudo systemctl status rabbitmq-server ``` 如果一切正常,则可以看到类似 "active (running)" 的提示信息[^3]。 #### 配置 Web 管理插件 为了方便管理监控集群情况,建议启用 Management 插件: ```bash sudo rabbitmq-plugins enable rabbitmq_management ``` 此时可以通过浏览器访问 `http://<server-ip>:15672` 来登录默认账号 guest/guest 进入图形界面[^4]。 #### 测试消息队列功能 编写简单的 Python 脚本来测试发送接收消息的功能。这里给出一个基本的例子作为参考: ```python import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # 声明队列 channel.queue_declare(queue='hello') def callback(ch, method, properties, body): print(f"Received {body}") # 绑定回调函数到队列 channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True) print('Waiting for messages.') channel.start_consuming() ``` 这段代码展示了如何连接至本地实例、声明队列以及定义处理接收到的消息的方式[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值