Rocketmq集群搭建

    科技2022-07-14  126

    Rocketmq集群搭建

    双主双从集群结构

    准备2台centos8 虚拟机,并关闭防火墙(后者开放端口)

    192.168.66.139 , 192.168.66.140 集群结构 : 192.168.66.139 : broker-a-master / broker-b-slave 192.168.66.140 : broker-b-master / broker-a-slave

    下载安装rocketmq,配置环境变量(两台设备均设置)

    1、地址 : https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip 2、配置环境变量,在 /etc/profile文件中添加如下: #set rocketmq export ROCKETMQ_HOME=/opt/softs/rocketmq/rocketmq47 export PATH=$PATH:$ROCKETMQ_HOME/bin

    修改默认配置,以适应虚拟机环境,在${ROCKETMQ_HOME}/bin中修改 runbroker.sh和 runserver.sh (两台设备均设置)

    1、修改runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g" ---> JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m" 2、修改runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" ---> JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

    创建各 rocketmq节点存储目录(无论 master,slave,都要单独存储)

    192.168.66.139 : broker-a-master节点存储目录: store-am store-am/commitlog store-am/consumequeue store-am/index store-am/checkpoint store-am/abort broker-b-slave节点存储目录: store-bs store-bs/commitlog store-bs/consumequeue store-bs/index store-bs/checkpoint store-bs/abort 192.168.66.140 : broker-b-master节点存储目录: store-bm store-bm/commitlog store-bm/consumequeue store-bm/index store-bm/checkpoint store-bm/abort broker-a-slave节点存储目录: store-as store-as/commitlog store-as/consumequeue store-as/index store-as/checkpoint store-as/abort

    创建各 rocketmq 节点的配置文件

    192.168.66.139 :

    broker-a-master配置文件:(broker-a.properties)

    #所属集群名字 brokerClusterName=my-rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 # 必须配置 ,本机IP brokerIP1=192.168.66.139 #nameServer地址,分号分割 namesrvAddr=192.168.66.139:9876;192.168.66.140:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/opt/softs/rocketmq/rocketmq47/store-am #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/opt/softs/rocketmq/rocketmq47/store-am/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/opt/softs/rocketmq/rocketmq47/store-am/consumequeue #消息索引存储路径 storePathIndex=/opt/softs/rocketmq/rocketmq47/store-am/index #checkpoint 文件存储路径 storeCheckpoint=/opt/softs/rocketmq/rocketmq47/store-am/checkpoint #abort 文件存储路径 abortFile=/opt/softs/rocketmq/rocketmq47/store-am/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=SYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128

    broker-b-slave配置文件:(broker-b-s.properties)

    #所属集群名字 brokerClusterName=my-rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=0 # 必须配置 ,本机IP brokerIP1=192.168.66.139 #nameServer地址,分号分割 namesrvAddr=192.168.66.139:9876;192.168.66.140:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/opt/softs/rocketmq/rocketmq47/store-bs #commitLog 存储路径 storePathCommitLog=/opt/softs/rocketmq/rocketmq47/store-bs/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/opt/softs/rocketmq/rocketmq47/store-bs/consumequeue #消息索引存储路径 storePathIndex=/opt/softs/rocketmq/rocketmq47/store-bs/index #checkpoint 文件存储路径 storeCheckpoint=/opt/softs/rocketmq/rocketmq47/store-bs/checkpoint #abort 文件存储路径 abortFile=/opt/softs/rocketmq/rocketmq47/store-bs/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=SYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128

    192.168.66.140 :

    broker-b-master配置文件:(broker-b.properties)

    #所属集群名字 brokerClusterName=my-rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=0 # 必须配置 ,本机IP brokerIP1=192.168.66.140 #nameServer地址,分号分割 namesrvAddr=192.168.66.139:9876;192.168.66.140:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/opt/softs/rocketmq/rocketmq47/store-bm #commitLog 存储路径 storePathCommitLog=/opt/softs/rocketmq/rocketmq47/store-bm/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/opt/softs/rocketmq/rocketmq47/store-bm/consumequeue #消息索引存储路径 storePathIndex=/opt/softs/rocketmq/rocketmq47/store-bm/index #checkpoint 文件存储路径 storeCheckpoint=/opt/softs/rocketmq/rocketmq47/store-bm/checkpoint #abort 文件存储路径 abortFile=/opt/softs/rocketmq/rocketmq47/store-bm/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=SYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128

    broker-a-slave配置文件:(broker-a-s.properties)

    #所属集群名字 brokerClusterName=my-rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=1 # 必须配置 ,本机IP brokerIP1=192.168.66.140 #nameServer地址,分号分割 namesrvAddr=192.168.66.139:9876;192.168.66.140:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=11011 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/opt/softs/rocketmq/rocketmq47/store-as #commitLog 存储路径 storePathCommitLog=/opt/softs/rocketmq/rocketmq47/store-as/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/opt/softs/rocketmq/rocketmq47/store-as/consumequeue #消息索引存储路径 storePathIndex=/opt/softs/rocketmq/rocketmq47/store-as/index #checkpoint 文件存储路径 storeCheckpoint=/opt/softs/rocketmq/rocketmq47/store-as/checkpoint #abort 文件存储路径 abortFile=/opt/softs/rocketmq/rocketmq47/store-as/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

    启动服务

    1、在2台虚拟机上分别启动mqnamesrv: nohup sh mqnamesrv >/dev/null 2>&1 & 2、在192.168.66.139 启动 a-master和 b-slave: nohup sh mqbroker -c /opt/softs/rocketmq/rocketmq47/conf/2m-2s-sync/broker-a.properties >/dev/null 2>&1 & nohup sh mqbroker -c /opt/softs/rocketmq/rocketmq47/conf/2m-2s-sync/broker-b-s.properties >/dev/null 2>&1 & 3、在192.168.66.140 启动 b-master和 a-slave: nohup sh mqbroker -c /opt/softs/rocketmq/rocketmq47/conf/2m-2s-sync/broker-b.properties >/dev/null 2>&1 & nohup sh mqbroker -c /opt/softs/rocketmq/rocketmq47/conf/2m-2s-sync/broker-a-s.properties >/dev/null 2>&1 &

    搭建监控平台

    1、git 拉取 :git clone https://github.com/apache/rocketmq-externals.git 2、cd rocketmq-console 3、修改rocketmq-console 中 src/main/resources/application.properties: rocketmq.config.namesrvAddr=192.168.66.139:9876;192.168.66.140:9876 4、编译rocketmq-console : mvn clean package -Dmaven.test.skip=true 5、运行编译后的jar : java -jar rocketmq-console-ng-2.0.0.jar 6、访问 localhost:8080
    Processed: 0.010, SQL: 9