rocketMq集群master模式搭建

首先说明,本文是讲述使用vmware虚拟机搭建3台服务器,相当于3台linux服务器,并且vmware模拟的也是linux系统。其中在vmware设置了静态ip,为了方便操作,能够使用xshell连接,具体如何使用xshell连接vmware的,请移步 这篇文章 vmware虚拟机设置静态ip并且通过xshell连接教程(本人已经实现)

好了,下面进入下文:

1:准备rocketMq安装包 此处已整理好,请直接通过我的百度网盘进行下载 :

链接:https://pan.baidu.com/s/1MeJB3uZyiDo-jwUBPjR9JA
提取码:8dx9

 

2:本文3台服务器ip分别为:192.168.242.10  192.168.242.11  192.168.242.12 下面的操作步骤需要分别在三台服务器操作

 

3:分别在10,11,12三台服务器的文件夹: /usr/local 新建文件夹 rocketmq。所以新建好文件夹后的完整是:/usr/local/rokcetmq

4:分别在三台服务器上传下载好的rocketMq。如下图:(注意:此处我是省了解压rocket.zip 可通过 unzip rocket.zip命令进行解压)

 

5:修改环境变量(记得三台服务器):vi /etc/profile

内容:export ROCKETMQ_HOME=/usr/local/rocketmq

刷新环境变量,起效:source /etc/profile

 

6:修改rocketmq的配置文件:/usr/local/rocketmq/conf/2m-noslave/broker-a.properties和/usr/local/rocketmq/conf/2m-noslave/broker-b.properties

 

 

 增加内容如下:主要修改的配置信息是:namesrvAddr,brokerIP1,brokerId

 

broker-a.properties:

#此处变量本来就有,只需要自定义后面的名字就好,此处我是为了区分ip,所以定义:Rocket-10
brokerClusterName=RockMq-10 brokerName=broker-a-12 # 0 表示 Master,>0 表示 Slave 此处如果在192.168.242.10服务器的rocketmq作为master,那么此值取0,其余服务器取1(大于0的整数) brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=ASYNC_MASTER flushDiskType=ASYNC_FLUSH #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许Broker自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许Broker自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true # 文件保留时间,默认 72 小时。根据业务情况调整 fileReservedTime=168 # nameServer地址,分号分割,这里写自己需要做集群的三台服务器的地址 namesrvAddr=192.168.242.10:9876;192.168.242.11:9876;192.168.242.12:9876 # Details:Should be configured if having multiple addresses; Default value:InetAddress for network interface # 本机ip地址,默认系统自动识别,但是某些多网卡机器会存在识别错误的情况,这种情况 #下可以人工配置。 brokerIP1=192.168.242.10

 

 broker-b.properties:

brokerClusterName=RockMq-10
brokerName=broker-b-10
# 0 表示 Master,>0 表示 Slave
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH


#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4

#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true

#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

# 文件保留时间,默认 72 小时。根据业务情况调整
fileReservedTime=168

# nameServer地址,分号分割,这里写自己需要做集群的两台服务器的地址
namesrvAddr=192.168.242.10:9876;192.168.242.11:9876;192.168.242.12:9876

# Details:Should be configured if having multiple addresses; Default value:InetAddress for network interface
# 本机ip地址,默认系统自动识别,但是某些多网卡机器会存在识别错误的情况,这种情况
#下可以人工配置。
brokerIP1=192.168.242.10

 

特别注意:brokerIP1这个指定ip的,一定是当前linux的ip

