RocketMq部署-二主二从异步集群(安装实践)(未完成)

 一、前言

RocketMQ 二主二从异步集群部署

RocketMQ web控制台2.0.0版本源码方式安装 

是根据上面这两篇文章部署的。不同的是我是单机安装集群:

有以下不同的地方:

1.1 二主二从安装在不同的目录:

  • rocketmq_0
  • rocketmq_1

 

 1.2 namesrv的端口

第一个namesrv端口是9876,第二个端口是9877。

1.3 broker端口

rocketmq_0:

  • broker-a    端口:10910
  • broker-b-s  端口:10921

rocketmq_1:

  • broker-b    端口:11920
  • broker-a-s 端口: 11911

1.4 创建目录

创建rocketmq_0:

mkdir -p /usr/local/soft/rocketmq_0/store/broker-a /usr/local/soft/rocketmq_0/store/broker-a/consumequeue /usr/local/soft/rocketmq_0/store/broker-a/commitlog /usr/local/soft/rocketmq_0/store/broker-a/index /usr/local/soft/rocketmq_0/logs /usr/local/soft/rocketmq_0/store/broker-b-s /usr/local/soft/rocketmq_0/store/broker-b-s/consumequeue /usr/local/soft/rocketmq_0/store/broker-b-s/commitlog /usr/local/soft/rocketmq_0/store/broker-b-s/index

 创建rocketmq_1:

mkdir -p /usr/local/soft/rocketmq_1/store/broker-a-s /usr/local/soft/rocketmq_1/store/broker-a-s/consumequeue /usr/local/soft/rocketmq_1/store/broker-a-s/commitlog /usr/local/soft/rocketmq_1/store/broker-a-s/index /usr/local/soft/rocketmq_1/logs /usr/local/soft/rocketmq_1/store/broker-b /usr/local/soft/rocketmq_1/store/broker-b/consumequeue /usr/local/soft/rocketmq_1/store/broker-b/commitlog /usr/local/soft/rocketmq_1/store/broker-b/index

 1.45主要命令和配置

1.5.1 namesrv

nohup sh /usr/local/soft/rocketmq_0/bin/mqnamesrv >/usr/local/soft/rocketmq_0/logs/mqnamesrv.log 2>&1 &

nohup sh /usr/local/soft/rocketmq_1/bin/mqnamesrv -c /usr/local/soft/rocketmq_1/conf/namesrv.properties >/usr/local/soft/rocketmq_1/logs/mqnamesrv.log 2>&1 &

/usr/local/soft/rocketmq_1/conf/namesrv.properties文件指定了namesrv端口:

listenPort=9877

1.5.2 broker

nohup sh /usr/local/soft/rocketmq_0/bin/mqbroker -c /usr/local/soft/rocketmq_0/conf/2m-2s-async/broker-a.properties > /usr/local/soft/rocketmq_0/logs/broker-a.log 2>&1 &

nohup sh /usr/local/soft/rocketmq_1/bin/mqbroker -c /usr/local/soft/rocketmq_1/conf/2m-2s-async/broker-a-s.properties > /usr/local/soft/rocketmq_1/logs/broker-a-s.log 2>&1 &

nohup sh /usr/local/soft/rocketmq_1/bin/mqbroker -c /usr/local/soft/rocketmq_1/conf/2m-2s-async/broker-b.properties > /usr/local/soft/rocketmq_1/logs/broker-b.log 2>&1 &

nohup sh /usr/local/soft/rocketmq_0/bin/mqbroker -c /usr/local/soft/rocketmq_0/conf/2m-2s-async/broker-b-s.properties > /usr/local/soft/rocketmq_0/logs/broker-b-s.log 2>&1 &

1.5.3 broker配置

broker-a:

brokerClusterName=qwx-cluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

#Broker 对外服务的监听端口
listenPort=10910
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=127.0.0.0.1:9876;127.0.0.0.1:9877
#存储路径
storePathRootDir=/usr/local/soft/rocketmq_0/store/broker-a
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq_0/store/broker-a/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq_0/store/broker-a/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq_0/store/broker-a/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq_0/store/broker-a/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq_0/store/broker-a/abort

broker-a-s:

brokerClusterName=qwx-cluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

#Broker 对外服务的监听端口
listenPort=11911
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=127.0.0.0.1:9876;127.0.0.0.1:9877
#存储路径
storePathRootDir=/usr/local/soft/rocketmq_1/store/broker-a-s
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq_1/store/broker-a-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq_1/store/broker-a-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq_1/store/broker-a-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq_1/store/broker-a-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq_1/store/broker-a-s/abort

broker-b:

brokerClusterName=qwx-cluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

#Broker 对外服务的监听端口
listenPort=11920
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=127.0.0.0.1:9876;127.0.0.0.1:9877
#存储路径
storePathRootDir=/usr/local/soft/rocketmq_1/store/broker-b
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq_1/store/broker-b/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq_1/store/broker-b/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq_1/store/broker-b/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq_1/store/broker-b/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq_1/store/broker-b/abort

broker-b-s:

brokerClusterName=qwx-cluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

#Broker 对外服务的监听端口
listenPort=10921
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=127.0.0.0.1:9876;127.0.0.0.1:9877
#存储路径
storePathRootDir=/usr/local/soft/rocketmq_0/store/broker-b-s
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq_0/store/broker-b-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq_0/store/broker-b-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq_0/store/broker-b-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq_0/store/broker-b-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq_0/store/broker-b-s/abort

