Linux部署RocketMQ集群

Linux部署RocketMQ集群

1. Linux启动RocketMQ

  1. 进入rocketmq环境变量的路径:bin目录
cd /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin
  1. 在bin目录下启动Name Server
nohup sh mqnamesrv
  1. 在bin目录下启动Broker
nohup sh mqbroker

注:若无法启动,改runbroker.sh和runserver.sh中的启动内存,要小于虚拟机内存,两者启动内存大小一致

  1. 查看两个进程是否启动
jps

提示:3601 Jps
​ 3494 NamesrvStartup
​ 3530 BrokerStartup

  1. 关掉服务器:需先关broker,再关nameserver
sh mqshutdown broker

提示:The mqbroker(36695) is running…
Send shutdown request to mqbroker(36695) OK

sh mqshutdown namesrv

提示:The mqnamesrv(36664) is running…
Send shutdown request to mqnamesrv(36664) OK

2. Linux部署双master模式集群

  1. 修改两台机子的hosts文件:vi /ect/hosts
192.168.9.157 rocketmq-nameserver1 
192.168.9.157 rocketmq-master1 
192.168.9.150 rocketmq-nameserver2 
192.168.9.150 rocketmq-master2 

注:修改前需先关闭两台机子防火墙
2. 重启网卡

service network restart
  1. 两台机互相ping一下,例:
ping 192.168.9.150 
ping rocketmq-nameserver2 
ping rocketmq-master2
  1. 解压rocketmq到指定的文件夹
tar -zxvf rocketmq-all-4.3.2.tar.gz -C /usr/local

修改文件名为rocketmq: mv rocketmq-all-4.3.2 rocketmq
创建软连接(可有可无): ln -s rocketmq rocketmq

  1. 根据需要,创建数据存储路径(两台机器都要创建),可跳过
mkdir rocketmq/data                     //存储路径
mkdir rocketmq/data/commitlog           //commitLog 存储路径
mkdir rocketmq/data/consumerqueue       //消费队列存储路径存储路径
mkdir rocketmq/data/index               //消息索引存储路径
  1. 两台机分别进入/usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-noslave目录,增加代码(注意路径是:/conf/2m-noslave)

主机1修改broker-a.properties文件:

namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;

主机2修改broker-b.properties文件 :

namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;

注:根据需要可加其他配置,如下

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a|broker-b
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 0点
deleteWhen=00
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/opt/rocketmq/data
#commitLog 存储路径
storePathCommitLog=/opt/rocketmq/data/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/opt/rocketmq/data/consumequeue
#消息索引存储路径
storePathIndex=/opt/rocketmq/data/index
#checkpoint 文件存储路径
storeCheckpoint=/opt/rocketmq/data/checkpoint
#abort 文件存储路径
abortFile=/opt/rocketmq/data/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
  1. 根据需要,修改日志配置文件(两台机器同样操作),可跳过

创建一个logs目录: mkdir /opt/rocketmq/logs
然后执行以下代码进行日志文件的替换,sed是linux的替换命令。

cd /opt/rocketmq/conf && sed -i 's#${user.home}#/opt/rocketmq#g' *.xml
  1. 根据需要,修改启动脚本参数,JVM调优(两台机器同样操作),可跳过

    由于将nameServer和broker放在了同一台机器上,所以根据实际情况可分别对nameServer和broker进行jvm的性能调优,生产环境默认即可不需修改。

    比如我的虚拟机内存只有1G,假设nameserver和broker默认启动内存为1G的话,那么我的虚拟机会因为内存不够而无法同时启动nameserver和broker,此时就需要把两个的启动内存改小一点。

a)broker的调优

vim /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin/runbroker.sh

修改 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"中的启动内存

b)nameserver的调优

 vim /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin/runserver.sh

修改 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"中的启动内存

  1. 返回bin目录分别启动两台机子的nameserver( 两台机器同样操作 )
nohup sh mqnamesrv &

可用jps命令查看是否有nameserver进程

  1. 在bin目录分别启动两台机子broker:

主机1(master1):注意主要路径是 /conf/2m-noslave/broker-a.properties

nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &

主机2(master2):注意主要路径是 /conf/2m-noslave/broker-b.properties

nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &

可用jps命令查看是否有broker进程
注:先启动两台机器的NameServer,再启动两台机器的Borker,关机的时候顺序相反,先关闭两台机器的Broker,再关闭两台机器的Nameserver。

  1. 在rocketmq的bin目录下查看集群情况:
sh mqadmin clusterList -n "192.168.9.157:9876;192.168.9.150:9876"

注:也可在Windows端开启管控台,启动步骤在下文第4点

  1. 停止broker命令
sh mqshutdown broker
  1. 停止nameserver命令
sh mqshutdown namesrv

3. Linux部署双master双slave异步复制集群(精简版)

  1. 修改四台机子的hosts文件:vi /ect/hosts
192.168.9.157 rocketmq-nameserver1 
192.168.9.157 rocketmq-master1 
192.168.9.150 rocketmq-nameserver2 
192.168.9.150 rocketmq-master2 
192.168.9.154 rocketmq-nameserver3 
192.168.9.154 rocketmq-master1-slave 
192.168.9.155 rocketmq-nameserver4 
192.168.9.155 rocketmq-master2-slave
  1. 重启网卡
service network restart
  1. 互相ping一下,例:
ping 192.168.9.150 
ping rocketmq-nameserver2 
ping rocketmq-master2
  1. 四台机进入/usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async目录,增加一行代码

主机1修改broker-a.properties文件
主机2修改broker-b.properties文件
从机1修改broker-a-s.properties文件
从机2修改broker-b-s.properties文件

namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
  1. 在bin目录分别启动四台机子的nameserver
nohup sh mqnamesrv &
  1. 在bin目录分别启动四台机子broker:

主机1:

nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &

主机2:

nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 &

从机1:

nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &

从机2:

nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 &
  1. 在rocketmq的bin目录下查看集群情况:
sh mqadmin clusterList -n "192.168.9.157:9876;192.168.9.150:9876;192.168.9.154:9876;192.168.9.155:987"

注:可在Windows端开启管控台,步骤下文有,需改application.properties中的namesrvAddr

4. Windows 启动 RocketMQ 管控台

  1. 下载地址:https://github.com/apache/rocketmq-externals.git

  2. 打开下载好的文件,先进入 E:\rocketmq-externals-master\rocketmq-console\src\main\resources,修改application.properties中的namesrvAddr和server.port配置,例如:

server.port=8082  //此处配置管控台端口,浏览器访问就是用这个端口
rocketmq.config.namesrvAddr=192.168.0.158:9876;192.168.0.179:9876 
  1. Cmd命令框执行进入E:\rocketmq-externals-master\rocketmq-console,编译生成
mvn clean package -Dmaven.test.skip=true
  1. 编译成功后,Cmd命令框执行进入E:\rocketmq-externals-master\rocketmq-console\target,启动‘rocketmq-console-ng-1.0.0.jar’。
java -jar rocketmq-console-ng-1.0.0.jar
  1. 浏览器中输入‘127.0.0.1:配置端口’,成功后即可查看。localhost:8082
    端口在E:\rocketmq-externals-master\rocketmq-console\src\main\resources中的‘application.properties’文件可看,如server.port=8082

猜你喜欢

转载自blog.csdn.net/zshaowoo/article/details/84659826