0


docker部署RabbitMQ,RocketMQ

部署rabbitmq

基于docker部署rabbitmq,在linux中执行命令

docker run \
 -e RABBITMQ_DEFAULT_USER=root \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network hm-net\
 -d \
 rabbitmq:3.8-management

-e RABBITMQ_DEFAULT_USER=root \ # 设置 RabbitMQ 默认用户名为 root

-e RABBITMQ_DEFAULT_PASS=123321 \ # 设置 RabbitMQ 默认密码为 123321

-v mq-plugins:/plugins \ # mq-plugins是数据卷,不是自定义的文件,在宿主机中,数据卷一般放在 /var/lib/docker/volumes 目录中

-p 15672:15672 \ # 将容器的 15672 端口映射到主机的 15672 端口(用于 RabbitMQ 管理面) -p 5672:5672 \ # 将容器的 5672 端口映射到主机的 5672 端口(用于 RabbitMQ 连接)

--network ra-ne \ # 将容器连接到名为 ra-net 的 Docker 网络

rabbitmq:3.8-management # 使用带有管理插件的 RabbitMQ 3.8 镜像运行容器

安装完成后,访问 你服务器地址的15672端口即可看到管理控制台。首次访问需要登录,默认的用户名和密码在配置文件中已经指定了

RabbitMQ对应的架构如图

其中包含几个概念

  • **publisher**:生产者,也就是发送消息的一方
  • **consumer**:消费者,也就是消费消息的一方
  • **queue**:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理
  • **exchange**:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。
  • **virtual host**:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue

RabbitMQ就部署完了

部署RocketMQ

docker部署rocketmq要部署三个容器。nameserver容器,brokerserver容器,consoleserver容器

  1. NameServer容器:NameServer是RocketMQ的核心组件之一,它充当注册中心的角色,维护着Broker服务器的信息。NameServer的主要职责包括管理Broker的服务状态以及提供路由信息服务,确保生产者和消费者之间的数据通信能够顺利进行。为了保证高可用性,NameServer支持集群化部署,即使某一台NameServer宕机,其他机器上的NameServer仍能继续对外提供服务。
  2. BrokerServer容器:BrokerServer是RocketMQ的消息处理服务器,负责存储和转发消息。在RocketMQ架构中,BrokerServer接收生产者发送的消息并存储在消息队列中,同时等待消费者来消费这些消息。每个BrokerServer可以承载多个消息队列,并且可以根据实际需求进行水平扩展以应对不同的负载情况。
  3. ConsoleServer容器:ConsoleServer是RocketMQ的管理控制台服务,提供了用户界面供运维人员进行系统管理和监控。通过ConsoleServer,管理员可以查看系统状态、管理消息队列、监控消息流量以及其他相关的运维任务。这个组件为RocketMQ的日常维护和管理提供了便利

部署前创建一个docker网络方便容器之间的通讯

docker network create ro-net

部署nameserver

docker run -d \
--name rmqnamesrv \
-p 9876:9876 \
-v /root/rocketmq/namesrv/logs:/root/logs \
-v /root/rocketmq/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \ 
--network ro-net  \
rocketmqinc/rocketmq \
sh mqnamesrv 

-e "MAX_POSSIBLE_HEAP=100000000" //表示设置堆内存的设置,设置为100兆字节

常用的单位有: KB(千字节),MB(兆字节),GB(1000兆字节)

--network ro-net //表示加入ro-net网络

sh mqnamesrv 是一个启动RocketMQ NameServer的命令

部署brokerserver

创建一个配置文件 broker.conf

我的配置文件内容是

# 所属集群名称,如果节点较多可以配置多个

brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
#启用sql92过滤模式
enablePropertyFilter=true
#启用broke自动创建主题
enableAutoCreateTopic=true

# 设置broker节点所在服务器的ip地址

brokerIP1 = 192.168.74.128
#添加nameServer的ip,要是配置文件不写,要在创建容器时添加进环境变量
namesrvAddr=192.168.74.128:9876

# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full

diskMaxUsedSpaceRatio=95

执行命令创建容器

docker run -d  \
--name brokersrv \
-p 10911:10911 \
-p 10909:10909 \
-v  /root/rocketmq/brokersrv/logs:/root/logs \
-v  /root/rocketmq/brokersrv/store:/root/store \
-v  /root/rocketmq/brokersrv/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
--network ro-net       \
rocketmqinc/rocketmq \
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf 

-v /root/rocketmq/brokersrv/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf //这就是配置文件挂载目录,要创建好目录

-e “NAMESRV_ADDR=192.168.74.128:9876” 指定rmqnamesrv的地址为192.168.74.128:9876,namesrv是容器的名,可以不用配置,写入到配置文件中

-e “MAX_POSSIBLE_HEAP=200000000” //指定broker服务的最大堆内存

rocketmqinc/rocketmq // 使用的镜像名称

sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf 指定配置文件启动broker节点

创建consolesrv容器

执行命令创建容器

docker run -d \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.74.128:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9999:8080 \
pangliang/rocketmq-console-ng

-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.52.136:9876 设置namesrv服务的ip地址

-Dcom.rocketmq.sendMessageWithVIPChannel=false" 不使用vip通道发送消息

好了,所需的容器创建完了

打开浏览器访问控制台

网页访问http://192.168.52.136:9999/查看控制台信息

这就是docker部署RabbitMQ,RocketMQ,谢谢你的观看


本文转载自: https://blog.csdn.net/2301_79385221/article/details/136794724
版权归原作者 岚空勇者 所有, 如有侵权,请联系我们删除。

“docker部署RabbitMQ,RocketMQ”的评论:

还没有评论