二、搭建namesrv集群和broker集群遇到的问题

2.1 同一台机器启动两个namesrv,第二个namesrv要改端口

默认是9876端口,第二个namesrv需要改成9877:

1.新建namesrv.propeties文件,在此文件新增以下内容:

listenPort=9877

如下图: 

 2.以此配置文件启动namesrv:

nohup sh /usr/local/soft/rocketmq_1/bin/mqnamesrv -c /usr/local/soft/rocketmq_1/conf/namesrv.properties >/usr/local/soft/rocketmq_1/logs/mqnamesrv.log 2>&1 &

2.2 启动broker,在虚拟机中可能由于内存不够导致无法启动

这个问题前言中的【RocketMQ 二主二从异步集群部署】第八节有写,引述以下:

在虚拟机中可能由于内存不够导致无法启动,日志文件中出现如下错误:

nohup: ignoring input
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
vim /usr/local/soft/rocketmq/bin/runbroker.sh

把8g和4g改成512m和256m

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

 再次启动。

2.2.1 补充

启动报错:

 解决方法:

除了要修改runbroker.sh,还要修改runserver.sh、tools.sh,一共要修改三个文件:

  • runbroker.sh
  • runserver.sh
  • tools.sh

参考链接:RocketMQ启动报错Please set the JAVA_HOME variable in your environment, We need java(x64)_奔跑吧邓邓子的博客-CSDN博客_rocketmq启动报错

2.3 启动报错-jdk路径问题

报错:

这里是因为jdk路径与启动脚本中的jdk路径不一致导致的。在此前我已经安装了jdk。
还是报错,但是目录改成功了。
在回来看上图,提示没有.../bin/java问题,那么就有可能是jdk的安装的问题;

查看java安装路径:/usr/lib/jvm/java...

 确实没有jdk目录。

用javac可以运行通过,而用javac -version运行不通过:

 到这里,可以确定是java安装的问题了,原因是:openjdk默认安装是没有bin目录的,要选择开发版本安装。

记得安装完成后,做以下操作:

1.yum install java-1.8.0-openjdk-devel.x86_64

2.vim /etc/profile文件,添加以下内容:

#set java environment
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-0.el8_3.x86_64
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-0.el8_3.x86_64/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JRE_HOME/bin:$JAVA_HOME/bin

3.让环境变量生效

source etc/profile

解决问题拓展链接:解决linux安装新版JDK时,Java文件夹下没有lib、bin等文件,只有jre的问题_掐住命运的脚脖子的博客-CSDN博客_linux只安装了jre

 linux系统yum install jdk后,如何查找安装目录进行环境变量配置 - 弦歌雅意 - 博客园

2.3.1 yum卸载jdk

 装了默认的openjdk,要卸载了装开发版,链接附上:

CentOS 7.x 通过yum安装和卸载 JDK1.8_菜鸟也疯狂_的博客-CSDN博客_yum 卸载jdk1.8

解决linux安装新版JDK时,Java文件夹下没有lib、bin等文件,只有jre的问题_掐住命运的脚脖子的博客-CSDN博客_linux只安装了jre

2.4 再次执行,依然报错 

        出现如下问题 是因为我们在集群中master和slave共用一个storePath造成的,这个时候 我们要启动的每一个broker要指定不一样的storePath 路径就行,也就是在我们的配置文件中修改即可。

broker-a.properties、broker-a-s.properties、broker-b.properties、broker-b-s.properties配置文件增加以下内容,把共用的路径全部分开:

netstat -an|grep 10920

2.5 启动broker-b,启动报错:

        上面broker-a启动成功了。启动broker-b,报了地址已使用的错误:

 这个错误一般就是端口被占用。

原因分析:

        broker-b之前我启动过一次,后来kill掉了,猜测是没kill干净,后来我发现,每一次kill都不干净(不知道是什么原因,以后再探究),都需要找到关联端口的进程号,在kill掉这个进程号:

1.查看端口是否在运行,【netstat -an|grep 10920】:

 2.查找端口运行目录,【lsof -i 10920】:

3. 找不到lsof命令,安装:

yum install lsof

4.继续: lsof -i:10920

5.查询5731是什么程序?

暂时不知道是什么原因,先kill掉。

6.启动broker-b,正常

2.6 发现broker-b启动后,broker-a的服务又没了

启动broker-a,报错:

怀疑是端口问题,现在给rocketmq_1服务的端口全换掉;

把broker-b,和broker-a-s端口换成了11920、11911

 2.7 然后我怀疑,必须要先启动master,再启动slaver

启动顺序:broker-a——>broker-a-s——>broker-b——>broker-b-s

 查看服务,顺利启动了四个:

2.8 测试集群是否有效

用代码测试,报错:

暂时没有解决,以后有机会再解决....

三、搭建rocket管理界面

RocketMQ web控制台2.0.0版本源码方式安装

        最初搭建管理界面的初衷是为了查看我的namesrv是否能在界面查得到。但搭建完成后发现集群信息里没有搭建的broker集群信息:

 查看rocketmq-web端日志:

心跳注册中心是成功的,所以我觉得有可能是brocker集群没成功注册到nameserver。 

四、问题还是没找到,以后有空再找把

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值