RocketMQ集群部署

矫情吗;* 2022-02-14 00:53 467阅读 0赞

新公司用的消息中间件为RocketMQ,由于我之前用的都是ActiveMQ、RabbitMQ和Kafka,所以就在这整理下RocketMQ的部署。
一、整体规划














192.168.0.121 NameServer1 / broker-01-master / broker-02-slave
192.168.0.122 NameServer2 / broker-02-master / broker-01-slave

二、准备工作
https://www.oracle.com/technetwork/java/javase/archive-139210.html 下载jdk,这边选择的是jdk-8u144-linux-x64.tar.gz

http://rocketmq.apache.org/dowloading/releases/ 下载RocketMQ,这边选择的版本是rocketmq-all-4.3.1-bin-release.zip

官网给出的环境要求是:
1.JDK版本1.8+ (RocketMQ是JAVA写的)
2.Maven3.2.x以上 (用来打包console管理页面)

三、部署JAVA环境

  1. tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local/
  2. ln -s /usr/local/jdk1.8.0_144 /usr/local/jdk
  3. sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
  4. source /etc/profile
  5. #出现下面结果证明部署成功
  6. [root@localhost opt]# java -version
  7. java version "1.8.0_144"
  8. Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
  9. Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

四、安装RocketMQ
1.解压重命名

  1. unzip rocketmq-all-4.3.1-bin-release.zip -C /usr/local/
  2. mv /usr/local/rocketmq-all-4.3.1-bin-release /usr/local/apache-rocketmq-4.3.1

2.配置模式介绍
rocketmq默认给出了三种建议配置模式:
1)2m-2s-async(主从异步),——本文采用这种
2)2m-2s-sync(主从同步)
3)2m-noslave(仅master)

3.修改第一台服务器(192.168.0.121)上的配置文件
我们在这做个约定,就是把要用到的配置文件都放到/usr/local/apache-rocketmq-4.3.1/conf目录下。

  1. cd /usr/local/apache-rocketmq-4.3.1/conf/2m-2s-async/
  2. cp broker-a.properties ../broker-01-master.properties
  3. cp broker-b.properties ../broker-02-slave.properties
  4. cd ..

3.1修改 broker-01-master.properties
vim /usr/local/apache-rocketmq-4.3.1/conf/broker-01-master.properties

  1. #所属集群名字
  2. brokerClusterName=rocketmq-cluster
  3. #存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步
  4. #默认不配置brokerIP1和brokerIP2时,都会根据当前网卡选择一个IP使用,当你的机器有多块网卡时,很有可能会有问题。比如,我遇到的问题是我机器上有两个IP,一个公网IP,一个私网IP,结果默认选择的走公网IP,这是不正确的,我期望的是所有业务内部通信都走内网。
  5. brokerIP1=192.168.0.121
  6. brokerIP2=192.168.0.121
  7. #broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他
  8. brokerName=broker-01
  9. #0 表示 Master,>0 表示 Slave
  10. brokerId=0
  11. #nameServer地址,分号分割
  12. namesrvAddr=192.168.0.121:9876;192.168.0.122:9876
  13. #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
  14. defaultTopicQueueNums=4
  15. #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
  16. autoCreateTopicEnable=true
  17. #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
  18. autoCreateSubscriptionGroup=true
  19. #Broker 对外服务的监听端口,
  20. listenPort=10911
  21. #删除文件时间点,默认凌晨 4点
  22. deleteWhen=04
  23. #文件保留时间,默认 48 小时
  24. fileReservedTime=120
  25. #commitLog每个文件的大小,默认为1G
  26. mapedFileSizeCommitLog=1073741824
  27. #ConsumeQueue每个文件默认存30W条,根据业务情况调整
  28. mapedFileSizeConsumeQueue=300000
  29. #destroyMapedFileIntervalForcibly=120000
  30. #redeleteHangedFileInterval=120000
  31. #检测物理文件磁盘空间
  32. diskMaxUsedSpaceRatio=88
  33. #存储路径
  34. storePathRootDir=/usr/local/apache-rocketmq-4.3.1/store-01-master
  35. #commitLog存储路径
  36. storePathCommitLog=/usr/local/apache-rocketmq-4.3.1/store-01-master/commitlog
  37. #消费队列存储路径
  38. storePathConsumeQueue=/usr/local/apache-rocketmq-4.3.1/store-01-master/consumequeue
  39. #消息索引存储路径
  40. storePathIndex=/usr/local/apache-rocketmq-4.3.1/store-01-master/index
  41. #checkpoint 文件存储路径
  42. storeCheckpoint=/usr/local/apache-rocketmq-4.3.1/store-01-master/checkpoint
  43. #abort文件存储路径
  44. abortFile=/usr/local/apache-rocketmq-4.3.1/store-01-master/abort
  45. #限制的消息大小
  46. maxMessageSize=65536
  47. #flushCommitLogLeastPages=4
  48. #flushConsumeQueueLeastPages=2
  49. #flushCommitLogThoroughInterval=10000
  50. #flushConsumeQueueThoroughInterval=60000
  51. #Broker 的角色
  52. #- ASYNC_MASTER 异步复制Master
  53. #- SYNC_MASTER 同步双写Master
  54. #- SLAVE
  55. brokerRole=ASYNC_MASTER
  56. #刷盘方式
  57. #- ASYNC_FLUSH 异步刷盘
  58. #- SYNC_FLUSH 同步刷盘
  59. flushDiskType=ASYNC_FLUSH
  60. #checkTransactionMessageEnable=false
  61. #发消息线程池数量
  62. #sendMessageThreadPoolNums=128
  63. #拉消息线程池数量
  64. #pullMessageThreadPoolNums=128

3.2修改 broker-02-slave.properties
vim /usr/local/apache-rocketmq-4.3.1/conf/broker-02-slave.properties

  1. #所属集群名称
  2. brokerClusterName=rocketmq-cluster
  3. #brokerIP1为当前broker监听的IP
  4. brokerIP1=192.168.0.121
  5. #broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他
  6. brokerName=broker-02
  7. #0 表示 Master,>0 表示 Slave
  8. brokerId=1
  9. #nameServer地址,分号分割
  10. namesrvAddr=192.168.0.121:9876;192.168.0.122:9876
  11. #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
  12. defaultTopicQueueNums=4
  13. #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
  14. autoCreateTopicEnable=true
  15. #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
  16. autoCreateSubscriptionGroup=true
  17. #Broker 对外服务的监听端口,
  18. listenPort=10921
  19. #删除文件时间点,默认凌晨4点
  20. deleteWhen=04
  21. #文件保留时间,默认48小时
  22. fileReservedTime=120
  23. #commitLog每个文件的大小,默认1G
  24. mapedFileSizeCommitLog=1073741824
  25. #ConsumeQueue每个文件默认存30W条,根据业务情况调整
  26. mapedFileSizeConsumeQueue=300000
  27. #destroyMapedFileIntervalForcibly=120000
  28. #redeleteHangedFileInterval=120000
  29. #检测物理文件磁盘空间
  30. diskMaxUsedSpaceRatio=88
  31. #存储路径
  32. storePathRootDir=/usr/local/apache-rocketmq-4.3.1/store-02-slave
  33. #commitLog 存储路径
  34. storePathCommitLog=/usr/local/apache-rocketmq-4.3.1/store-02-slave/commitlog
  35. #消费队列存储路径存储路径
  36. storePathConsumeQueue=/usr/local/apache-rocketmq-4.3.1/store-02-slave/consumequeue
  37. #消息索引存储路径
  38. storePathIndex=/usr/local/apache-rocketmq-4.3.1/store-02-slave/index
  39. #checkpoint 文件存储路径
  40. storeCheckpoint=/usr/local/apache-rocketmq-4.3.1/store-02-slave/checkpoint
  41. #abort 文件存储路径
  42. abortFile=/usr/local/apache-rocketmq-4.3.1/store-02-slave/abort
  43. #限制的消息大小
  44. maxMessageSize=65536
  45. #flushCommitLogLeastPages=4
  46. #flushConsumeQueueLeastPages=2
  47. #flushCommitLogThoroughInterval=10000
  48. #flushConsumeQueueThoroughInterval=60000
  49. #Broker 的角色
  50. #- ASYNC_MASTER 异步复制Master
  51. #- SYNC_MASTER 同步双写Master
  52. #- SLAVE
  53. brokerRole=SLAVE
  54. #刷盘方式
  55. #- ASYNC_FLUSH 异步刷盘
  56. #- SYNC_FLUSH 同步刷盘
  57. flushDiskType=ASYNC_FLUSH
  58. #checkTransactionMessageEnable=false
  59. #发消息线程池数量
  60. #sendMessageThreadPoolNums=128
  61. #拉消息线程池数量
  62. #pullMessageThreadPoolNums=128

