前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rocketmq-5:生产级rocketmq集群部署

rocketmq-5:生产级rocketmq集群部署

作者头像
千里行走
发布2019-09-19 16:09:57
1.9K0
发布2019-09-19 16:09:57
举报
文章被收录于专栏:千里行走

本文主要讲述:

生产级的rocketmq消息集群的部署。

(1).集群形式

(2).源码编译

(3).生产级硬件资源与节点拓扑

(4).namersrv节点部署

(5).broker节点部署

(6).rocketmq-console后台部署

(7).rocketmq相关文章

(1).集群形式

集群形式:2m-2s-2namesrv;2个master,2个slave,2个namesrv。

主从方式:async

刷盘方式:异步。

(2).源码编译

下载地址:https://github.com/apache/rocketmq/releases

wget https://github.com/apache/rocketmq/archive/rocketmq-all-4.3.2.tar.gz

官方github提供的是源码需要下载后进行编译;

tar -xzvf rocketmq-all-4.3.2-source-release.tar.gz

cd rocketmq-all-4.3.2

mvn -Prelease-all -DskipTests clean install -U

cd distribution/target/apache-rocketmq

apache-rocketmq.tar.gz就是编译后的rocketmq包,将这个包传到要部署的各个机器。

使用python开一个web服务同步文件:

python -m SimpleHTTPServer 8077

(3).生产级硬件资源与节点拓扑

硬件资源&部署拓扑:

4台4核8G的机器,阿里云型号是ecs.sn1ne.xlarge。

rocketmq-c1-broker000:

开6G部署master-0

/app/3rd/apache-rocketmq-broker-master-0

rocketmq-c1-broker001:

开4G部署slave-0, 开2G部署namesrv

/app/3rd/apache-rocketmq-broker-slave-0

/app/3rd/apache-rocketmq-namesrv-0

rocketmq-c1-broker002:

开6G部署master-1

/app/3rd/apache-rocketmq-broker-master-1

rocketmq-c1-broker003:

开4G部署slave-1, 开2G部署namesrv

/app/3rd/apache-rocketmq-broker-slave-1

/app/3rd/apache-rocketmq-namesrv-1

修改JDK,使用JDK1.8。

修改消息罗盘位置,注意要保证这个目录位于SSD盘:

mkdir -p /data/inc/rocketmq-c1-store/data

修改消息罗盘位置,注意要保证这个目录位于SSD盘:

mkdir -p /data/inc/logs/rocketmq-broker/

mkdir -p /data/inc/logs/rocketmq-namesrv/

vi /app/3rd/apache-rocketmq/conf/2m-2s-async/broker-a.properties

(4).namersrv节点部署

1.JDK改为1.8

2.修改JVM参数:

/app/3rd/apache-rocketmq/bin/runserver.sh

原值:

-Xloggc:/dev/shm/rmq_srv_gc.log

-Xms4g -Xmx4g -Xmn2g

改为:

-Xloggc:/data/inc/logs/rocketmq-namesrv/rmq_srv_gc.log

-Xms2g -Xmx2g -Xmn1g

3.替换日志路径:

/app/3rd/apache-rocketmq/conf/logback_namesrv.xml

替换命令:注意要建立新目录:/data/inc/logs/rocketmq-namesrv

%s/\${user\.home}\/logs\/rocketmqlogs/\/data\/inc\/logs\/rocketmq-namesrv/g

4.启动:

nohup /app/3rd/apache-rocketmq-namesrv-0/bin/mqnamesrv > /data/inc/logs/rocketmq-namesrv/nohup-namesrv.out &

nohup /app/3rd/apache-rocketmq-namesrv-1/bin/mqnamesrv > /data/inc/logs/rocketmq-namesrv/nohup-namesrv.out &

(5).broker节点部署

1.JDK改为1.8

2.修改broker的JVM的内存,原值太大。

/app/3rd/apache-rocketmq/bin/runbroker.sh

原值:

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

-XX:MaxDirectMemorySize=15g

-Xloggc:/dev/shm/mq_gc_%p.log

改为:

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g"

-XX:MaxDirectMemorySize=2g

-Xloggc:/data/inc/logs/rocketmq-broker/mq_gc_%p.log

3.替换日志路径:

/app/3rd/apache-rocketmq/conf/logback_broker.xml

%s/\${user\.home}\/logs\/rocketmqlogs/\/data\/inc\/logs\/rocketmq-broker/g