7:在10,11,12服务器修改rocketmq的启动脚本的jvm参数(对了,记得在linux服务器部署jdk1.7以上的版本,博主使用的是jdk1.8。jdk1.8的部署教程请看:CentOS7安装JDK1.8图文教程

vim /usr/local/rocketmq/bin/runbroker.sh

这是未修改前的:不修改会启动不了,会报jvm内存没这么大

 

 所以修改后如下:(大家自行决定这个值)

 

 

8:在10,11,12三台服务器启动集群:nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties  >/dev/null 2>&1 &

 

9:看看是否启动成功:输入jps命令,能看到namesrv和broker证明启动成功(此处我没有启动集群,因为是没有连接同一网络,所以vmware里面的linxu系统连接不上)

 

 

10:关闭rocketmq

cd /usr/local/rocketmq/bin

关闭namesrv服务:sh mqshutdown namesrv
关闭broker服务:sh mqshutdown broker

>>>>>如果发现无权限操作文件,请执行命令:

chmod +777 ./mqnamesrv
chmod +777 ./mqbroker

 

11-----拓展(使用rocketmq-dashboard,页面查看rocket集群)

  rocketmq-dashboard下载:

链接:https://pan.baidu.com/s/1AQrfgSW8a5VuIVyq_FOfbA
提取码:dnjw

 

12、下载后,在idea导入该项目,在maven栏,跳过test测试,进行:clean、compile

 

 

 

13:然后在配置文件修改rocketMq的连接ip信息:(这里是我的vmware虚拟机里面的三台rocketmq的集群配置信息)

 

 

 

 

14:启动方式一:本地启动(不用说了吧)

   启动成功后:http://localhost:8888/

  这里的端口看properties配置文件,在13步骤大家可以看到我的server.port=8888。大家也可自行配置

 

15、linux方式启动打包的jar包:打包步骤在12,只要打包成功,就是没问题的。可以看到下图的jar包:rocketmq-dashboard-1.0.1-SNAPSHOT.jar

     linux启动该jar包如下:  方式一: java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar  (这种方式只要关闭执行命令后模式,就会停止)

                                           方式二:nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar (后台启动,这种方式即便是退出linux系统,jar包都运行)

 

 

16:现在已经启动了三台服务器,并且使用xshell连接上(如果不会怎么使用xshell连接虚拟机的,请看我的另外一篇博客):

 

 

 

 17:启动rocketmq-dashboard-1.0.1-SNAPSHOT.jar

      命令:sh start-api.sh

      start-api.sh的命令内容如下:

      

nohup java -Xms128m -Xmx256m  -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar > api.log 2>&1 &

  

 

 

 我们根据日志:api.log查看里面的日志输出即可知道是否启动成功:tail -fn200 api.log
此处我的rocketMq集群还没启动,所以会报连接不上的错误,但是这已经证明jar包启动成功,且端口:8888 那么界面的访问地址:http://ip:端口 =http://192.168.242.10:8888/

注意:如果把该地址放到浏览器提示无法访问该网站,那就是防火墙的问题,没有吧该端口:8888开放出去,请执行如下的命令其中之一:

  一:开放端口(这种方式我也试过,命令可以执行成功,但是访问地址还是不行):firewall-cmd --add-port=8888/tcp --permanent

 

  

 

 

 

  二:关闭防火墙(在自己的vmware可以使用该方式,但是在真正的linux服务器是万万不可---但是目前我使用该方式):systemctl stop firewalld

 

 

 

 

 

 

 

 

18:启动rocketMq集群:
  

在:192.168.242.10/192.168.242.11/192.168.242.12分别执行:
执行命令1:nohup sh mqnamesrv &
执行命令2:nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties  >/dev/null 2>&1 &

使用命令:jps可以知道是否启动成功:图二是成功的

注意:ROCKETMQ_HOME 是rocket在linux配置的环境变量
命令:vi /etc/profile

 

 

 

 

  

   19:上面18步骤我只在192.168.242.10执行了,大家可以在界面的cluster(集群)里可以看到该服务器上的集群————————有点小激动是不是

 

 

 

 注意:此处我已经把三台vmware的linux系统的防火墙已经关闭。systemctl stop firewalld 

posted @ 2022-01-26 11:18  QH.Thomas  阅读(573)  评论(0编辑  收藏  举报