部署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容器
- NameServer容器:NameServer是RocketMQ的核心组件之一,它充当注册中心的角色,维护着Broker服务器的信息。NameServer的主要职责包括管理Broker的服务状态以及提供路由信息服务,确保生产者和消费者之间的数据通信能够顺利进行。为了保证高可用性,NameServer支持集群化部署,即使某一台NameServer宕机,其他机器上的NameServer仍能继续对外提供服务。
- BrokerServer容器:BrokerServer是RocketMQ的消息处理服务器,负责存储和转发消息。在RocketMQ架构中,BrokerServer接收生产者发送的消息并存储在消息队列中,同时等待消费者来消费这些消息。每个BrokerServer可以承载多个消息队列,并且可以根据实际需求进行水平扩展以应对不同的负载情况。
- 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,谢谢你的观看
版权归原作者 岚空勇者 所有, 如有侵权,请联系我们删除。