rocketmq 服务部署

本贴最后更新于 1333 天前,其中的信息可能已经时移俗易

摘自https://zhuanlan.zhihu.com/p/226173170

rocketmq 源码构建

系统:Mac OS 12.0 --- arm64

jdk 版本:1.8

maven 版本:3.6.3

git clone https://github.com/apache/rocketmq.git cd rocketmq # 执行mvn构建命令, 这里的命令含义是:清理之前编译、打包的文件,激活profile 名为 release-al # 然后打包,不编译单元测试,也不运行单元测试 mvn clean -P release-all package -Dmaven.test.skip=true

编译后进入到 distribution/target 目录,rocket-mq-xxx.tar.gzrocket-mq-xxx.zip 两种,zip 是 window 下的,tar.gz 为 Linux 下的;

tar.gz 解压后的目录结构:

. ├── LICENSE ├── NOTICE ├── README.md ├── benchmark │   ├── batchproducer.sh │   ├── consumer.sh │   ├── producer.sh │   ├── runclass.sh │   ├── shutdown.sh │   └── tproducer.sh ├── bin │   ├── README.md │   ├── cachedog.sh │   ├── cleancache.sh │   ├── cleancache.v1.sh │   ├── dledger │   │   └── fast-try.sh │   ├── mqadmin │   ├── mqadmin.cmd │   ├── mqbroker │   ├── mqbroker.cmd │   ├── mqbroker.numanode0 │   ├── mqbroker.numanode1 │   ├── mqbroker.numanode2 │   ├── mqbroker.numanode3 │   ├── mqnamesrv │   ├── mqnamesrv.cmd │   ├── mqshutdown │   ├── mqshutdown.cmd │   ├── os.sh │   ├── play.cmd │   ├── play.sh │   ├── runbroker.cmd │   ├── runbroker.sh │   ├── runserver.cmd │   ├── runserver.sh │   ├── setcache.sh │   ├── startfsrv.sh │   ├── tools.cmd │   └── tools.sh ├── conf │   ├── 2m-2s-async │   │   ├── broker-a-s.properties │   │   ├── broker-a.properties │   │   ├── broker-b-s.properties │   │   └── broker-b.properties │   ├── 2m-2s-sync │   │   ├── broker-a-s.properties │   │   ├── broker-a.properties │   │   ├── broker-b-s.properties │   │   └── broker-b.properties │   ├── 2m-noslave │   │   ├── broker-a.properties │   │   ├── broker-b.properties │   │   └── broker-trace.properties │   ├── broker.conf │   ├── dledger │   │   ├── broker-n0.conf │   │   ├── broker-n1.conf │   │   └── broker-n2.conf │   ├── logback_broker.xml │   ├── logback_namesrv.xml │   ├── logback_tools.xml │   ├── plain_acl.yml │   └── tools.yml └── lib ├── annotations-13.0.jar ├── commons-beanutils-1.9.4.jar ├── commons-cli-1.2.jar ├── commons-codec-1.9.jar ├── commons-collections-3.2.2.jar ├── commons-digester-2.1.jar ├── commons-lang3-3.4.jar ├── commons-logging-1.2.jar ├── commons-validator-1.7.jar ├── dledger-0.2.2.jar ├── fastjson-1.2.76.jar ├── gson-2.8.6.jar ├── guava-19.0.jar ├── jaeger-thrift-1.6.0.jar ├── jaeger-tracerresolver-1.6.0.jar ├── javassist-3.20.0-GA.jar ├── javax.annotation-api-1.3.2.jar ├── jcommander-1.72.jar ├── jna-4.2.2.jar ├── kotlin-stdlib-1.4.10.jar ├── kotlin-stdlib-common-1.4.0.jar ├── libthrift-0.14.1.jar ├── logback-classic-1.0.13.jar ├── logback-core-1.0.13.jar ├── netty-all-4.1.65.Final.jar ├── okhttp-4.9.0.jar ├── okio-2.8.0.jar ├── openmessaging-api-0.3.1-alpha.jar ├── opentracing-noop-0.33.0.jar ├── opentracing-tracerresolver-0.1.8.jar ├── opentracing-util-0.33.0.jar ├── rocketmq-acl-4.9.2-SNAPSHOT.jar ├── rocketmq-broker-4.9.2-SNAPSHOT.jar ├── rocketmq-client-4.9.2-SNAPSHOT.jar ├── rocketmq-common-4.9.2-SNAPSHOT.jar ├── rocketmq-example-4.9.2-SNAPSHOT.jar ├── rocketmq-filter-4.9.2-SNAPSHOT.jar ├── rocketmq-logging-4.9.2-SNAPSHOT.jar ├── rocketmq-namesrv-4.9.2-SNAPSHOT.jar ├── rocketmq-openmessaging-4.9.2-SNAPSHOT.jar ├── rocketmq-remoting-4.9.2-SNAPSHOT.jar ├── rocketmq-srvutil-4.9.2-SNAPSHOT.jar ├── rocketmq-store-4.9.2-SNAPSHOT.jar ├── rocketmq-tools-4.9.2-SNAPSHOT.jar ├── slf4j-api-1.7.7.jar ├── snakeyaml-1.19.jar ├── tomcat-annotations-api-8.5.46.jar └── tomcat-embed-core-8.5.46.jar
  • bin 目录下放的是脚本文件

  • conf 目录,配置文件

    2m-2s-async 双主双从异步复制模式

    2m-2s-sync 双主双从同步双写模式

    2m-noslave 双主模式

  • lib 存放的依赖 jar 包

测试 namesrv 的启动

启动命令:

nohup /Users/gitsilence/JavaTools/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqnamesrv &

使用 jps 查看是否启动成功

关闭命令

/Users/gitsilence/JavaTools/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqshutdown namesrv

集群部署

双主双从异步复制模式

两个台电脑

  • Mac OS
    • 地址:192.168.166.20
  • Cent OS
    • 地址:192.168.166.206

保证两台电脑在同一网段,端口是通的,可以关闭防火墙

需要开放的端口:NameServer 的 9876 端口、Broker 的 10911、11011、10909、11009 端口

Mac OS rocketmq 配置文件

1、编辑 conf/2m-2s-async/broker-a.properties

# 集群名称 brokerClusterName=mq-broker-cluster # broker名字,不同的配置文件填写的不一样 brokerName=broker-a # 0 表示master,>0 表示slave brokerId=0 # 删除文件时间点,默认凌晨4点 deleteWhen=04 # 文件保留时间,默认48小时 fileReservedTime=48 # Broker的角色,AYNSC_MASTER=异步复制master,SYNC_MASTER=同步双写master,SLAVE=slave节点 brokerRole=ASYNC_MASTER # 刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 flushDiskType=ASYNC_FLUSH # broker对外服务的监听端口 listenPort=10911 # nameServer地址,如果name server是多台集群的话,就用分号分隔 namesrvAddr=192.168.166.20:9876;192.168.166.206:9876 # 每个topic对应队列的数量,默认为4,实际参考consumer实例的数量,值过小不利于consumer负载均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=192.168.166.20 # 存储路径 storePathRootDir=/Users/gitsilence/JavaTools/rocketmq/data/store-a # commitLog 存储路径 storePathCommitLog=/Users/gitsilence/JavaTools/rocketmq/data/store-a/commitlog # 消费队列存储路径 storePathConsumerQueue=/Users/gitsilence/JavaTools/rocketmq/data/store-a/consumequeue # 消息索引存储路径 storePathIndex=/Users/gitsilence/JavaTools/rocketmq/data/store-a/index # checkpoint 文件存储路径 storeCheckpoint=/Users/gitsilence/JavaTools/rocketmq/data/store-a/checkpoint # abort 存储路径 abortFile=/Users/gitsilence/JavaTools/rocketmq/data/store-a/abort # commitLog每个文件的大小 默认1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue每个文件默认存30w条,根据业务情况调整 mapedFileSizeConsumeQueue=300000

2、配置 slave 节点 conf/2m-2s-async/broker-b-s.properties

# 集群名称 brokerClusterName=mq-broker-cluster # broker名字,不同的配置文件填写的不一样 brokerName=broker-b # 0 表示master,>0 表示slave brokerId=1 # 删除文件时间点,默认凌晨4点 deleteWhen=04 # 文件保留时间,默认48小时 fileReservedTime=48 # Broker的角色,AYNSC_MASTER=异步复制master,SYNC_MASTER=同步双写master,SLAVE=slave节点 brokerRole=SLAVE # 刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 flushDiskType=ASYNC_FLUSH # broker对外服务的监听端口 listenPort=11011 # nameServer地址,如果name server是多台集群的话,就用分号分隔 namesrvAddr=192.168.166.20:9876;192.168.166.206:9876 # 每个topic对应队列的数量,默认为4,实际参考consumer实例的数量,值过小不利于consumer负载均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=192.168.166.20 # 存储路径 storePathRootDir=/Users/gitsilence/JavaTools/rocketmq/data/store-b # commitLog 存储路径 storePathCommitLog=/Users/gitsilence/JavaTools/rocketmq/data/store-b/commitlog # 消费队列存储路径 storePathConsumerQueue=/Users/gitsilence/JavaTools/rocketmq/data/store-b/consumequeue # 消息索引存储路径 storePathIndex=/Users/gitsilence/JavaTools/rocketmq/data/store-b/index # checkpoint 文件存储路径 storeCheckpoint=/Users/gitsilence/JavaTools/rocketmq/data/store-b/checkpoint # abort 存储路径 abortFile=/Users/gitsilence/JavaTools/rocketmq/data/store-b/abort # commitLog每个文件的大小 默认1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue每个文件默认存30w条,根据业务情况调整 mapedFileSizeConsumeQueue=300000

先把两个节点 name server 启动

nohup /Users/gitsilence/JavaTools/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqnamesrv >> /Users/gitsilence/JavaTools/rocketmq/logs/namesrv/namesrv.log &

linux 节点启动

nohup /root/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqnamesrv >> /root/rocketmq/logs/namesrv/namesrv.log &

Linux 环境下遇到的问题:

nameserver 启动完毕后,可以执行 jps ,查看是否起来

Cent OS rocketmq 配置文件

1、配置 master 节点 conf/2m-2s-async/broker-b.properties

# 集群名称 brokerClusterName=mq-broker-cluster # broker名字,不同的配置文件填写的不一样 brokerName=broker-b # 0 表示master,>0 表示slave brokerId=0 # 删除文件时间点,默认凌晨4点 deleteWhen=04 # 文件保留时间,默认48小时 fileReservedTime=48 # Broker的角色,AYNSC_MASTER=异步复制master,SYNC_MASTER=同步双写master,SLAVE=slave节点 brokerRole=ASYNC_MASTER # 刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 flushDiskType=ASYNC_FLUSH # broker对外服务的监听端口 listenPort=10911 # nameServer地址,如果name server是多台集群的话,就用分号分隔 namesrvAddr=192.168.166.20:9876;192.168.166.206:9876 # 每个topic对应队列的数量,默认为4,实际参考consumer实例的数量,值过小不利于consumer负载均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=192.168.166.206 # 存储路径 storePathRootDir=/root/rocketmq/data/store-a # commitLog 存储路径 storePathCommitLog=/root/rocketmq/data/store-a/commitlog # 消费队列存储路径 storePathConsumerQueue=/root/rocketmq/data/store-a/consumequeue # 消息索引存储路径 storePathIndex=/root/rocketmq/data/store-a/index # checkpoint 文件存储路径 storeCheckpoint=/root/rocketmq/data/store-a/checkpoint # abort 存储路径 abortFile=/root/rocketmq/data/store-a/abort # commitLog每个文件的大小 默认1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue每个文件默认存30w条,根据业务情况调整 mapedFileSizeConsumeQueue=300000

2、配置 slave 节点,conf/2m-2s-async/broker-a-s.properties

