【RocketMQ】005-Docker 部署 RocketMQ
文章目录
- 【RocketMQ】005-Docker 部署 RocketMQ
- 一、部署
- 1、拉取镜像
- MQ 镜像
- 可视化平台镜像
- 2、创建挂载目录
- 创建 nameserver 挂载目录
- 创建 broker 目录
- 创建 broker 配置文件目录
- 3、编辑配置文件
- 4、启动服务
- 启动 nameserver
- 启动 broker
- 启动可视化平台
- 二、访问界面
- 三、其他
一、部署
1、拉取镜像
MQ 镜像
docker pull rocketmqinc/rocketmq:latest
可视化平台镜像
docker pull styletang/rocketmq-console-ng:latest
2、创建挂载目录
创建 nameserver 挂载目录
mkdir -p /home/zibo/docker/rocketmq/data/namesrv/logs /home/zibo/docker/rocketmq/data/namesrv/store
创建 broker 目录
mkdir -p /home/zibo/docker/rocketmq/data/broker/logs /home/zibo/docker/rocketmq/data/broker/store
创建 broker 配置文件目录
mkdir -p /home/zibo/docker/rocketmq/data/conf
3、编辑配置文件
目录:/home/zibo/docker/rocketmq/data/conf
vim 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
# 设置broker节点所在服务器的ip地址,也就是centosOS7的服务ip
brokerIP1 = [ip地址]
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
4、启动服务
启动 nameserver
docker run -d --restart=always --name rocketmq_nameserver -p 9876:9876 -v /home/zibo/docker/rocketmq/data/namesrv/logs:/root/logs -v /home/zibo/docker/rocketmq/data/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
docker run
: 这是Docker命令,用于创建和管理Docker容器。-d
: 这是一个选项,指示Docker在后台运行容器。--restart=always
: 这是一个选项,指示Docker容器在退出时总是重新启动。--name rocketmq_nameserver
: 这是一个选项,用于为容器指定名称,这里将容器命名为"rocketmq_nameserver"。-p 9876:9876
: 这是一个选项,用于将主机的端口9876映射到容器的端口9876。RocketMQ的NameServer使用端口9876进行通信。-v /home/zibo/docker/rocketmq/data/namesrv/logs:/root/logs
: 这是一个选项,用于将主机上的目录/home/zibo/docker/rocketmq/data/namesrv/logs
挂载到容器中的/root/logs
目录。这样做是为了将NameServer的日志文件保存在主机上,方便查看和管理。-v /home/zibo/docker/rocketmq/data/namesrv/store:/root/store
: 这是一个选项,用于将主机上的目录/home/zibo/docker/rocketmq/data/namesrv/store
挂载到容器中的/root/store
目录。这样做是为了将NameServer存储的数据文件保存在主机上,以便持久化存储。-e "MAX_POSSIBLE_HEAP=100000000"
: 这是一个选项,用于设置环境变量。在这里,它设置了一个名为MAX_POSSIBLE_HEAP
的环境变量,并将其值设置为100000000。这个环境变量可以用来调整NameServer的堆内存大小。rocketmqinc/rocketmq
: 这是指定要使用的Docker镜像的名称。在这里,使用的是RocketMQ官方提供的镜像,该镜像用于运行RocketMQ。sh mqnamesrv
: 这是在容器中要运行的命令。它启动了RocketMQ的NameServer组件。
综上所述,该命令将创建一个名为"rocketmq_nameserver"的Docker容器,并在该容器中以后台模式运行RocketMQ的NameServer组件。容器会在后台持续运行,如果容器意外退出,Docker会自动重新启动容器。主机的9876端口映射到容器的9876端口,NameServer的日志和数据文件将存储在主机的相应目录中。通过设置环境变量,可以调整NameServer的堆内存大小。使用的是RocketMQ官方提供的镜像来运行容器。
启动 broker
docker run -d --restart=always --name rocketmq_broker --link rocketmq_nameserver:namesrv -p 10911:10911 -p 10909:10909 -v /home/zibo/docker/rocketmq/data/broker/logs:/root/logs -v /home/zibo/docker/rocketmq/data/broker/store:/root/store -v /home/zibo/docker/rocketmq/data/conf/broker.conf:/opt/rocketmqinc/rocketmq/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmqinc/rocketmq/conf/broker.conf
docker run
: 这是Docker命令,用于创建和管理Docker容器。-d
: 这是一个选项,指示Docker在后台运行容器。--restart=always
: 这是一个选项,指示Docker容器在退出时总是重新启动。--name rocketmq_broker
: 这是一个选项,用于为容器指定名称,这里将容器命名为"rocketmq_broker"。--link rocketmq_nameserver:namesrv
: 这是一个选项,用于将容器与另一个容器rocketmq_nameserver
进行链接。这样可以让Broker容器知道NameServer的位置。-p 10911:10911 -p 10909:10909
: 这是选项,用于将主机的端口10911和10909映射到容器的端口10911和10909。RocketMQ的Broker使用这些端口进行通信。-v /home/zibo/docker/rocketmq/data/broker/logs:/root/logs
: 这是一个选项,用于将主机上的目录/home/zibo/docker/rocketmq/data/broker/logs
挂载到容器中的/root/logs
目录。这样做是为了将Broker的日志文件保存在主机上,方便查看和管理。-v /home/zibo/docker/rocketmq/data/broker/store:/root/store
: 这是一个选项,用于将主机上的目录/home/zibo/docker/rocketmq/data/broker/store
挂载到容器中的/root/store
目录。这样做是为了将Broker存储的数据文件保存在主机上,以便持久化存储。-v /home/zibo/docker/rocketmq/data/conf/broker.conf:/opt/rocketmqinc/rocketmq/conf/broker.conf
: 这是一个选项,用于将主机上的/home/zibo/docker/rocketmq/data/conf/broker.conf
文件挂载到容器中的/opt/rocketmqinc/rocketmq/conf/broker.conf
路径。这样做是为了将自定义的Broker配置文件挂载到容器中。-e "NAMESRV_ADDR=namesrv:9876"
: 这是一个选项,用于设置环境变量。它设置了一个名为NAMESRV_ADDR
的环境变量,并将其值设置为namesrv:9876
。这个环境变量用于告知Broker容器NameServer的地址和端口。-e "MAX_POSSIBLE_HEAP=200000000"
: 这是一个选项,用于设置环境变量。它设置了一个名为MAX_POSSIBLE_HEAP
的环境变量,并将其值设置为200000000。这个环境变量可以用来调整Broker的堆内存大小。rocketmqinc/rocketmq
: 这是指定要使用的Docker镜像的名称。在这里,使用的是RocketMQ官方提供的镜像,该镜像用于运行RocketMQ。sh mqbroker -c /opt/rocketmqinc/rocketmq/conf/broker.conf
: 这是在容器中要运行的命令。它启动了RocketMQ的Broker组件,并指定了配置文件/opt/rocketmqinc/rocketmq/conf/broker.conf
。
综上所述,该命令将创建一个名为"rocketmq_broker"的Docker容器,并在该容器中以后台模式运行RocketMQ的Broker组件。容器会在后台持续运行,如果容器意外退出,Docker会自动重新启动容器。主机的10911和10909端口映射到容器的10911和10909端口,Broker的日志和数据文件将存储在主机的相应目录中。通过设置环境变量,可以配置Broker连接到NameServer的地址和端口,以及调整Broker的堆内存大小。使用的是RocketMQ官方提供的镜像来运行容器,并指定了自定义的Broker配置文件。
启动可视化平台
docker run -d --restart=always --name rocketmq_console -e "JAVA_OPTS=-Drocketmq.namesrv.addr=[nameserver的ip]:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 9877:8080 styletang/rocketmq-console-ng
docker run
: 这是Docker命令,用于创建和管理Docker容器。-d
: 这是一个选项,指示Docker在后台运行容器。--restart=always
: 这是一个选项,指示Docker容器在退出时总是重新启动。--name rocketmq_console
: 这是一个选项,用于为容器指定名称,这里将容器命名为"rocketmq_console"。-e "JAVA_OPTS=-Drocketmq.namesrv.addr=[nameserver的ip]:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
: 这是一个选项,用于设置环境变量。在这里,设置了一个名为JAVA_OPTS
的环境变量,其中包含了两个参数:-Drocketmq.namesrv.addr=[nameserver的ip]:9876
:这个参数用于指定RocketMQ控制台连接的NameServer的地址和端口。你需要将[nameserver的ip]
替换为实际的NameServer的IP地址。-Dcom.rocketmq.sendMessageWithVIPChannel=false
:这个参数用于禁用VIP通道发送消息。
-p 9877:8080
: 这是一个选项,用于将主机的端口9877映射到容器的端口8080。RocketMQ控制台使用8080端口进行访问。styletang/rocketmq-console-ng
: 这是指定要使用的Docker镜像的名称。在这里,使用的是RocketMQ控制台(Console)的镜像。
综上所述,该命令将创建一个名为"rocketmq_console"的Docker容器,并在该容器中以后台模式运行RocketMQ控制台。容器会在后台持续运行,如果容器意外退出,Docker会自动重新启动容器。RocketMQ控制台将连接到指定的NameServer,你需要将[nameserver的ip]
替换为实际的NameServer的IP地址。控制台将通过主机的9877端口进行访问,映射到容器的8080端口。使用的是RocketMQ控制台(Console)的镜像来运行容器。
二、访问界面
ip:9877,别忘记开端口!
三、其他
参考文章:
docker部署RocketMQ
https://blog.csdn.net/SmallCat0912/article/details/128535930