首页 > 技术文章 > RocketMQ集群部署(一)

shileibrave 2018-10-29 15:39 原文

 下载

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就可以看到效果图了:

到此,这个集群搭建完成,下一节将对集群环境进行故障测试,敬请关注。

 

推荐阅读