3.3修改NameServer的启动文件
由于默认的NameServer的启动文件的JVM内存给的比较大,由于这里是测试环境,所以这边需要改小点。如果是线上的话,就根据实际情况来。
vim /usr/local/apache-rocketmq-4.3.1/bin/runserver.sh
在这里插入图片描述
3.4修改broker的启动文件
和上面一样,broker的启动文件的JVM参数也需要调整下。
vim /usr/local/apache-rocketmq-4.3.1/bin/runbroker.sh
在这里插入图片描述
4.拷贝RocketMQ到第二台服务器(192.168.0.122)
将192.168.0.121上的/usr/local/apache-rocketmq-4.3.1拷贝到192.168.0.122上

  1. scp -r /usr/local/apache-rocketmq-4.3.1 root@192.168.0.122:/usr/local/

5.修改第二台服务器(192.168.0.122)上的配置文件

  1. cd /usr/local/apache-rocketmq-4.3.1/conf
  2. mv broker-01-master.properties broker-02-master.properties
  3. mv broker-02-slave.properties broker-01-slave.properties

vim broker-02-master.properties

  1. brokerClusterName=rocketmq-cluster
  2. brokerIP1=192.168.0.122
  3. brokerIP2=192.168.0.122
  4. brokerName=broker-02
  5. brokerId=0
  6. namesrvAddr=192.168.0.121:9876;192.168.0.122:9876
  7. defaultTopicQueueNums=4
  8. autoCreateTopicEnable=true
  9. autoCreateSubscriptionGroup=true
  10. listenPort=10911
  11. deleteWhen=04
  12. fileReservedTime=120
  13. mapedFileSizeCommitLog=1073741824
  14. mapedFileSizeConsumeQueue=300000
  15. diskMaxUsedSpaceRatio=88
  16. storePathRootDir=/usr/local/apache-rocketmq-4.3.1/store-02-master
  17. storePathCommitLog=/usr/local/apache-rocketmq-4.3.1/store-02-master/commitlog
  18. storePathConsumeQueue=/usr/local/apache-rocketmq-4.3.1/store-02-master/consumequeue
  19. storePathIndex=/usr/local/apache-rocketmq-4.3.1/store-02-master/index
  20. storeCheckpoint=/usr/local/apache-rocketmq-4.3.1/store-02-master/checkpoint
  21. abortFile=/usr/local/apache-rocketmq-4.3.1/store-02-master/abort
  22. maxMessageSize=65536
  23. brokerRole=ASYNC_MASTER
  24. flushDiskType=ASYNC_FLUSH

vim broker-01-slave.properties

  1. brokerClusterName=rocketmq-cluster
  2. brokerIP1=192.168.0.122
  3. brokerName=broker-01
  4. brokerId=1
  5. namesrvAddr=192.168.0.121:9876;192.168.0.122:9876
  6. defaultTopicQueueNums=4
  7. autoCreateTopicEnable=true
  8. autoCreateSubscriptionGroup=true
  9. listenPort=10921
  10. deleteWhen=04
  11. fileReservedTime=120
  12. mapedFileSizeCommitLog=1073741824
  13. mapedFileSizeConsumeQueue=300000
  14. diskMaxUsedSpaceRatio=88
  15. storePathRootDir=/usr/local/apache-rocketmq-4.3.1/store-01-slave
  16. storePathCommitLog=/usr/local/apache-rocketmq-4.3.1/store-01-slave/commitlog
  17. storePathConsumeQueue=/usr/local/apache-rocketmq-4.3.1/store-01-slave/consumequeue
  18. storePathIndex=/usr/local/apache-rocketmq-4.3.1/store-01-slave/index
  19. storeCheckpoint=/usr/local/apache-rocketmq-4.3.1/store-01-slave/checkpoint
  20. abortFile=/usr/local/apache-rocketmq-4.3.1/store-01-slave/abort
  21. maxMessageSize=65536
  22. brokerRole=SLAVE
  23. flushDiskType=ASYNC_FLUSH

