使用docker搭建RocketMQ(非集群搭建官方镜像)

之前在使用 RocketMQ 官方的包在搭建的时候,发现好多问题,什么修改内存大小,然后启动 broker 报错,类似 service not available now, maybe disk full 等等… 最后决定还是重新用 docker 搭建下,感觉这样子玩坏了,可以直接把容器干掉,重新启动一个新的容器,毕竟是在学习阶段,这样子快好多。

废话不多说,现在开始搭建。

具体搭建流程

前提说明,由于之前使用非 docker 搭建的时候会出现各种内存不足的情况(因为那个虚拟机上面还搭建了其他好多东西),所以这次我是新创建了一个虚拟机,专门用来搭建 RocketMQ。
使用docker搭建RocketMQ(非集群搭建官方镜像)_第1张图片

第一步:下载官方镜像

可以去官网看下最新的镜像 apache/rocketmq Tags | Docker Hub, 我这里使用的是最新的。

docker pull apache/rocketmq

使用docker搭建RocketMQ(非集群搭建官方镜像)_第2张图片

第二步:部署 NameServer

创建挂载文件夹

# 日志目录
mkdir /apps/rocketmq/nameserver/logs -p
# 保存路劲
mkdir /apps/rocketmq/nameserver/store -p

设置权限

# 777 文件所属者、文件所属组和其他人有读取 & 写入 & 执行全部权限。rwxrwxrwx
chmod 777 -R /apps/rocketmq/nameserver/*

启动 namesrv 容器

docker run -d \
--privileged=true \
--name rmqnamesrv \
-p 9876:9876 \
-v /apps/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /apps/rocketmq/nameserver/store:/root/store \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
-e "MAX_POSSIBLE_HEAP=100000000" \
apache/rocketmq sh mqnamesrv

第三步:部署 broker

创建挂载文件夹

# 创建需要的挂载目录
mkdir /apps/rocketmq/broker/logs -p \
mkdir /apps/rocketmq/broker/data -p \
mkdir /apps/rocketmq/broker/store -p \
mkdir /apps/rocketmq/broker/conf -p

设置权限

# 777 文件所属者、文件所属组和其他人有读取 & 写入 & 执行全部权限。rwxrwxrwx
chmod 777 -R /apps/rocketmq/broker/*

创建 broker.conf

vi /apps/rocketmq/broker/conf/broker.conf

添加以下配置信息到 broker.conf,这里不对参数做过多的说明,在下面Broker配置详解中有对Broker常用参数做详细介绍:
下面需要修改对应的 brokerIP1 地址!!!

# 集群名称
brokerClusterName=DefaultCluster
# 节点名称
brokerName=broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId=0
# Broker服务地址    String    内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1=192.168.148.129
# Broker角色
brokerRole=ASYNC_MASTER
# 刷盘方式
flushDiskType=ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen=04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime=72
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95

启动 broker

docker run -d \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /apps/rocketmq/broker/logs:/root/logs \
-v /apps/rocketmq/broker/store:/root/store \
-v /apps/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-e "MAX_POSSIBLE_HEAP=200000000" \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
-e "NAMESRV_ADDR=namesrv:9876" \
apache/rocketmq \
sh mqbroker -c /home/rocketmq/broker.conf

最后一行参数说明

  • sh mqbroker -c /home/rocketmq/broker.conf 启动 broker 服务 使用自定义配置文件。

到此,RocketMQ 就算搭建完了,下面我们来打个搭建一个监控看看。

第四步:搭建监控

下载镜像

docker pull apacherocketmq/rocketmq-dashboard:latest

启动容器

这里地址是我们上面对应的 nameserver 所在机器的 IP

docker run -p 8087:8080 --name rocketmq-console -d \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.148.129:9876" \
-t apacherocketmq/rocketmq-dashboard

最后搞完的截图
使用docker搭建RocketMQ(非集群搭建官方镜像)_第3张图片

你可能感兴趣的:(RocketMQ,docker,docker,java-rocketmq,rocketmq)