4.2m-2s-async/*.properties需要增加的配置:

#nameServer地址,分号分割

namesrvAddr=rocketmq-c1-namesrv001.inc-inc.com:9876;rocketmq-c1-namesrv002.inc-inc.com:9876

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

autoCreateTopicEnable=false

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭

autoCreateSubscriptionGroup=false

#存储路径

storePathRootDir=/data/inc/rocketmq-c1-store/data

#commitLog 存储路径

storePathCommitLog=/data/inc/rocketmq-c1-store/data/commitlog

#消费队列存储路径存储路径

storePathConsumeQueue=/data/inc/rocketmq-c1-store/data/consumequeue

#消息索引存储路径

storePathIndex=/data/inc/rocketmq-c1-store/data/index

#checkpoint 文件存储路径

storeCheckpoint=/data/inc/rocketmq-c1-store/data/checkpoint

#abort 文件存储路径

abortFile=/data/inc/rocketmq-c1-store/data/abort

数据保存在目录${rootpath}/consumequeue下面,rootpath 通过配置项storePathRootDir指定,默认的是${user.home}/store。

启动命令:

nohup /app/3rd/apache-rocketmq-broker-master-0/bin/mqbroker -n 'rocketmq-c1-namesrv001.inc-inc.com:9876;rocketmq-c1-namesrv002.inc-inc.com:9876' -c /app/3rd/apache-rocketmq-broker-master-0/conf/2m-2s-async/broker-a.properties > /data/inc/logs/rocketmq-broker/nohup-broker.out &

nohup /app/3rd/apache-rocketmq-broker-slave-0/bin/mqbroker -n 'rocketmq-c1-namesrv001.inc-inc.com:9876;rocketmq-c1-namesrv002.inc-inc.com:9876' -c /app/3rd/apache-rocketmq-broker-slave-0/conf/2m-2s-async/broker-a-s.properties > /data/inc/logs/rocketmq-broker/nohup-broker.out &

nohup /app/3rd/apache-rocketmq-broker-master-1/bin/mqbroker -n 'rocketmq-c1-namesrv001.inc-inc.com:9876;rocketmq-c1-namesrv002.inc-inc.com:9876' -c /app/3rd/apache-rocketmq-broker-master-1/conf/2m-2s-async/broker-b.properties > /data/inc/logs/rocketmq-broker/nohup-broker.out &

nohup /app/3rd/apache-rocketmq-broker-slave-1/bin/mqbroker -n 'rocketmq-c1-namesrv001.inc-inc.com:9876;rocketmq-c1-namesrv002.inc-inc.com:9876' -c /app/3rd/apache-rocketmq-broker-slave-1/conf/2m-2s-async/broker-b-s.properties > /data/inc/logs/rocketmq-broker/nohup-broker.out &

如果不能启动,还没有任何日志,请check store目录是否有权限。

(6).rocketmq-console后台部署

下载:

git clone -b release-rocketmq-console-1.0.0 https://github.com/apache/rocketmq-externals.git

进入项目文件夹并修改配置文件(中文注释是我添加,为方便解释,请删除,不然打包报错)。

$ cd rocketmq-externals/rocketmq-console/

$ vi src/main/resources/application.properties

Name Server地址默认为空,注释说可以在启动项目后在后台配置,经测试,后台配置切换失败,有报错,所以打包前需修改配置文件明确给出Name Server地址,或者启动服务的时候给出rocketmq.config.namesrvAddr参数值。

修改4处

#管理后台访问上下文路径,默认为空,如果填写,一定要前面加“/”,后面不要加,否则启动报错

server.contextPath=/rocketmq-console修改

server.port=7000修改

#spring.application.index=true

spring.application.name=rocketmq-console

spring.http.encoding.charset=UTF-8

spring.http.encoding.enabled=true

spring.http.encoding.force=true

logging.config=classpath:logback.xml

#if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876

#Name Server地址,修改成你自己的服务地址

rocketmq.config.namesrvAddr=127.0.0.1:9870;127.0.0.1:9871;127.0.0.1:9872修改

#if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true

rocketmq.config.isVIPChannel=

#rocketmq-console's data path:dashboard/monitor

#rocketmq-console's data path:dashboard/monitor

rocketmq.config.dataPath=/data/inc/rocketmq-console修改

#set it false if you don't want use dashboard.default true

rocketmq.config.enableDashBoardCollect=true

$ vi src/main/resources/logback.xml

替换

%s/\${user\.home}\/logs\/consolelogs/\/data\/inc\/logs\/rocketmq-console/g

将项目打成jar包,并运行jar文件。

mvn clean package -Dmaven.test.skip=true -U

java -jar target/rocketmq-console-ng-1.0.0.jar

#如果配置文件没有填写Name Server

java -jar target/rocketmq-console-ng-1.0.0.jar --rocketmq.config.namesrvAddr='10.0.74.198:9876;10.0.74.199:9876'

启动命令:

nohup java -jar target/rocketmq-console-ng-1.0.0.jar --rocketmq.config.namesrvAddr='10.0.74.198:9876;10.0.74.199:9876' > /data/logs/rocketmq-console/nohup.out &

nohup java -jar /app/3rd/rocketmq-console/rocketmq-console-ng-1.0.0.jar > /data/inc/logs/rocketmq-console/nohup-rocketmq-console.out &

访问地址:

本地ip和端口访问:/rocketmq-console/

(7).rocketmq相关文章

rocketmq1:集群主要结构和监控,以及性能测试与成本控制

rocketmq-2:性能测试方案&压测&选型&结论

rocketmq-3:rocketmq流控/重试机制与应对

rocketmq-4:线上rocketmq slave节点的ECS宕机恢复实记

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千里行走 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档