Apache RocketMQ5.x使用代理proxy集群部署

Apache RocketMQ5.x使用代理proxy集群部署

码农世界 2024-06-20 后端 100 次浏览 0个评论

前言

RocketMQ5.x版本新增了代理模式,之前双主双从部署RocketMQ5.x版本时,使用代理模式启动就会报错,一直未找到原因

并且关于代理的配置文件rmq-proxy.json的相关配置,官网与网上也并没有详细的说明。

Apache RocketMQ5.x使用代理proxy集群部署

本文介绍Local模式下双主双从与proxy部署,不多废话,直接上配置

proxy配置文件

路径:/data/service/rocketmq/rocketmq-all-5.1.4-bin-release/config/rmq-proxy.json

注意

{
  // 集群名称 与broker一致
  "rocketMQClusterName": "test-dh-rocketmq-cluster",
  // 代理监听端口
  "remotingListenPort": 9080,
   // gRPC服务器端口
  "grpcServerPort": 9081,
   // 对应namesr的ip
  "namesrvAddr":"123.45.67.891:6789;198.76.54.321:6789"
}

关键点就是namesrvAddr,增加了namesrvAddr后,即可正常启动

rmq-proxy的详解


1. 字段:rocketMQClusterName,代理服务器所属的RocketMQ集群名称,默认为"DefaultCluster"。 
2. 字段:proxyClusterName,代理服务器的集群名称,默认为"DefaultCluster"。 
3. 字段:proxyName,代理服务器的名称,默认为本地主机名。 
4. 字段:localServeAddr,代理服务器的本地服务地址,默认为空字符串。 
5. 字段:heartbeatSyncerTopicClusterName,心跳同步器的主题集群名称,默认为空字符串。 
6. 字段:heartbeatSyncerThreadPoolNums,心跳同步器的线程池大小,默认为4。 
7. 字段:heartbeatSyncerThreadPoolQueueCapacity,心跳同步器的线程池队列容量,默认为100。 
8. 字段:heartbeatSyncerTopicName,心跳同步器的主题名称,默认为"DefaultHeartBeatSyncerTopic"。 
9. 字段:enablePrintJstack,是否启用打印Jstack信息,默认为true。 
10. 字段:printJstackInMillis,打印Jstack信息的间隔时间,默认为60秒。 
11. 字段:printThreadPoolStatusInMillis,打印线程池状态的间隔时间,默认为3秒。 
12. 字段:namesrvAddr,NameServer的地址,默认从环境变量或系统属性中获取。 
13. 字段:namesrvDomain,NameServer的域名,默认为空字符串。 
14. 字段:namesrvDomainSubgroup,NameServer的子组名称,默认为空字符串。 
15. 字段:tlsTestModeEnable,是否启用TLS测试模式,默认为true。 
16. 字段:tlsKeyPath,TLS密钥的路径,默认为配置文件中的路径。 
17. 字段:tlsCertPath,TLS证书的路径,默认为配置文件中的路径。 
18. 字段:proxyMode,代理服务器的模式,默认为"CLUSTER"。 
19. 字段:grpcServerPort,gRPC服务器的端口号,默认为8081。 
20. 字段:grpcShutdownTimeSeconds,gRPC服务器关闭的超时时间,默认为30秒。 
21. 字段:grpcBossLoopNum,gRPC服务器的Boss线程数,默认为1。 
22. 字段:grpcWorkerLoopNum,gRPC服务器的Worker线程数,默认为处理器数量的2倍。 
23. 字段:enableGrpcEpoll,是否启用gRPC的Epoll模型,默认为false。 
24. 字段:grpcThreadPoolNums,gRPC服务器的线程池大小,默认为16 + 处理器数量的2倍。 
25. 字段:grpcThreadPoolQueueCapacity,gRPC服务器的线程池队列容量,默认为100000。 
26. 字段:brokerConfigPath,Broker配置文件的路径,默认为配置文件中的路径。 
27. 字段:grpcMaxInboundMessageSize,gRPC服务器接收的最大消息大小,默认为130MB。 
28. 字段:maxMessageSize,消息的最大大小,默认为4MB。 
29. 字段:maxUserPropertySize,用户属性的最大大小,默认为16KB。 
30. 字段:userPropertyMaxNum,用户属性的最大数量,默认为128。 
31. 字段:maxMessageGroupSize,消息组的最大大小,默认为64。 
32. 字段:defaultInvisibleTimeMills,消息弹出后的默认不可见时间,默认为60秒。 
33. 字段:minInvisibleTimeMillsForRecv,消息接收后的最小不可见时间,默认为10秒。 
34. 字段:maxInvisibleTimeMills,消息的最大不可见时间,默认为12小时。 
35. 字段:maxDelayTimeMills,消息的最大延迟时间,默认为1天。 
36. 字段:maxTransactionRecoverySecond,事务恢复的最大时间,默认为1小时。 
37. 字段:enableTopicMessageTypeCheck,是否启用主题消息类型的检查,默认为true。 
38. 字段:grpcClientProducerMaxAttempts,gRPC客户端生产者最大重试次数,默认为3。 
39. 字段:grpcClientProducerBackoffInitialMillis,gRPC客户端生产者退避初始间隔时间,默认为10毫秒。 
40. grpcClientProducerBackoffMaxMillis:设置gRPC客户端生产者在重试时的最大退避时间间隔为1秒。  
41. grpcClientProducerBackoffMultiplier:设置gRPC客户端生产者重试时退避时间的乘数因子为2,意味着每次失败后等待的时间将成倍增加。  
42. grpcClientConsumerMinLongPollingTimeoutMillis 和 grpcClientConsumerMaxLongPollingTimeoutMillis 分别设置了gRPC客户端消费者长轮询请求的最小和最大超时时间(分别为5秒和20秒)。  
43. grpcClientConsumerLongPollingBatchSize:设置gRPC客户端消费者进行长轮询请求时一次性拉取的消息批次大小为32条。  
44. grpcClientIdleTimeMills:设置gRPC客户端空闲超时时间为120秒,在这段时间内如果没有通信活动,则可能被关闭或回收资源。  
45. channelExpiredInSeconds 和 contextExpiredInSeconds 分别指定了连接通道和上下文的有效期(分别以秒为单位,分别是60秒和30秒)。  
46. rocketmqMQClientNum:设定RocketMQ客户端实例的数量为6个。  
47. grpcProxyRelayRequestTimeoutInSeconds:设置代理转发请求的超时时间为5秒。  
48. 后续一系列的 ThreadPoolNums 和 ThreadQueueCapacity 参数用于配置不同功能模块的线程池数量和队列容量,例如生产者、消费者、路由处理等,这些参数用于调整并发处理能力以及防止任务堆积。  
49. topicRouteServiceCache... 相关参数:用于缓存Topic路由信息的服务,包括缓存过期时间、刷新频率、缓存最大数量以及对应的线程池大小和队列容量。  
50. transactionHeartbeat... 相关参数:涉及事务心跳相关的线程池大小、队列容量、心跳周期、批量处理数目以及事务数据的过期扫描、清理等待时间和过期时间等,用以维护分布式事务的正确性和一致性。  
51. longPollingReserveTimeInMillis:长轮询预留时间(毫秒),可能是为了确保在处理长轮询请求时留出一定余量。  
52. invisibleTimeMillisWhenClear:当清除消息时,默认不可见时间(毫秒)。  这些配置参数共同决定了RocketMQ代理服务的性能、容错性、事务处理能力和资源利用率等方面的关键特性。

