CentOS7 Docker安装RocketMQ5.0.0(集群版)

CentOS 运维避坑实战

CentOS7.9 安装 Python3.8.16 后 yum 报错,快速修复方案

前言:

部署问题:CentOS7 Docker安装RocketMQ5.2.0(集群版)-CSDN博客
降低版本至RocketMQ5.0.0


机器1 namesrv-a

创建在宿主机的日志映射目录,启动

sudo mkdir -p /home/rocketmq/namesrv-a/logs &&
sudo chmod -R 777 /home/rocketmq &&
docker run -d \
  --name namesrv-a \
  --restart=always \
  --network host \
  -p 9876:9876 \
  -v /home/rocketmq/namesrv-a/logs:/home/rocketmq/logs \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  -e "MAX_POSSIBLE_HEAP=100000000" \
  apache/rocketmq:5.0.0 \
  sh mqnamesrv

验证NameServer启动,The Name Server boot success

docker logs namesrv-a

机器2 namesrv-b

sudo mkdir -p /home/rocketmq/namesrv-b/logs &&
sudo chmod -R 777 /home/rocketmq &&
docker run -d \
  --name namesrv-b \
  --restart=always \
  --network host \
  -p 9876:9876 \
  -v /home/rocketmq/namesrv-b/logs:/home/rocketmq/logs \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  -e "MAX_POSSIBLE_HEAP=100000000" \
  apache/rocketmq:5.0.0 \
  sh mqnamesrv
docker logs namesrv-b

机器1 broker-a

创建broker配置文件、数据存储路径、日志目录

mkdir -p  /home/rocketmq/broker-a/conf   &&
mkdir -p  /home/rocketmq/broker-a/store  &&
mkdir -p  /home/rocketmq/broker-a/logs   &&
sudo chmod -R 777 /home/rocketmq &&
sudo vi /home/rocketmq/broker-a/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = SYNC_MASTER
flushDiskType = SYNC_FLUSH
autoCreateTopicEnable=true
brokerIP1 = 192.168.10.100
namesrvAddr=192.168.10.100:9876;192.168.10.101:9876
listenPort=10911
haListenPort=10912  # 主从同步端口

启动Broker容器:

docker run -d \
  --name broker-a \
  --restart=always \
  --network host \
  -p 10911:10911 -p 10912:10912 \
  -v /home/rocketmq/broker-a/conf/broker.conf:/home/rocketmq/rocketmq-5.0.0/conf/broker.conf \
  -v /home/rocketmq/broker-a/store:/home/rocketmq/store \
  -v /home/rocketmq/broker-a/logs:/home/rocketmq/logs \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  -e "MAX_POSSIBLE_HEAP=200000000" \
  apache/rocketmq:5.0.0 \
  sh mqbroker -c /home/rocketmq/rocketmq-5.0.0/conf/broker.conf
docker logs broker-a

机器2 broker-a-s

创建broker配置文件、数据存储路径、日志目录

mkdir -p  /home/rocketmq/broker-a-s/conf  &&
mkdir -p  /home/rocketmq/broker-a-s/store &&
mkdir -p  /home/rocketmq/broker-a-s/logs  &&
sudo chmod -R 777 /home/rocketmq &&
sudo vi /home/rocketmq/broker-a-s/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 1
brokerRole = SLAVE
brokerIP1 = 192.168.10.101
namesrvAddr=192.168.10.100:9876;192.168.10.101:9876
autoCreateTopicEnable=true
listenPort=11011

启动Broker容器:

docker run -d \
  --name broker-a-s \
  --restart=always \
  --network host \
  -p 11011:11011 \
  -v /home/rocketmq/broker-a-s/conf/broker.conf:/home/rocketmq/rocketmq-5.0.0/conf/broker.conf \
  -v /home/rocketmq/broker-a-s/store:/home/rocketmq/store \
  -v /home/rocketmq/broker-a-s/logs:/home/rocketmq/logs \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  -e "MAX_POSSIBLE_HEAP=200000000" \
  apache/rocketmq:5.0.0 \
  sh mqbroker -c /home/rocketmq/rocketmq-5.0.0/conf/broker.conf
docker logs broker-a-s

机器2 broker-b

创建broker配置文件、数据存储路径、日志目录