# 集群名称 brokerClusterName=mq-broker-cluster # broker名字,不同的配置文件填写的不一样 brokerName=broker-a # 0 表示master,>0 表示slave brokerId=1 # 删除文件时间点,默认凌晨4点 deleteWhen=04 # 文件保留时间,默认48小时 fileReservedTime=48 # Broker的角色,AYNSC_MASTER=异步复制master,SYNC_MASTER=同步双写master,SLAVE=slave节点 brokerRole=SLAVE # 刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 flushDiskType=ASYNC_FLUSH # broker对外服务的监听端口 listenPort=11011 # nameServer地址,如果name server是多台集群的话,就用分号分隔 namesrvAddr=192.168.166.20:9876;192.168.166.206:9876 # 每个topic对应队列的数量,默认为4,实际参考consumer实例的数量,值过小不利于consumer负载均衡 defaultTopicQueueNums=8 # 是否允许broker自动创建Topic,生产建议关闭 autoCreateTopicEnable=true # 是否允许broker自动创建订阅组,生产建议关闭 autoCreateSubscriptionGroup=true # 设置brokerIp brokerIP1=192.168.166.206 # 存储路径 storePathRootDir=/root/rocketmq/data/store-b # commitLog 存储路径 storePathCommitLog=/root/rocketmq/data/store-b/commitlog # 消费队列存储路径 storePathConsumerQueue=/root/rocketmq/data/store-b/consumequeue # 消息索引存储路径 storePathIndex=/root/rocketmq/data/store-b/index # checkpoint 文件存储路径 storeCheckpoint=/root/rocketmq/data/store-b/checkpoint # abort 存储路径 abortFile=/root/rocketmq/data/store-b/abort # commitLog每个文件的大小 默认1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue每个文件默认存30w条,根据业务情况调整 mapedFileSizeConsumeQueue=300000

启动 broker

1、先启动 mac os master 节点 broker-a

nohup /Users/gitsilence/JavaTools/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqbroker -c /Users/gitsilence/JavaTools/rocketmq/rocketmq-4.9.2-SNAPSHOT/conf/2m-2s-async/broker-a.properties >> /Users/gitsilence/JavaTools/rocketmq/logs/broker/master-broker-a.log &

2、启动 Linux 的 master 节点 broker-b

nohup sh /root/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqbroker -c /root/rocketmq/rocketmq-4.9.2-SNAPSHOT/conf/2m-2s-async/broker-b.properties >> /root/rocketmq/logs/broker/master-broker-b.log &

3、启动 linux 的 slave 节点 broker-a

nohup sh /root/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqbroker -c /root/rocketmq/rocketmq-4.9.2-SNAPSHOT/conf/2m-2s-async/broker-a-s.properties >> /root/rocketmq/logs/broker/slave-broker-a.log &

4、启动 mac os 的 slave 节点 broker-b

nohup /Users/gitsilence/JavaTools/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqbroker -c /Users/gitsilence/JavaTools/rocketmq/rocketmq-4.9.2-SNAPSHOT/conf/2m-2s-async/broker-b-s.properties >> /Users/gitsilence/JavaTools/rocketmq/logs/broker/slave-broker-b.log &

启动完成后可以使用 mqadmin 检查 集群状态

/Users/gitsilence/JavaTools/rocketmq/rocketmq-4.9.2-SNAPSHOT/bin/mqadmin clusterList -n "192.168.166.20:9876;192.168.166.206:9876"
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.InternalThreadLocalMap). RocketMQLog:WARN Please initialize the logger system properly. #Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE mq-broker-cluster broker-a 0 192.168.166.20:10911 V4_9_1 0.00(0,0ms) 0.00(0,0ms) 0 453367.41 -1.0000 mq-broker-cluster broker-a 1 192.168.166.206:11011 V4_9_1 0.00(0,0ms) 0.00(0,0ms) 0 453367.41 -1.0000 mq-broker-cluster broker-b 0 192.168.166.206:10911 V4_9_1 0.00(0,0ms) 0.00(0,0ms) 0 453367.41 -1.0000 mq-broker-cluster broker-b 1 192.168.166.20:11011 V4_9_1 0.00(0,0ms) 0.00(0,0ms) 0 453367.41 -1.0000

单机部署

部署 rocketmq-console 可视化监控

1、git clone git@github.com:apache/rocketmq-externals.git

2、cd rocketmq-externals

3、git checkout release-rocketmq-console-1.0.0

4、cd rocketmq-console

5、mvn clean package -Dmaven.test.skip=true

6、构建成功后,执行启动命令

nohup java -jar target/rocketmq-console-ng-1.0.0.jar --rocketmq.config.namesrvAddr='192.168.166.20:9876;192.168.166.206:9876' >> /Users/gitsilence/JavaTools/rocketmq/logs/mq-console/mq-console.log &

浏览器访问:http://localhost:8080

image.png

image.png

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...