双主双从安装

1. 服务器环境

ip (外/内)角色架构模式
123.45.67.891/192.168.0.162nameserver1:6789、broker-master1:12911、broker-slave2:13021Master1、Slave2
198.76.54.321/192.168.0.128nameserver2:6789、broker-master2:12921、broker-slave1:13011Master2、Slave1

1.2.开通端口

每个服务器需开放七个端口,生产可以进行调整端口

namesrv

  • 6789

    broker主节点

    • 12911、12909、12912

      broker从节点

      • 13011、13009、13012

        proxy

        • 9081、9082

          端口规则说明:

          namesrv默认端口:9876

          假设broker配置的 ListenPort 端口:10911

          则vip 通道端口为:ListenPort - 2 = 10909

          则HA 通道端口为: ListenPort + 1 = 10912

          2. 部署

          本次在开发和测试环境部署rocketmq采用SYNC_MASTER 同步双写,ASYNC_FLUSH 异步刷盘进行

          注:关于同步复制、异步复制、同步刷盘与异步刷盘区别,请看上一篇文章Apache RocketMQ5.x 介绍及单机&双主双从部署的8.5专项解释

          2.1.host解析

          # 服务器123.45.67.891
          vim /etc/hosts
          # nameserver
          123.45.67.891   nameserver1 # 6789
          198.76.54.321   nameserver2 # 6789
          # broker
          123.45.67.891   broker-master1 # 12911
          123.45.67.891   broker-slave2 # 13021
          198.76.54.321   broker-master2 # 12921
          198.76.54.321   broker-slave1 # 13011
          # 配置完成后,重启网卡
          systemctl restart network
          service network restart
          # Centos 8 重启网卡
          nmcli c reload
          # 服务器198.76.54.321
          vim /etc/hosts
          # nameserver
          123.45.67.891   nameserver1 # 6789
          198.76.54.321   nameserver2 # 6789
          # broker
          123.45.67.891   broker-master1 # 12911
          123.45.67.891   broker-slave2 # 13021
          198.76.54.321   broker-master2 # 12921
          198.76.54.321   broker-slave1 # 13011
          # 配置完成后,重启网卡
          systemctl restart network
          # Centos 8 重启网卡
          nmcli c reload
          

          2.2.安全组配置

          为了安全只开放特定的端口号:6789(NameServer1 和 NameServer2)、12911(Master1)、12921(Master2)、13011(Slave1)、13021(Slave2)、9081(proxy1)、9082(proxy2)

          2.3.创建消息存储路径

          1号服务器:123.45.67.891

          mkdir -p /data/service/rocketmq/store/broker-a/commitlog
          mkdir -p /data/service/rocketmq/store/broker-a/consumequeue
          mkdir -p /data/service/rocketmq/store/broker-a/index
          mkdir -p /data/service/rocketmq/store/broker-b-s/commitlog
          mkdir -p /data/service/rocketmq/store/broker-b-s/consumequeue
          mkdir -p /data/service/rocketmq/store/broker-b-s/index
          

          2号服务器 :198.76.54.321

          mkdir -p /data/service/rocketmq/store/broker-b/commitlog
          mkdir -p /data/service/rocketmq/store/broker-b/consumequeue
          mkdir -p /data/service/rocketmq/store/broker-b/index
          mkdir -p /data/service/rocketmq/store/broker-a-s/commitlog
          mkdir -p /data/service/rocketmq/store/broker-a-s/consumequeue
          mkdir -p /data/service/rocketmq/store/broker-a-s/index
          

          2.4. broker配置文件

          分别在2台服务器上执行以下命令,编辑 broker.conf 文件,改成对应服务器的外网IP

          # 两台服务器同时执行
          # 服务器 123.45.67.891
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/broker.conf
          namesrvAddr=198.76.54.321:9876
          brokerIP=198.76.54.321
          # 服务器 198.76.54.321
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/broker.conf
          namesrvAddr=198.76.54.321:9876
          brokerIP=198.76.54.321
          
          2.4.1. master1(服务器一)

          服务器一:123.45.67.891、192.168.0.162

          broker-a.properties
          # 修改同步复制配置文件
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/broker-a.properties
          #Broker服务地址
          brokerIP1=123.45.67.891
          brokerIP2=123.45.67.891
          #所属集群名字
          brokerClusterName=test-dh-rocketmq-cluster
          #broker名字,注意此处不同的配置文件填写的不一样
          brokerName=broker-a
          #0 表示 Master,>0 表示 Slave
          brokerId=0
          #nameServer地址,分号分割
          namesrvAddr=123.45.67.891:6789;198.76.54.321:6789
          #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
          defaultTopicQueueNums=4
          #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
          autoCreateTopicEnable=false
          #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
          autoCreateSubscriptionGroup=false
          #Broker 对外服务的监听端口
          listenPort=12911
          #删除文件时间点,默认凌晨 4点
          deleteWhen=04
          #文件保留时间,默认 48 小时
          fileReservedTime=120
          #commitLog每个文件的大小默认1G
          mapedFileSizeCommitLog=1073741824
          #ConsumeQueue每个文件默认存30W条,根据业务情况调整
          mapedFileSizeConsumeQueue=300000
          #destroyMapedFileIntervalForcibly=120000
          #redeleteHangedFileInterval=120000
          #检测物理文件磁盘空间
          diskMaxUsedSpaceRatio=88
          #存储路径
          storePathRootDir=/data/service/rocketmq/store/broker-a
          #commitLog 存储路径
          storePathCommitLog=/data/service/rocketmq/store/broker-a/commitlog
          #消费队列存储路径存储路径
          storePathConsumeQueue=/data/service/rocketmq/store/broker-a/consumequeue
          #消息索引存储路径
          storePathIndex=/data/service/rocketmq/store/broker-a/index
          #checkpoint 文件存储路径
          storeCheckpoint=/data/service/rocketmq/store/broker-a/checkpoint
          #abort 文件存储路径
          abortFile=/data/service/rocketmq/store/broker-a/abort
          #限制的消息大小
          maxMessageSize=65536
          #flushCommitLogLeastPages=4
          #flushConsumeQueueLeastPages=2
          #flushCommitLogThoroughInterval=10000
          #flushConsumeQueueThoroughInterval=60000
          #Broker 的角色
          #- ASYNC_MASTER 异步复制Master
          #- SYNC_MASTER 同步双写Master
          #- SLAVE
          brokerRole=SYNC_MASTER
          #刷盘方式
          #- ASYNC_FLUSH 异步刷盘
          #- SYNC_FLUSH 同步刷盘
          flushDiskType=ASYNC_FLUSH
          #checkTransactionMessageEnable=false
          #发消息线程池数量
          #sendMessageThreadPoolNums=128
          #拉消息线程池数量
          #pullMessageThreadPoolNums=128
          
          rmq-proxy-a.json
          # 创建代理配置文件
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/rmq-proxy-a.json
          {
            // 集群名称 与broker一致
            "rocketMQClusterName": "test-dh-rocketmq-cluster",
            // 代理监听端口
            "remotingListenPort": 9080,
             // gRPC服务器端口
            "grpcServerPort": 9081,
             // 对应namesr的ip
            "namesrvAddr":"123.45.67.891:6789;198.76.54.321:6789"
          }
          
          2.4.2. slave2(服务器一)

          服务器一:123.45.67.891、192.168.0.162

          broker-b-s.properties
          # 修改同步复制配置文件
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/broker-b-s.properties
          #Broker服务地址
          brokerIP1=123.45.67.891
          #所属集群名字
          brokerClusterName=test-dh-rocketmq-cluster
          #broker名字,注意此处不同的配置文件填写的不一样
          brokerName=broker-b
          #0 表示 Master,>0 表示 Slave
          brokerId=1
          #nameServer地址,分号分割
          namesrvAddr=123.45.67.891:6789;198.76.54.321:6789
          #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
          defaultTopicQueueNums=4
          #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
          autoCreateTopicEnable=false
          #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
          autoCreateSubscriptionGroup=false
          #Broker 对外服务的监听端口
          listenPort=13021
          #删除文件时间点,默认凌晨 4点
          deleteWhen=04
          #文件保留时间,默认 48 小时
          fileReservedTime=120
          #commitLog每个文件的大小默认1G
          mapedFileSizeCommitLog=1073741824
          #ConsumeQueue每个文件默认存30W条,根据业务情况调整
          mapedFileSizeConsumeQueue=300000
          #destroyMapedFileIntervalForcibly=120000
          #redeleteHangedFileInterval=120000
          #检测物理文件磁盘空间
          diskMaxUsedSpaceRatio=88
          #存储路径
          storePathRootDir=/data/service/rocketmq/store/broker-b-s
          #commitLog 存储路径
          storePathCommitLog=/data/service/rocketmq/store/broker-b-s/commitlog
          #消费队列存储路径存储路径
          storePathConsumeQueue=/data/service/rocketmq/store/broker-b-s/consumequeue
          #消息索引存储路径
          storePathIndex=/data/service/rocketmq/store/broker-b-s/index
          #checkpoint 文件存储路径
          storeCheckpoint=/data/service/rocketmq/store/broker-b-s/checkpoint
          #abort 文件存储路径
          abortFile=/data/service/rocketmq/store/broker-b-s/abort
          #限制的消息大小
          maxMessageSize=65536
          #flushCommitLogLeastPages=4
          #flushConsumeQueueLeastPages=2
          #flushCommitLogThoroughInterval=10000
          #flushConsumeQueueThoroughInterval=60000
          #Broker 的角色
          #- ASYNC_MASTER 异步复制Master
          #- SYNC_MASTER 同步双写Master
          #- SLAVE
          brokerRole=SLAVE
          #刷盘方式
          #- ASYNC_FLUSH 异步刷盘
          #- SYNC_FLUSH 同步刷盘
          flushDiskType=ASYNC_FLUSH
          #checkTransactionMessageEnable=false
          #发消息线程池数量
          #sendMessageThreadPoolNums=128
          #拉消息线程池数量
          #pullMessageThreadPoolNums=128
          
          rmq-proxy-b-s.json
          # 创建代理配置文件
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/rmq-proxy-b-s.json
          {
            // 集群名称 与broker一致
            "rocketMQClusterName": "test-dh-rocketmq-cluster",
            // 代理监听端口
            "remotingListenPort": 9083,
             // gRPC服务器端口
            "grpcServerPort": 9082,
             // 对应namesr的ip
            "namesrvAddr":"123.45.67.891:6789;198.76.54.321:6789"
          }
          
          2.4.3. master2(服务器二)

          服务器一:198.76.54.321、192.168.0.128

          broker-b.properties
          # 修改同步复制配置文件
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/broker-b.properties
          #Broker服务地址,设置broker节点所在服务器的ip地址(这个非常重要,主从模式下,从节点会根据主节点的brokerIP2来同步数据,#如果不配置,主从无法同步,brokerIP1设置为自己外网能访问的ip,服务器双网卡情况下必须配置,比如阿里云这$种,#主节点需要配置ip1和ip2,从节点只需要配置ip1即可)
          brokerIP1=198.76.54.321
          brokerIP2=198.76.54.321
          #所属集群名字
          brokerClusterName=test-dh-rocketmq-cluster
          #broker名字,注意此处不同的配置文件填写的不一样
          brokerName=broker-b
          #0 表示 Master,>0 表示 Slave
          brokerId=0
          #nameServer地址,分号分割
          namesrvAddr=123.45.67.891:6789;198.76.54.321:6789
          #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
          defaultTopicQueueNums=4
          #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
          autoCreateTopicEnable=false
          #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
          autoCreateSubscriptionGroup=false
          #Broker 对外服务的监听端口
          listenPort=12921
          #删除文件时间点,默认凌晨 4点
          deleteWhen=04
          #文件保留时间,默认 48 小时
          fileReservedTime=120
          #commitLog每个文件的大小默认1G
          mapedFileSizeCommitLog=1073741824
          #ConsumeQueue每个文件默认存30W条,根据业务情况调整
          mapedFileSizeConsumeQueue=300000
          #destroyMapedFileIntervalForcibly=120000
          #redeleteHangedFileInterval=120000
          #检测物理文件磁盘空间
          diskMaxUsedSpaceRatio=88
          #存储路径
          storePathRootDir=/data/service/rocketmq/store/broker-b
          #commitLog 存储路径
          storePathCommitLog=/data/service/rocketmq/store/broker-b/commitlog
          #消费队列存储路径存储路径
          storePathConsumeQueue=/data/service/rocketmq/store/broker-b/consumequeue
          #消息索引存储路径
          storePathIndex=/data/service/rocketmq/store/broker-b/index
          #checkpoint 文件存储路径
          storeCheckpoint=/data/service/rocketmq/store/broker-b/checkpoint
          #abort 文件存储路径
          abortFile=/data/service/rocketmq/store/broker-b/abort
          #限制的消息大小
          maxMessageSize=65536
          #flushCommitLogLeastPages=4
          #flushConsumeQueueLeastPages=2
          #flushCommitLogThoroughInterval=10000
          #flushConsumeQueueThoroughInterval=60000
          #Broker 的角色
          #- ASYNC_MASTER 异步复制Master
          #- SYNC_MASTER 同步双写Master
          #- SLAVE
          brokerRole=SYNC_MASTER
          #刷盘方式
          #- ASYNC_FLUSH 异步刷盘
          #- SYNC_FLUSH 同步刷盘
          flushDiskType=ASYNC_FLUSH
          #checkTransactionMessageEnable=false
          #发消息线程池数量
          #sendMessageThreadPoolNums=128
          #拉消息线程池数量
          #pullMessageThreadPoolNums=128
          
          rmq-proxy-b.json
          # 创建代理配置文件
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/rmq-proxy-b.json
          {
            // 集群名称 与broker一致
            "rocketMQClusterName": "test-dh-rocketmq-cluster",
            // 代理监听端口
            "remotingListenPort": 9080,
             // gRPC服务器端口
            "grpcServerPort": 9081,
             // 对应namesr的ip
            "namesrvAddr":"123.45.67.891:6789;198.76.54.321:6789"
          }
          
          2.4.4. slave1(服务器二)

          服务器一:198.76.54.321、192.168.0.128

          broker-a-s.properties
          # 修改同步复制配置文件
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/broker-a-s.properties
          #所属集群名字
          brokerClusterName=test-dh-rocketmq-cluster
          #broker 名字,注意此处不同的配置文件填写的不一样
          brokerName=broker-a
          #0 表示 Master,>0 表示 Slave
          brokerId=1
          #nameServer 地址,分号分割
          namesrvAddr=123.45.67.891:6789;198.76.54.321:6789
          #安装可视化界面使用,需要是IP,不能是host
          #设置broker节点所在服务器的ip地址(**这个非常重要,主从模式下,从节点会根据主节点的brokerIP2来同步数据,#如果不配置,主从无法同步,brokerIP1设置为自己外网能访问的ip,服务器双网卡情况下必须配置,比如阿里云这$种,#主节点需要配置ip1和ip2,从节点只需要配置ip1即可)
          brokerIP1=198.76.54.321
          #在发送消息时,自动创建服务器不存在的 topic,默认创建的队列数
          defaultTopicQueueNums=4
          #是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭
          #进行发消息时,必须要指定topic,对于topic的设置有一个开关autoCreateTopicEnable,一#般在开发测试环境中会使用默认设置autoCreateTopicEnable = true,但是这样就会导致#topic的设置不容易规范管理,没有统一的审核。所以在正式环境中会在Broker启动时#设置参数autoCreateTopicEnable = false。这样当需要增加topic时就需要在web管理界面上#添加即可。
          autoCreateTopicEnable=false
          #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
          autoCreateSubscriptionGroup=false
          #Broker 对外服务的监听端口,如果从节点是单独服务器,则可以使用默认端口19011
          listenPort=13011
          #删除文件时间点,默认凌晨 4 点
          deleteWhen=04
          #文件保留时间,默认 48 小时
          fileReservedTime=120
          #commitLog 每个文件的大小默认 1G
          mapedFileSizeCommitLog=1073741824
          #ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
          mapedFileSizeConsumeQueue=300000
          #destroyMapedFileIntervalForcibly=120000
          #redeleteHangedFileInterval=120000
          #检测物理文件磁盘空间
          diskMaxUsedSpaceRatio=88
          #存储路径
          storePathRootDir=/data/service/rocketmq/store/broker-a-s
          #commitLog 存储路径
          storePathCommitLog=/data/service/rocketmq/store/broker-a-s/commitlog
          #消费队列存储路径存储路径
          storePathConsumeQueue=/data/service/rocketmq/store/broker-a-s/consumequeue
          #消息索引存储路径
          storePathIndex=/data/service/rocketmq/store/broker-a-s/index
          #checkpoint 文件存储路径
          storeCheckpoint=/data/service/rocketmq/store/broker-a-s/checkpoint
          #abort 文件存储路径
          abortFile=/data/service/rocketmq/store/broker-a-s/abort
          #限制的消息大小
          maxMessageSize=65536
          #flushCommitLogLeastPages=4
          #flushConsumeQueueLeastPages=2
          #flushCommitLogThoroughInterval=10000
          #flushConsumeQueueThoroughInterval=60000
          #Broker 的角色
          #- ASYNC_MASTER 异步复制 Master
          #- SYNC_MASTER 同步双写 Master
          #- SLAVE
          brokerRole=SLAVE
          #刷盘方式
          #- ASYNC_FLUSH 异步刷盘
          #- SYNC_FLUSH 同步刷盘
          flushDiskType=ASYNC_FLUSH
          #checkTransactionMessageEnable=false
          #发消息线程池数量
          #sendMessageThreadPoolNums=128
          #拉消息线程池数量
          #pullMessageThreadPoolNums=128
          
          rmq-proxy-a-s.json
          # 创建代理配置文件
          vim /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/rmq-proxy-a-s.json
          {
            // 集群名称 与broker一致
            "rocketMQClusterName": "test-dh-rocketmq-cluster",
            // 代理监听端口
            "remotingListenPort": 9083,
             // gRPC服务器端口
            "grpcServerPort": 9082,
             // 对应namesr的ip
            "namesrvAddr":"123.45.67.891:6789;198.76.54.321:6789"
          }
          

          2.5.服务启动

          2.5.1.启动NameServer集群

          分别在服务器一和服务器二启动NameServer1 和 NameServer2

          # 两个服务器都需要操作
          #在rocketmq的conf目录下添加namesrv.properties文件,文件中添加端口配置
          listenPort=6789
          ### 到安装目录下
          [admin@test-webapp-svr20 rocketmq] cd /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/bin
          ### 启动namesrv
          [admin@test-webapp-svr20 bin] nohup sh mqnamesrv -c ../conf/namesrv.properties &
          ### 验证namesrv是否启动成功
          [admin@test-webapp-svr20 bin] tail -f ~/logs/rocketmqlogs/namesrv.log
          The Name Server boot success...
          
          2.5.2.启动Broker集群

          启动顺序

          注意:如果不使用代理proxy模式,启动命令不需要带 --enable-proxy 和-pc

          1、在123.45.67.891 启动 master1

          ### 到安装目录下
          [admin@test-webapp-svr20 rocketmq] cd /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/bin
          ### 先启动broker 
          [admin@test-webapp-svr20 bin] nohup sh mqbroker -c /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/broker-a.properties -pc /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/rmq-proxy-a.json --enable-proxy &
          ### 验证broker是否启动成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
          [admin@test-webapp-svr20 bin] tail -1000f ~/logs/rocketmqlogs/proxy.log 
          The broker[broker-a,192.169.1.2:10911] boot success...
          

          2、在198.76.54.321 启动 master2

          ### 到安装目录下
          [admin@test-webapp-svr20 rocketmq] cd /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/bin
          ### 先启动broker 
          [admin@test-webapp-svr20 bin] nohup sh mqbroker -c /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/broker-b.properties -pc /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/rmq-proxy-b.json --enable-proxy &
          ### 验证broker是否启动成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
          [admin@test-webapp-svr20 bin] tail -1000f ~/logs/rocketmqlogs/proxy.log 
          The broker[broker-a,192.169.1.2:10911] boot success...
          

          3、在198.76.54.321 启动 slave1

          ### 到安装目录下
          [admin@test-webapp-svr20 rocketmq] cd /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/bin
          ### 先启动broker  第二步使用的是默认的proxy配置文件,第三步使用指定配置文件,对应的proxy的端口不一致
          [admin@test-webapp-svr20 bin] nohup sh mqbroker -c /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/broker-a-s.properties -pc /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/rmq-proxy-a-s.json --enable-proxy &
          ### 验证broker是否启动成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
          [admin@test-webapp-svr20 bin] tail -1000f ~/logs/rocketmqlogs/proxy.log 
          The broker[broker-a,192.169.1.2:10911] boot success...
          

          4、在123.45.67.891 启动 slave2

          ### 到安装目录下
          [admin@test-webapp-svr20 rocketmq] cd /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/bin
          ### 先启动broker 
          [admin@test-webapp-svr20 bin] nohup sh mqbroker -c /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/broker-b-s.properties -pc /data/service/rocketmq/rocketmq-all-5.1.4-bin-release/conf/2m-2s-sync/rmq-proxy-b-s.json --enable-proxy &
          ### 验证broker是否启动成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
          [admin@test-webapp-svr20 bin] tail -1000f ~/logs/rocketmqlogs/proxy.log 
          The broker[broker-a,192.169.1.2:10911] boot success...
          
          2.5.3.查看状态
          # 分别在两个服务器执行命令
          jps
          启动完成,分别在2台服务器查看集群信息:
              sh mqadmin clusterlist -n 123.45.67.891:6789
          sh mqadmin clusterlist -n 198.76.54.321:6789
          或者执行以下命令:
          sh mqadmin clusterlist -n localhost:6789
          
          2.5.3.开通防火墙端口(防火墙关闭除外)

          端口规则说明:

          namesrv默认端口:9876

          假设broker配置的 ListenPort 端口:10911

          则vip 通道端口为:ListenPort - 2 = 10909

          则HA 通道端口为: ListenPort + 1 = 10912

          例如:198.76.54.321 本次部署了master2和slave1,对应broker配置的 ListenPort 为:12921、13011

          根据端口规则,198.76.54.321需开通

          master2:12921、12919、12922、9081

          slave1:13011、13009、13012、9082

          # 开通端口,本次是在198.76.54.321服务器执行,所以开通12921、12919、12922、13011、13009、13012端口
          # 查看防火墙是否有此端口
          [root@test-webapp-svr20 ~]# firewall-cmd --zone=public --list-ports
          80/tcp 81/tcp 82/tcp 83/tcp 88/tcp 443/tcp 3000/tcp 3001/tcp 3306/tcp
          # 修改端口
          [root@test-webapp-svr20 ~]# firewall-cmd --zone=public --add-port=12921/tcp --permanent --add-port=12919/tcp --permanent --add-port=12922/tcp --permanent --add-port=13011/tcp --permanent  --add-port=13009/tcp --permanent --add-port=13012/tcp --permanent 
          # 重启防火墙
          [root@test-webapp-svr20 ~]# firewall-cmd --reload
          # 123.45.67.891 同样操作
          

          注意:此处开通防火墙,对应服务器安全组也需要开通,生产环境使用内网地址进行交互,则不需要开通

转载请注明来自码农世界,本文标题:《Apache RocketMQ5.x使用代理proxy集群部署》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,100人围观)参与讨论

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

Top