目标,使用2台机器部署RocketMQ多Master多Slave模式,异步复制集群模式。
第一步,修改/etc/hosts文件
1 | 复制代码192.168.116.115 rocketmq1 |
集群机器配置完成之后,集群内进行ping一下,确保都通。
编译得到环境
1 | 复制代码git clone -b develop https://github.com/apache/rocketmq.git |
配置集群模式【多Master多Slave模式,异步复制】
配置的目录说明:
- 2m-noslave: 多Master模式
- 2m-2s-sync: 多Master多Slave模式,同步双写
- 2m-2s-async:多Master多Slave模式,异步复制
配置项一个主的配置
1 | 复制代码#所属集群名字 |
配置项另外一个备的配置
1 | 复制代码#所属集群名字 |
备注:由于一台机器部署主备,所以主、备的端口和存储路径会不同,如果多台机器部署就可以保持一样了,主备主要区别在于brokerId、brokerRole配置区别。
注意到logback.*.xml配置文件中${user.home}需要替换自己指定的目录
可以使用sed进行替换:
1 | 复制代码sed -i 's#${user.home}#/appl/rocketmq#g' *.xml |
修改启动脚本中的JVM参数
由于RocketMQ4.1.0官方建议使用64bit JDK 1.8+;比如查看runserver.sh文件jvm参数如下:
1 | 复制代码-server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m |
需要特别说明下:
元数据空间,专门用来存元数据的,它是jdk8以后用来替代perm的。
JVM堆空间大小根据机器情况进行调整,如果测试机器内存太小需要调整,不然启动不了,比如修改为如下
1 | 复制代码-Xms1G -Xmx1G -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m |
可以使用sed进行替换,把所有PermSize、MaxPermSize替换掉:
1 | 复制代码sed -i 's#PermSize#MetaspaceSize#g' * |
runbroker.sh里面的jvm:
1 | 复制代码-Xms8g -Xmx8g -Xmn4g |
根据自己情况进行修改。
个人建议对于RocketMQ默认的jvm参数除了堆大小其他的先不要调整,后续通过观察分析之后看看是否有必要进行其他参数的调整等,欢迎阅读本人JVM菜鸟进阶高手之路系列文章。
其实我有有疑惑,在broker的jvm参数:
1 | 复制代码JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m" |
-XX:+DisableExplicitGC,-XX:MaxDirectMemorySize=15g,但是当达到阀值之后会调用System.gc来做一次full gc,关键System.gc都被禁止了。 希望那位大佬知道,在留言区说明下,谢谢。
启动服务
记住先启动NameServer,再启动Broker,关闭的时候恰好相反,先关闭Broker再关闭NameServer。
启动NameServer:
1 | 复制代码 nohup sh /appl/apache-rocketmq/bin/mqnamesrv & |
备注:由于namesrv的端口是写死在代码里面的,所以一台机器启动一个namesrv即可。
启动Broker:
1 | 复制代码rocketmq1机器: |
关闭服务:
1 | 复制代码sh bin/mqshutdown broker |
到目前位置,关于RocketMQ的集群环境部署就结束了,未完待续……
如果读完觉得有收获的话,欢迎点赞加关注。
个人公众号,欢迎关注,查阅更多精彩历史!!!
匠心零度公众号
本文转载自: 掘金