【RocketMQ】005-Docker 部署 RocketMQ

【RocketMQ】005-Docker 部署 RocketMQ

一、部署

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,别忘记开端口!

image-20230712202335069

三、其他

参考文章:

docker部署RocketMQ

https://blog.csdn.net/SmallCat0912/article/details/128535930

猜你喜欢

转载自blog.csdn.net/qq_29689343/article/details/131689776