一、机器配置
ECS类型 | 机器配置 | 机器数量 | 费用预算 |
---|---|---|---|
ecs.ic5.large | 2C-2G-40G-20G | 3台(后续可以横向扩容) | 5845元 |
节点列表
服务器 | 名称 | IP | 角色 | Port |
public-service-za-node-1 | NameServer-1 | 10.4.0.37 | 注册服务中心 | 9876 |
public-service-zb-node-1 | NameServer-2 | 10.4.0.43 | 注册服务中心 | 9876 |
public-service-zc-node-1 | NameServer-3 | 10.4.0.80 | 注册服务中心 | 9876 |
public-service-za-node-1 | Broker-Master-1 | 10.4.0.37 | Master | 9877 |
public-service-zb-node-1 | Broker-Master-2 | 10.4.0.43 | Master | 9877 |
public-service-zc-node-1 | Broker-Master-3 | 10.4.0.80 | Master | 9877 |
二、部署方案
- za-node-1服务器上下载RocketMQ bin文件: https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-bin-release.zip
- 安装RocketMQ应用
#mkdir -p /opt/rocketmq && mkdir -p /data/rocketmq
#yum install -y unzip
#cd /opt/rocketmq && unzip rocketmq-all-4.6.0-bin-release.zip
#mv rocketmq-all-4.6.0-bin-release rocketmq-all-4.6.0
#cd rocketmq-all-4.6.0
- 配置RocketMQ
#cd /opt/rocketmq/rocketmq-all-4.6.0/bin
#vi runbroker.sh ,将JAVA_OPTS修改
-server -Xms1g -Xmx1g -Xmn512m
#vi runserver.sh ,将JAVA_OPTS修改
-server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=320m
#vi tools.sh ,将JAVA_OPTS修改
-server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=128m
#cd /opt/rocketmq/rocketmq-all-4.6.0/conf/3m-noslave
#vi broker-master-a.properties ,其它两个节点的配置文件把brokerName和brokerIP1改一下就可以了
-
brokerClusterName=RocketMQCluster brokerName=broker-a brokerId=0 brokerRole=SYNC_MASTER flushDiskType=ASYNC_FLUSH listenPort=9877 namesrvAddr=10.4.0.37:9876;10.4.0.43:9876;10.4.0.80:9876 defaultTopicQueueNums=4 autoCreateTopicEnable=true autoCreateSubscriptionGroup=true brokerIP1=10.4.0.37 storePathRootDir=/data/rocketmq/data-master-a/store storePathCommitLog=/data/rocketmq/data-master-a/store/commitlog storePathConsumerQueue=/data/rocketmq/data-master-a/store/consumequeue storePathIndex=/data/rocketmq/data-master-a/store/index storeCheckpoint=/data/rocketmq/data-master-a/store/checkpoint abortFile=/data/rocketmq/data-master-a/store/abort deleteWhen=04 fileReservedTime=120 mapedFileSizeCommitLog=1073741824 mapedFileSizeConsumeQueue=300000 diskMaxUsedSpaceRatio=80 enablePropertyFilter=true autoCreateTopicEnable=true autoCreateSubscriptionGroup=true
-
- #vi broker-master-b.properties
- #vi broker-master-c.properties
- 在zb-node-1,zc-node-1上创建目录/opt/rocketmq,并从za-node-1上将整个rocketmq-all-4.6.0目录拷贝到新建的目录下
- 在za-node-1节点上创建数据存储目录
#mkdir -p /data/rocketmq/data-master-a/store/commitlog
#mkdir -p /data/rocketmq/data-master-a/store/consumequeue
#mkdir -p /data/rocketmq/data-master-a/store/runlog
#mkdir -p /data/rocketmq/nameserver-a/runlog
- 在zb-node-1节点上创建数据存储目录
mkdir -p /data/rocketmq/data-master-b/store/commitlog
mkdir -p /data/rocketmq/data-master-b/store/consumequeue
mkdir -p /data/rocketmq/data-master-b/store/runlog
mkdir -p /data/rocketmq/nameserver-b/runlog
- 在zc-node-1节点上创建数据存储目录
mkdir -p /data/rocketmq/data-master-c/store/commitlog
mkdir -p /data/rocketmq/data-master-c/store/consumequeue
mkdir -p /data/rocketmq/data-master-c/store/runlog
mkdir -p /data/rocketmq/nameserver-c/runlog
- 启动nameServer
在za-node-1节点上运行
#nohup /opt/rocketmq/rocketmq-all-4.6.0/bin/mqnamesrv > /data/rocketmq/nameserver-a/runlog/runlog.namesrvrun.log 2>&1 &
在zb-node-1节点上运行
#nohup /opt/rocketmq/rocketmq-all-4.6.0/bin/mqnamesrv > /data/rocketmq/nameserver-b/runlog/runlog.namesrvrun.log 2>&1 &
在zc-node-1节点上运行
#nohup /opt/rocketmq/rocketmq-all-4.6.0/bin/mqnamesrv > /data/rocketmq/nameserver-c/runlog/runlog.namesrvrun.log 2>&1 &
- 启动broker-master
在za-node-1节点上运行
#nohup /opt/rocketmq/rocketmq-all-4.6.0/bin/mqbroker -c /opt/rocketmq/rocketmq-all-4.6.0/conf/3m-noslave/broker-master-a.properties > /data/rocketmq/data-master-a/store/runlog/brokersvrrun.log 2>&1 &
在zb-node-1节点上运行
#nohup /opt/rocketmq/rocketmq-all-4.6.0/bin/mqbroker -c /opt/rocketmq/rocketmq-all-4.6.0/conf/3m-noslave/broker-master-b.properties > /data/rocketmq/data-master-a/store/runlog/brokersvrrun.log 2>&1 &
在zc-node-1节点上运行
#nohup /opt/rocketmq/rocketmq-all-4.6.0/bin/mqbroker -c /opt/rocketmq/rocketmq-all-4.6.0/conf/3m-noslave/broker-master-b.properties > /data/rocketmq/data-master-b/store/runlog/brokersvrrun.log 2>&1 &
- 部署rocketmq管理界面
- docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=10.4.0.37:9876;10.4.0.43:9876;10.4.0.80:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng
下面brocker-c的消息数量为0,是因为我重启了broker-c
三、集群扩展
集群的NameServer可以使用同样步骤启动任意数量的实例,
集群的Broker-master也可以部署更多,配置文件把名字改一下就可以
四、验证集群
登录其中一个节点
# export NAMESRV_ADDR=10.4.0.37:9876
# cd /opt/rocketmq/rocketmq-all-4.6.0/bin
# ./tools.sh org.apache.rocketmq.example.quickstart.Producer #产生消息
#./tools.sh org.apache.rocketmq.example.quickstart.Consumer #消费消息