6.创建日志和存储文件等的存放目录

  1. #节点1上执行
  2. mkdir -p /usr/local/apache-rocketmq-4.3.1/logs /usr/local/apache-rocketmq-4.3.1/store-01-master /usr/local/apache-rocketmq-4.3.1/store-01-master/commitlog /usr/local/apache-rocketmq-4.3.1/store-01-master/consumequeue /usr/local/apache-rocketmq-4.3.1/store-01-master/index /usr/local/apache-rocketmq-4.3.1/store-02-slave /usr/local/apache-rocketmq-4.3.1/store-02-slave/commitlog /usr/local/apache-rocketmq-4.3.1/store-02-slave/consumequeue /usr/local/apache-rocketmq-4.3.1/store-02-slave/index
  3. #节点2上执行
  4. mkdir -p /usr/local/apache-rocketmq-4.3.1/logs /usr/local/apache-rocketmq-4.3.1/store-01-slave /usr/local/apache-rocketmq-4.3.1/store-01-slave/commitlog /usr/local/apache-rocketmq-4.3.1/store-01-slave/consumequeue /usr/local/apache-rocketmq-4.3.1/store-01-slave/index /usr/local/apache-rocketmq-4.3.1/store-02-master /usr/local/apache-rocketmq-4.3.1/store-02-master/commitlog /usr/local/apache-rocketmq-4.3.1/store-02-master/consumequeue /usr/local/apache-rocketmq-4.3.1/store-02-master/index

五、启动
1.启动NameServer

  1. #两台上都执行
  2. nohup sh /usr/local/apache-rocketmq-4.3.1/bin/mqnamesrv > /usr/local/apache-rocketmq-4.3.1/logs/mqnamesrv.log 2>&1 &

2.启动broker

  1. #在节点1上启动broker-01-master
  2. nohup sh /usr/local/apache-rocketmq-4.3.1/bin/mqbroker -c /usr/local/apache-rocketmq-4.3.1/conf/broker-01-master.properties > /usr/local/apache-rocketmq-4.3.1/logs/broker-01-master.log 2>&1 &
  3. #在节点2上启动broker-01-slave
  4. nohup sh /usr/local/apache-rocketmq-4.3.1/bin/mqbroker -c /usr/local/apache-rocketmq-4.3.1/conf/broker-01-slave.properties > /usr/local/apache-rocketmq-4.3.1/logs/broker-01-slave.log 2>&1 &
  5. #在节点2上启动broker-02-maste
  6. nohup sh /usr/local/apache-rocketmq-4.3.1/bin/mqbroker -c /usr/local/apache-rocketmq-4.3.1/conf/broker-02-master.properties > /usr/local/apache-rocketmq-4.3.1/logs/broker-02-master.log 2>&1 &
  7. #在节点1上启动broker-02-slave
  8. nohup sh /usr/local/apache-rocketmq-4.3.1/bin/mqbroker -c /usr/local/apache-rocketmq-4.3.1/conf/broker-02-slave.properties > /usr/local/apache-rocketmq-4.3.1/logs/broker-02-slave.log 2>&1 &

全部启动完成之后可以通过jps命令查看进程
在这里插入图片描述
3.查看集群的启动状况
可以通过下面命令来查看集群的启动状况

  1. /usr/local/apache-rocketmq-4.3.1/bin/mqadmin clusterList -n 192.168.0.121:9876

在这里插入图片描述
六、安装web管理界面
rocketmq除了命令行的管理方式之外,还有web界面的管理方式。
apache提供一个开源的扩展项目: https://github.com/apache/rocketmq-externals 里面包含一个子项目rocketmq-console。
我们要使用这个web管理界面,要做的就是克隆代码,修改配置文件,编译打包,启动服务4个步骤。
1.克隆代码到电脑上(我电脑上有maven环境,不想在服务器上重新安装了。。)
2.修改配置文件
配置文件的路径为:rocketmq-externals\rocketmq-console\src\main\resources\application.properties
我们在”rocketmq.config.namesrvAddr=”后面加上自己的NameServer服务器的地址即可。

  1. rocketmq.config.namesrvAddr=192.168.0.121:9876;192.168.0.122:9876

3.打包

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

在这里插入图片描述
4.将jar包上传到服务器并启动

  1. java -jar rocketmq-console-ng-1.0.0.jar > /usr/local/apache-rocketmq-4.3.1/logs/mq-console.log 2>&1 &

5.页面管理
在这里插入图片描述
参考文章:
https://blog.csdn.net/weixin\_40533111/article/details/84451219

发表评论

表情:
评论列表 (有 0 条评论,467人围观)

还没有评论,来说两句吧...

相关阅读