1.说明
RocketMq采用的是Dledger 的部署模式,需要三台机器,三台机器部署三个Nameserver,9个Broker,每3个broker形成一个组,通过选举选出master,当单机宕机后重新自动选举master,不影响业务正常使用。 假设有三台机器,IP分别为:192.168.50.18,192.168.50.245,192.168.50.9
| 机器 | 部署服务 | 配置文件 | |
|---|---|---|---|
| A | NameServer Broker集群 | broker-n0.properties broker-n5.properties broker-n7.properties | 192.168.50.18 |
| B | NameServer Broker集群 | broker-n2.properties broker-n4.properties broker-n6.properties | 192.168.50.245 |
| C | NameServer Broker集群 | broker-n1.properties broker-n3.properties broker-n8.properties | 192.168.50.9 |
2. 配置文件处理
配置文件中需要修改的是IP,根据机器分布自行修改对应IP,建议使用统一替换。
需要更改的是brokerIP1、namesrvAddr、dLegerPeers中的IP。 配置文件移动
mkdir -p /home/rocketmq/config && cp -r /home/HA/rocketmq/conf/* /home/rocketmq/config/
3.NameServer安装
A、B、C三台机器执行如下命令:
docker run -d \
--restart=always \
--name rmqnamesrv \
--privileged=true \
-p 10111:9876 \
-v /etc/localtime:/etc/localtime \
-v /home/rocketmq/logs:/home/rocketmq/logs \
-v /home/rocketmq/store:/home/rocketmq/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
-e "JAVA_OPT_EXT=-server -Xms1g -Xmx1g" \
apache/rocketmq:4.9.7 \
sh mqnamesrv
4.Broker安装
三台机器执行如下命令,创建rocketmq用户与用户组
groupadd rocketmq && useradd -g rocketmq rocketmq && groupmod -g 3000 rocketmq && usermod -u 3000 rocketmq
创建rocketmq工作目录
for ((i=0; i<=8; i++))
do
mkdir -p /home/rocketmq/broker-n${i}/logs
mkdir -p /home/rocketmq/broker-n${i}/store
done
文件给rocketmq权限
chown -R rocketmq:rocketmq /home/rocketmq
A(50.18)机器需要启动3个容器,使用的配置文件分别为n0、n5、n7,则对应命令如下:
cd /home/HA/rocketmq/shell/ && sh install-n0.sh && sh install-n5.sh && sh install-n7.sh
B(50.245)机器需要启动3个容器,使用的配置文件分别为n2、n4、n6,则对应命令如下:
cd /home/HA/rocketmq/shell && sh install-n2.sh && sh install-n4.sh && sh install-n6.sh
C(50.9)机器需要启动3个容器,使用的配置文件分别为n1、n3、n8,则对应命令如下:
cd /home/HA/rocketmq/shell && sh install-n1.sh && sh install-n3.sh && sh install-n8.sh
5.rocketmq-console
修改为真实Ip,执行如下命令
docker run -d \
--name rmqconsole \
-v /etc/localtime:/etc/localtime:ro \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.50.18:10111;192.168.50.245:10111;192.168.50.9:10111 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 18080:8080 -t styletang/rocketmq-console-ng
访问ip:18080 进入console页面
最终安装完成后,在console可以看到