0
点赞
收藏
分享

微信扫一扫

rocketmq集群(一),基于centos7搭建rocketmq集群-2m-2s-async

眸晓 2022-04-29 阅读 41
阿里云

一、下载rocketmq,本文案例采用的是最新稳定版本rocketmq-all-4.9.3-bin-release,以下是下载路径

Downloading the Apache RocketMQ Releases - Apache RocketMQ

二、准备三台虚拟机安装centos7环境,root密码 root(此处可以根据实际情况设置),IP地址分别为:

使用root账户进入

三、创建用户

四、系统配置

4.1 设置免密登陆

      使用命令ssh-keygen在hadoop01上面生成key。

      进入/root/.ssh目录下查看是否生成成功

出现如下

表示公私密钥生成成功

 利用ssh-copy-id分发到其他几台机器

我环境已经分发过,这里就不再演示。主要做的目的是可以在hadoop01上直接ssh 或者scp到另外的机器,不需要输密码,注意:此设置非rocketmq官方要求

4.2 关闭防火墙

分别关闭三台机器的防火墙

出现not running表示关闭完成 

五、安装jdk

给hxroot用户创建/app目录
上传jdk的tar包
修改~/.bash_profile,配置环境变量。

使环境生效

具体的jdk安装过程请阅读我的rocketmq单机环境中的安装步骤

https://blog.csdn.net/he_xin2009/article/details/124312414?spm=1001.2014.3001.5502icon-default.png?t=M3K6https://blog.csdn.net/he_xin2009/article/details/124312414?spm=1001.2014.3001.5502六、六、安装RocketMQ

上传zip包,再指定目录下解压。

然后配置环境变量

具体的安装和配置过程请阅读我的另一篇rocketmq单机环境搭建,链接如下:
https://blog.csdn.net/he_xin2009/article/details/124312414?spm=1001.2014.3001.5502icon-default.png?t=M3K6https://blog.csdn.net/he_xin2009/article/details/124312414?spm=1001.2014.3001.5502

温馨提示:

RocketMQ在4.5版本之前都不支持master宕机后slave自动切换。在4.5版本后,增加了基于
Dleger实现的主从切换。这里用的目前最新的4.9.3版本


 七、配置RocketMQ集群

        RocketMQ支持多种集群策略

        2m-2s-async(本文采用模式)-2主2从异步刷盘(吞吐量较大,但是消息可能丢失)

        2m-2s-sync:2主2从同步刷盘(吞吐量会下降,但是消息更安全)

        2m-noslave :2主无从(单点故障),然后还可以直接配置broker.conf,进行单点环境配置

        dledger:用来实现主从切换的。集群中的节点会基于Raft协议随机选举出一个leader,
其他的就都是follower。通常正式环境都会采用这种方式来搭建集群。

        此次搭建一个2主2从异步刷盘的集群,所以我们会使用conf/2m-2s-async下的配
置文件,实际项目中,为了达到高可用,一般会使用dleger。预备设计的集群情况如下:

集群情况
机器名称nameServer节点部署broker节点部署
hadoop01nameserver
hadoop02nameserverbroker-a,broker-b-s
hadoop03nameserverbroker-b,broker-a-s

        由于采用的是2m-2s-async,所以需要进入rocketmq的config目录下修改2m-2s-async的配置文件。--只需要配置broker.conf

7.1、配置第一组broker-a

在hadoop02上先配置borker-a的master节点。先配置2m-2s-async/broker-a.properties,cd到文件目录

 配置内容如下

:wq!保存并退出

该节点对应的从节点在hadoop03上。在hadoop03上cd到指定目录下/app/rocketmq/conf/2m-2s-async下修改2m-2s-async/broker-a-s.properties 只需要修改brokerId和brokerRole

执行

 配置内容

7.2、 配置第二组Broker-b

这一组broker的主节点在hadoop03上,所以需要配置hadoop03上的conf/2m-2s-async/broker-b.properties

同上进入到hadoop03的文件目录/app/rocketmq/conf/2m-2s-async/下,执行编辑文件命令

配置内容

:wq!保存并退出 

然后第二组hadoop03对应的slavehadoop02上,修改hadoop02上的conf/2m-2s-async/broker-b-s.properties

同样地进入到hadoop02指定目录/app/rocketmq/conf/2m-2s-async/,执行修改broker-b-s.properties文件的命令

配置内容

 

7.3、启动nameServer
        由于本地内存有限,修改三个节点上的bin/runserver.sh,调整里面的jvm内存配置。找到下面这一行调整下内存

 

 :wq!保存并退出

在hadoop01、hadoop02、hadoop03分别执行启动nameServer的命令

执行命令完成后,使用cat nohup.out查看nohup.out,看到下面的一条关键日志就是启动成功了。 

执行命令后通过jps命令查看进程验证是否启动成功,

注意:如果jps命令不存在,这个与jdk有关

执行一下 

 通过日记发现RocketMQ在runserver.sh中是使用的CMS垃圾回收期,而在runbroker.sh中使用
的是G1垃圾回收期

7.4、启动broker
        启动broker是使用的mqbroker指令,只是注意启动broker时需要通过-c 指定对应的配置文件。在hadoop02上启动broker-a的master节点和在hadoop03上启动broker-b的slave节点

在hadoop03上启动broker-b的master节点和在hadoop02上启动broker-a的slave节点

注意:启动slave时,如果遇到报错 Lock failed,MQ already started ,那是因为有多个实例共用了同一个storePath造成的,这时就需要调整store的路径

八、启动状态检查

 使用jps指令,能看到一个NameSrvStartup进程和两个BrokerStartup进程。
nohup.out中也有启动成功的日志。

对应的日志文件:

踩坑:如果出现如下错误,检查防火墙是否关闭

 

九、命令行快速验证

 在RocketMQ的安装包中,提供了一个tools.sh工具可以用来在命令行快速验证RocketMQ服务。我们在hadoop02上进入RocketMQ的安装目录:
发送消息:默认会发1000条消息

接收消息:

注意,这是官方提供的Demo,但是官方的源码中,这两个类都是没有指定nameServer的,所以
运行会有点问题。要指定NameServer地址,可以配置一个环境变量NAMESRV_ADDR,这样默认会读取这个NameServer地址。可以配到.bash_profile里或者直接临时指定。

 然后就可以正常执行了。

表示发送成功,如果在hadoop03机器正常消费,表示集群环境搭建完成 


 

 

举报

相关推荐

0 条评论