使用Docker搭建RocketMQ
使用Docker搭建RocketMQ
本次通过使用Docker搭建RocketMQ及其控制台界面。
官方:https://rocketmq.apache.org/
准备工作
-
服务器预装Docker准备
安装可参考: https://blog.csdn.net/can_1994/article/details/79800698?spm=1001.2014.3001.5501另说明一下笔者当前服务器的局域网IP为 172.0.1.180,大家请根据自身实际情况修改命令和配置中的IP。
-
RocketMQ镜像准备
docker pull rocketmqinc/rocketmq
-
控制台镜像准备
docker pull styletang/rocketmq-console-ng
创建Docker网络
在 Docker 中创建一个名为 rocketmq 的网络,后续 RocketMQ 的 NameServer,Broker,控制台 都会使用该网络。
- 创建rocketmq网络
docker network create rocketmq
- 查看网络信息
docker inspect rocketmq
构建并启动 NameServer 容器
- 在宿主机中创建映射目录
mkdir -p /data/software/rocketmq/data/namesrv/{logs,store}
- 构建并启动 NameServer 容器
docker run --name rmqnamesrv \ --restart=always \ -p 9876:9876 \ --privileged=true \ --network rocketmq \ --cpus 4 \ --memory 4096M \ --ulimit nofile=1024:1024 \ -v /data/software/rocketmq/data/namesrv/logs:/root/logs \ -v /data/software/rocketmq/data/namesrv/store:/root/store \ -e "MAX_POSSIBLE_HEAP=100000000" \ -d rocketmqinc/rocketmq sh mqnamesrv autoCreateTopicEnable=true
构建并启动 Broker 容器
- 在宿主机中创建映射目录
mkdir -p /data/software/rocketmq/data/broker/{logs,store} mkdir -p /data/rocketmq/conf/
- 创建 Broker 配置文件
配置文件内容如下:vim /data/rocketmq/conf/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 #类似注册中心 namesrvAddr= 172.0.1.180:9876 # 设置broker节点所在服务器的ip地址 brokerIP1 = 172.0.1.180
- 构建并启动 Broker 容器
docker run -d --name rmqbroker \ -p 10911:10911 \ -p 10909:10909 \ --restart=always \ --privileged=true \ --network rocketmq \ --cpus 4 \ --memory 4096M \ --ulimit nofile=1024:1024 \ -v /data/software/rocketmq/data/broker/logs:/root/logs \ -v /data/software/rocketmq/data/broker/store:/root/store \ -v /data/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \ -e "NAMESRV_ADDR=rmqnamesrv:9876" \ -e "MAX_POSSIBLE_HEAP=200000000" \ rocketmqinc/rocketmq sh mqbroker autoCreateTopicEnable=true -c /opt/rocketmq-4.4.0/conf/broker.conf
构建并启动 控制台 容器
- 构建并启动 控制台 容器
docker run --name rmqconsole \ --restart=always \ --privileged=true \ -p 8085:8080 \ --cpus 2 \ --memory 2048M \ --network rocketmq \ --ulimit nofile=1024:1024 \ -v /data/software/rocketmq/console:/tmp \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ -d styletang/rocketmq-console-ng
- 访问控制台界面地址: http://172.0.1.180:8085/
搭建完毕
至此 RocketMQ 便搭建完毕,应用程序接入走宿主机的 9876 端口即可。