docker部署单机版RocketMQ
docker部署单机版RocketMQ
RocketMQ生产环境部署一般需要对namesrv、console做集群部署,对broker做基于Raft【4.5版以后官方支持】 的集群+主备。
本次仅为演示单机版docker安装部署。
1. 安装rocketmq-namesrv
docker pull registry.cn-hangzhou.aliyuncs.com/huiwen/rocketmq-namesrv:4.3.2
docker tag registry.cn-hangzhou.aliyuncs.com/huiwen/rocketmq-namesrv:4.3.2 rocketmq-namesrv:4.3.2
docker rmi registry.cn-hangzhou.aliyuncs.com/huiwen/rocketmq-namesrv:4.3.2
docker run -d --net=host --name rocketmq-namesrv --restart=always \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx512m" \
-v /etc/localtime:/etc/localtime:ro \
-v /home/rocketmq/logs/:/opt/logs/rocketmqlogs/ \
rocketmq-namesrv:4.3.2
2. 安装rocketmq-broker
docker pull registry.cn-hangzhou.aliyuncs.com/huiwen/rocketmq-broker:4.3.2
docker tag registry.cn-hangzhou.aliyuncs.com/huiwen/rocketmq-broker:4.3.2 rocketmq-broker:4.3.2
docker rmi registry.cn-hangzhou.aliyuncs.com/huiwen/rocketmq-broker:4.3.2
docker cp rocketmq-namesrv:/opt/rocketmq-4.3.2/conf /home/rocketmq/conf
2.1 修改配置文件
vi /home/rocketmq/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 96
brokerRole = ASYNC_MASTER
flushDiskType = SYNC_FLUSH
brokerIP1=192.168.100.149
2.2 创建容器
docker run -d --net=host --name rocketmq-broker --restart=always \
-v /etc/localtime:/etc/localtime:ro \
-v /home/rocketmq/logs/:/opt/logs/rocketmqlogs/ \
-v /home/rocketmq/data/:/opt/store/ \
-v /home/rocketmq/conf/broker.conf:/opt/rocketmq-4.3.2/conf/broker.conf \
-e "NAMESRV_ADDR=192.168.100.149:9876" \
-e "JAVA_OPT= -Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms1024m -Xmx3072m -XX:MaxDirectMemorySize=3072m" \
rocketmq-broker:4.3.2 \
/opt/rocketmq-4.3.2/bin/mqbroker \
-c /opt/rocketmq-4.3.2/conf/broker.conf
3. 安装Rocketmq-console
这边为了配合之前的nginx统一管理,使用了Rocketmq-console-nginx,大家自己安装可以使用RocketMQ Dashboard
mkdir -p /home/rc/conf &&
mkdir -p /home/rc/logs
tee /home/rc/conf/logback.xml <<-'EOF'
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ}] %5p %m%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/logs/consolelogs/rocketmq-console.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>/logs/consolelogs/rocketmq-console.%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>5</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ}] %5p %m%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<root level="ERROR">
<appender-ref ref="FILE"/>
</root>
</configuration>
EOF
# 创建容器
docker run -d --name rc --net=host --restart=always \
-v /home/rc/conf/logback.xml:/logback.xml \
-v /home/rc/logs/:/logs/consolelogs/ \
-e "JAVA_OPTS=-Xmx1024m -Drocketmq.namesrv.addr=192.168.100.149:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-e "server.port=9877" \
-e "server.contextPath=/rc" \
-e "logging.config=/logback.xml" \
styletang/rocketmq-console-ng:1.0.0
4. 创建TOPIC
# 进入rocketmq-broker容器的sh
docker exec -it rocketmq-broker sh
# 创建topic
cd bin &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestnotificationState -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtestdingding_10ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtestemail_10ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtestsms_10ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtestweixin_10ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtestdingding_0ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtestemail_0ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtestsms_0ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtestweixin_0ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestdingding_10 -w 16 -r 16 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestemail_10 -w 16 -r 16 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestsms_10 -w 16 -r 16 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestweixin_10 -w 16 -r 16 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestdingding_0 -w 4 -r 4 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestemail_0 -w 4 -r 4 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestsms_0 -w 4 -r 4 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtestweixin_0 -w 4 -r 4 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtesthttp_10ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t %DLQ%hwtesthttp_0ConsumerGroup -w 1 -r 1 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtesthttp_10 -w 16 -r 16 &&
sh mqadmin updateTopic -b localhost:10911 -t hwtesthttp_0 -w 4 -r 4
5. 验证
https://192.168.100.149:9443/rc/#/topic