准备192.168.220.135和192.168.220.136两台机器上模拟搭建2主2从集群,
其中135搭建的两台是节点broker1的主(master1)和broker2的从(slave2),136上搭建的两台是broker2的主(master2)和broker1的从(slave1)
先配置一下host,为集群准备,当然也可以不配置域名,配置处直接使用ip就行
192.168.220.135 rocketmq-nameserver1 192.168.220.136 rocketmq-nameserver2 192.168.220.135 rocketmq-master1 192.168.220.135 rocketmq-slave2 192.168.220.136 rocketmq-master2 192.168.220.136 rocketmq-slave1
1、下载rocketmq
wget https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip
2、解压
unzip rocketmq-all-4.5.1-bin-release.zip
3、配置环境变量,也可以不配置
vim /etc/profile,追究如下内容
export ROCKETMQ_HOME=/usr/local/rocketmq-all-4.5.1-bin-release export PATH=$PATH:${ROCKETMQ_HOME}/bin
最后记得: source /etc/profile
4、创建RocketMQ存储文件的目录
因为要在192.168.220.135和192.168.220.136两台机器上模拟搭建2主2从集群,所以各在两天机器上创建两套数据存储目录。
进入192.168.220.135的rocketmq-all-4.5.1-bin-release目录,创建RocketMQ存储文件的目录,依次执行如下命令:
midir broker-a1
cd broker-a1
mkdir logs mkdir store cd store/ mkdir commitlog mkdir consumequeue mkdir index
然后cp出一份刚才创建的目录,作为broker2的从机使用,命令 cp -r broker-a1 broker-b2
同理,在192.168.220.136的rocketmq-all-4.5.1-bin-release目录,创建RocketMQ存储文件的目录,依次执行如下命令:
midir broker-b1 cd broker-b1 mkdir logs mkdir store cd store/ mkdir commitlog mkdir consumequeue mkdir index
然后cp出一份刚才创建的目录,作为broker2的从机使用,命令 cp -r broker-b1 broker-a2
5、配置文件
在192.168.220.135机器进入2m-2s-sync目录:/usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync
配置broker-a的主服务器配置文件broker-a.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示Master, > 0 表示slave brokerId=0 #nameServer 地址,分号分割 #namesrvAddr=192.168.220.135:9876;192.168.220.136:9876 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store #commitLog存储路径 storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/commitlog #消费队列存储路径 storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/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 #发消息线程池数量 #sendMessageTreadPoolNums=128 #拉消息线程池数量 #pullMessageTreadPoolNums=128
配置broker-b的从服务器配置文件broker-b-s.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示Master, > 0 表示slave brokerId=1 #nameServer 地址,分号分割 #namesrvAddr=192.168.220.135:9876;192.168.220.136:9876 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store #commitLog存储路径 storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/commitlog #消费队列存储路径 storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/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 #发消息线程池数量 #sendMessageTreadPoolNums=128 #拉消息线程池数量 #pullMessageTreadPoolNums=128
在192.168.220.136机器进入2m-2s-sync目录:/usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync
配置broker-a的从服务器配置文件broker-a-s.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示Master, > 0 表示slave brokerId=1 #nameServer 地址,分号分割 #namesrvAddr=192.168.220.135:9876;192.168.220.136:9876 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store #commitLog存储路径 storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/commitlog #消费队列存储路径 storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/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 #发消息线程池数量 #sendMessageTreadPoolNums=128 #拉消息线程池数量 #pullMessageTreadPoolNums=128
配置broker-b的主服务器配置文件broker-b.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示Master, > 0 表示slave brokerId=0 #nameServer 地址,分号分割 #namesrvAddr=192.168.220.135:9876;192.168.220.136:9876 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store #commitLog存储路径 storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/commitlog #消费队列存储路径 storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/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 #发消息线程池数量 #sendMessageTreadPoolNums=128 #拉消息线程池数量 #pullMessageTreadPoolNums=128
6、启动
6.1 启动NameServer集群,每台上执行如下命令:
cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/ nohup sh mqnamesrv &
6.2 启动broker集群
在192.168.220.135上启动master1
[root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/ [root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a.properties &
在192.168.220.135上启动slave2
[root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/ [root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b-s.properties &
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
在192.168.220.136上启动master2
[root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
[root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b.properties &
在192.168.220.136上启动slave1
[root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/ [root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a-s.properties &
如果启动失败,记得修改一下bin目录的两个文件runbroker.sh 和runserver.sh,将默认的内存设置改小一点,最好设置为1g。
#修改runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" #修改runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"
启动后,通过jps -l 命令查看一下进程:每台服务器上有1个namesrv进程和2个broker进程
7、查看日志
对于nameserver和broker日志默认位置在:~/logs/rocketmqlogs/namesrv.log和broker.log中,
nameserver和broker日志位置都可以手动配置,具体配置文件就是conf下的logback_broker.xml和logback_namesrv.xml
8 、安装rocketmq控制台
8.1 下载rocketmq控制台项目,github地址:https://github.com/apache/rocketmq-externals
# 方式一、git下载,执行如下命令 git clone https://github.com/apache/rocketmq-externals.git # 方式二、直接下载,访问如下地址即可 https://github.com/apache/rocketmq-externals/archive/master.zip
8.2编译打包rocketmq-console
下载下来的是对rocketmq扩展的开源项目incubator-rocketmq-externals,这个项目中有一个子模块叫“rocketmq-console”,这个便是管理控制台项目。
进入到rocketmq-console根目录,也就是pom.xml所在目录,通过maven对其进行编译打包。
#注意打包前先在rocketmq-console的配置文件中配置Namesrv集群的地址 #编辑一下rocketmq-console里面的application.properties文件,将项目使用的rocketmq.config.namesrvAddr配置上去(或者在项目启动时,以参数的形式配进去) rocketmq.config.namesrvAddr=192.168.220.135.9876;192.168.220.136:9876 #mvn命令打包
mvn clean package -Dmaven.test.skip=true
8.3 上传打包生成的rocketmq-console-ng-1.0.1.jar到部署服务器,这是是springboot项目,所以直接用java命令启动就行。
nohup java -jar rocketmq-console-ng-1.0.1.jar --server.port=8085 &
或者:
###设置两个参数:--server.port为运行的这个web应用的端口,如果不设置的话默认为8080;--rocketmq.config.namesrvAddr为RocketMQ命名服务地址,如果不设置的话默认为“”
nohup java -jar target/rocketmq-console-ng-1.0.0.jar --server.port=12581 --rocketmq.config.namesrvAddr=192.168.220.135.9876;192.168.220.136:9876 &
9、应用rocketmq控制台
浏览器打开rocketmq-console的部署地址:http://192.168.220.135:8085
10、如果想停掉服务,可以先停掉broker:
sh mqshutdown broker
再关闭namesrv:
sh mqshutdown namesrv
参考文章: