下载
RocketMQ下载地址:http://rocketmq.apache.org/
WebUI监控下载地址:https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-console
集群测试环境:
JDK1.8
RocketMQ版本:4.3.1
服务器Linux,共计4台
部署模式:2m-2s-async
服务器列表:
IP地址 | 部署功能 | brokerId | 备注 |
192.168.1.99 | namesrv | ||
192.168.1.85 | namesrv | ||
192.168.1.99 | broker-a | 0 | 和namesrv共用服务器 |
192.168.1.85 | broker-b | 0 | 和namesrv共用服务器 |
192.168.1.61 | broker-a-s | 1 | |
192.168.1.132 | broker-b-s | 1 |
开始部署:
第一步:解压rocketmq-all-4.3.1-bin-release.zip文件,复制四份
第二步:修改两台namesrv配置rocketmq-master-a和rocketmq-master-b,因为namesrv和master是共用服务器,用一套程序,因此不要纠结这个文件夹叫什么。
修改runserver.sh启动内存,第4行(标红),如果服务器内存很大,可以不用修改。
1 #=========================================================================================== 2 # JVM Configuration 3 #=========================================================================================== 4 JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" 5 JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC" 6 JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc.log -XX:+PrintGCDetails" 7 JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
修改runbroker.sh启动内存,第4行(标红),如果服务器内存很大,可以不用修改。
1 #=========================================================================================== 2 # JVM Configuration 3 #=========================================================================================== 4 JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g" 5 JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8" 6 JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy" 7 JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m" 8 JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
第三步:修改broker配置
依次修改每个文件,在最后一行插入如下内容(就是namerv的ip地址和端口,注意不同服务器地址用分号隔开):
namesrvAddr=192.168.1.99:9876;192.168.1.85:9876
第四步:启动namerv服务
启动192.168.1.99上的namerv,nohup sh mqnamesrv &
启动192.168.1.85上的namerv,nohup sh mqnamesrv &
第五步:启动broker服务
启动192.168.1.99上的broker:nohup sh mqbroker -c /opt/rocketmq-master-a/conf/2m-2s-async/broker-a.properties &
启动192.168.1.85上的broker:nohup sh mqbroker -c /opt/rocketmq-master-b/conf/2m-2s-async/broker-b.properties &
启动192.168.1.61上的broker:nohup sh mqbroker -c /opt/rocketmq-slave-a-s/conf/2m-2s-async/broker-a-s.properties &
启动192.168.1.132上的broker:nohup sh mqbroker -c /opt/rocketmq-slave-b-s/conf/2m-2s-async/broker-b-s.properties &
第六步:测试
到此集群启动完成,让我们看一下效果吧。
进入到bin目录执行:./mqadmin clusterList -n "192.168.1.99:9876;192.168.1.85:9876",看到如下输出
1 #Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE 2 DefaultCluster broker-a 0 192.168.1.99:10911 V4_3_1 0.00(0,0ms) 0.00(0,0ms) 0 427999.49 0.5755 3 DefaultCluster broker-a 1 192.168.1.61:10911 V4_3_1 0.00(0,0ms) 0.00(0,0ms) 0 427999.49 0.0991 4 DefaultCluster broker-b 0 192.168.1.85:10911 V4_3_1 0.00(0,0ms) 0.00(0,0ms) 0 427999.49 -1.0000 5 DefaultCluster broker-b 1 192.168.1.132:10911 V4_3_1 0.00(0,0ms) 0.00(0,0ms) 0 427999.49 0.7859
看到这个恭喜你,部署成功了。
第七步:安装Rocket监控
1、将之前下载好的rocketmq-console源码就行编译(我用的idea)。
2、修改application.properties文件,第10行改成我们的namerv地址
1 ver.contextPath= 2 server.port=8080 3 #spring.application.index=true 4 spring.application.name=rocketmq-console 5 spring.http.encoding.charset=UTF-8 6 spring.http.encoding.enabled=true 7 spring.http.encoding.force=true 8 logging.config=classpath:logback.xml 9 #if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876 10 rocketmq.config.namesrvAddr=192.168.1.99:9876;192.168.1.85:9876 11 #if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true 12 rocketmq.config.isVIPChannel= 13 #rocketmq-console's data path:dashboard/monitor 14 rocketmq.config.dataPath=/tmp/rocketmq-console/data 15 #set it false if you don't want use dashboard.default true 16 rocketmq.config.enableDashBoardCollect=true
3、启动入口类,这个是spring boot框架写的哦,不会的自己去补功课吧。
1 @EnableAutoConfiguration 2 @SpringBootApplication 3 public class App { 4 5 public static void main(String[] args) { 6 SpringApplication.run(App.class, args); 7 } 8 9 }
4、打开浏览器,输入localhost:8080就可以看到效果图了:
到此,这个集群搭建完成,下一节将对集群环境进行故障测试,敬请关注。