docker安装RocketMQ

1、RocketMQ基本概念
1.1 消息模型(Message Model)

RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。Broker在实际部署过程中对应一台服务器,每个Broker可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的Broker。MessageQueue用于存储消息的物理地址,每个Topic中的消息地址存储于多个MessageQueue中。ConsumerGroup由多个Consumer实例构成。

1.2 代理服务器(Broker Server)

消息中转角色,负责存储消息、转发消息。代理服务器在RocketMQ系统中负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。代理服务器也存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息等。

1.3 名字服务(Name Server)

名称服务充当路由消息的提供者。生产者或消费者能够通过名字服务查找各主题相应的BrokerIP列表。多个Namesrv实例组成集群,但相互独立,没有信息交换。

2、安装NameServer
  • 搜索/拉取镜像

    docker search rocketmq

复制代码
 docker pull rocketmqinc/rocketmq
  • 创建一个数据目录

    mkdir -p /docker/rocketmq/nameserver/logs /docker/rocketmq/nameserver/store

  • 运行

    docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876 -v /docker/rocketmq/nameserver/logs:/root/logs -v /docker/rocketmq/nameserver/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv

  • 参数说明
参数 说明
-d 以守护进程的方式启动
- -restart=always docker重启时候容器自动重启
- -name rmqnamesrv 把容器的名字设置为rmqnamesrv
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
-v /docker/rocketmq/nameserver/logs:/root/logs 目录挂载
-v /docker/rocketmq/nameserver/store 目录挂载
rmqnamesrv 容器的名字
-e "MAX_POSSIBLE_HEAP=100000000" 设置容器的最大堆内存为100000000
rocketmqinc/rocketmq 使用的镜像名称
sh mqnamesrv 启动namesrv服务
3、安装broker
  • 创建broker.conf配置文件,我的目录是/opt/docker/rocketmq/broker.conf,文件内容如下
php 复制代码
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 主机的IP
  • 启动broker
php 复制代码
 docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v /docker/rocketmq/data/broker/logs:/root/logs -v /docker/rocketmq/data/broker/store:/root/store -v /opt/docker/rocketmq/broker.conf:/opt/docker/rocketmq/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/docker/rocketmq/broker.conf

参数 说明

-d 以守护进程的方式启动
--restart=always docker重启时候容器自动重启
--name rmqbroker 把容器的名字设置为rmqbroker
--link rmqnamesrv:namesrv 和rmqnamesrv容器通信
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
-p 10909:10909 把容器的vip通道端口挂载到宿主机
-e "NAMESRV_ADDR=namesrv:9876" 指定namesrv的地址为本机namesrv的ip地址:9876
-e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker 指定broker服务的最大堆内存
rocketmqinc/rocketmq 使用的镜像名称
sh mqbroker -c /opt/docker/rocketmq/broker.conf 指定配置文件启动broker节点
4、安装控制台
  • 拉取镜像
php 复制代码
docker pull pangliang/rocketmq-console-ng
  • 控制台启动
php 复制代码
docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=122.112.145.138:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 pangliang/rocketmq-console-ng
  • 访问

ip:8080 访问出现如下界面:

相关推荐
江湖有缘1 小时前
Docker实战 :使用Docker部署OneTerm堡垒机
运维·docker·容器
IT界的老黄牛5 小时前
限流命中后该怎么办:直接丢、阻塞等待、延迟重投三种姿势的取舍
java·rocketmq·redisson·令牌桶·削峰·分布式限流
Kevin Wang7276 小时前
Nvidia-AGX-spark部署手册——课堂质量诊断(jetpack:r36)
python·docker·容器
回眸不遇8 小时前
将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
c语言·docker·容器
潘正翔10 小时前
k8s基础_kubeadm搭建k8s集群
linux·运维·docker·云原生·容器·kubernetes
Echo flower10 小时前
Docker 容器中 Puppeteer 僵尸进程排查与修复
运维·docker·容器·puppeteer
流星白龙10 小时前
【Docker】3.Docker 组件与生产应用
docker
江湖有缘11 小时前
Docker实战 | 使用Docker部署Donetick任务与家务管理应用
运维·docker·容器
流星白龙11 小时前
【Docker】4.NameSpace空间隔离实战
java·运维·docker
Python私教12 小时前
GitHub Actions 实战:把测试、密钥扫描与 Docker 镜像检查接入 CI
ci/cd·docker·github·devsecops·github actions