mkdir -p  /home/rocketmq/broker-b/conf   &&
mkdir -p  /home/rocketmq/broker-b/store  &&
mkdir -p  /home/rocketmq/broker-b/logs   &&
sudo chmod -R 777 /home/rocketmq &&
sudo vi /home/rocketmq/broker-b/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = SYNC_MASTER
flushDiskType = SYNC_FLUSH
autoCreateTopicEnable=true
brokerIP1 = 192.168.10.101
namesrvAddr=192.168.10.100:9876;192.168.10.101:9876
listenPort=10911
haListenPort=10912  # 主从同步端口

启动Broker容器:

docker run -d \
  --name broker-b \
  --restart=always \
  --network host \
  -p 10911:10911 -p 10912:10912 \
  -v /home/rocketmq/broker-b/conf/broker.conf:/home/rocketmq/rocketmq-5.0.0/conf/broker.conf \
  -v /home/rocketmq/broker-b/store:/home/rocketmq/store \
  -v /home/rocketmq/broker-b/logs:/home/rocketmq/logs \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  -e "MAX_POSSIBLE_HEAP=200000000" \
  apache/rocketmq:5.0.0 \
  sh mqbroker -c /home/rocketmq/rocketmq-5.0.0/conf/broker.conf
docker logs broker-b

机器1 broker-b-s

创建broker配置文件、数据存储路径、日志目录

mkdir -p  /home/rocketmq/broker-b-s/conf  &&
mkdir -p  /home/rocketmq/broker-b-s/store &&
mkdir -p  /home/rocketmq/broker-b-s/logs  &&
sudo chmod -R 777 /home/rocketmq &&
sudo vi /home/rocketmq/broker-b-s/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 1
brokerRole = SLAVE
brokerIP1 = 192.168.10.100
namesrvAddr=192.168.10.100:9876;192.168.10.101:9876
autoCreateTopicEnable=true
listenPort=11011

启动Broker容器:

docker run -d \
  --name broker-b-s \
  --restart=always \
  --network host \
  -p 11011:11011 \
  -v /home/rocketmq/broker-b-s/conf/broker.conf:/home/rocketmq/rocketmq-5.0.0/conf//broker.conf \
  -v /home/rocketmq/broker-b-s/store:/home/rocketmq/store \
  -v /home/rocketmq/broker-b-s/logs:/home/rocketmq/logs \
  -v /etc/localtime:/etc/localtime:ro \
  -e "MAX_POSSIBLE_HEAP=200000000" \
  apache/rocketmq:5.0.0 \
  sh mqbroker -c /home/rocketmq/rocketmq-5.0.0/conf/broker.conf
docker logs broker-b-s

Dashboard部署

在任意一台机器上启动Dashboard:

docker run -d --name rmqconsole \
--restart=always \
--network host \
-p 8080:8080 \
-v /home/rocketmq/rmqconsole/data:/tmp/rocketmq-console/data \
-v /etc/localtime:/etc/localtime:ro \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.10.100:9876;192.168.10.101:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.loginRequired=false" \
apacherocketmq/rocketmq-dashboard:latest

查看日志

docker logs -f rmqconsole

消息测试

机器1生产、消费消息

docker exec -it namesrv-a sh mqadmin sendMessage -n "192.168.10.100:9876;192.168.10.101:9876" -t TestTopic -p "Test message"
docker exec -it namesrv-a sh mqadmin consumeMessage -n "192.168.10.100:9876;192.168.10.101:9876" -t TestTopic -g TestGroup

机器2生产、消费消息

docker exec -it namesrv-b sh mqadmin sendMessage -n "192.168.10.100:9876;192.168.10.101:9876" -t TestTopic -p "Test message"
docker exec -it namesrv-b sh mqadmin consumeMessage -n "192.168.10.100:9876;192.168.10.101:9876" -t TestTopic -g TestGroup

故障测试

停止一个NameServer

docker stop namesrv-a

停止一个主Broker主节点

  1. 验证消息收发是否正常,
  2. 验证备节点是否自动接管
  3. 通过Dashboard观察状态变化
docker stop broker-a

出现的问题

问题1 目前重启broker的节点后,这个dashboard显示生产数据为0

经测试还是能正常消费,说明信息还在,应该还是dashboard查询的问题

问题2 使用docker安装的最新版本dashboard这里不能显示

我们去官方下载2.0.0Release稳定版本的源码

下载 | RocketMQ

使用源码部署后,这里就能看到了

CentOS 运维避坑实战

CentOS7.9 安装 Python3.8.16 后 yum 报错,快速修复方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值