专业的编程技术博客社区

网站首页 > 博客文章 正文

RocketMQ - 搭建RocketMQ

baijin 2024-11-18 08:55:41 博客文章 3 ℃ 0 评论

一台机器快速部署

在机器上部署RocketMQ之前,先安装一下JDK,同时要在环境变量中设置JAVA_HOME,接着在机器上执行下面命令来构建Dledger:

git clone https://github.com/openmessaging/openmessaging-storage-dledger.git
cd openmessaging-storage-dledger
mvn clean install -DskipTests

接着执行下面命令来构建RocketMQ:

git clone https://github.com/apache/rocketmq.git
cd rocketmq
git checkout -b store_with_dledger original/store_with_dledger
mvn -Prelease-all -DskipTests clean install -U

接着进入一个目录中:

cd distribution/target/apache-rocketmq

在这个目录中,需要编辑三个文件,一个是bin/runserver.sh,一个是bin/runbroker.sh,另外一个是bin/tools.sh

在里面找到如下三行,然后将第二行和第三行都删了,同时将第一行的值修改为你自己的JDK的主目录

[!-e "$JAVA_HOME/bin/java"] && JAVA_HOME=$HOME/jdk/java
[!-e "$JAVA_HOME/bin/java"] && JAVA_HOME=$HOME/usr/java
[!-e "$JAVA_HOME/bin/java"] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)"

注:如果要查看你的JDK安装在哪了,可以用命令:/usr/libexec/java_home -V,修改为你的java主目录即可

接着执行下面的命令进行快速启动RocketMQ集群启动:

sh bin/dledger/fast-try.sh start

这个命令会在当前这台机器上启动一个NameServer和三个Broker,三个Broker其中一个是Master,另外两个是Slave,瞬间就可以组成一个最小可用的RocketMQ集群。

接着使用下面命令检查一下RocketMQ集群的状态

sh bin/mqadmin clusterList -n 127.0.0.1:9876

此时你需要等待一会儿,这个命令执行的过程有点缓慢,大概可能几秒到几十秒过后,你会看到三行记录,说是一个RaftCluster,Broker名称叫做RaftNode00,然后BID是0、1、2,也有肯能是0、1、3

这就说明RocketMQ集群启动成功了,BID为0的就是Master,BID大于0的都是Slave,其实在这里也可以叫做Leader和Follower。

接着就可以尝试一下Slave是如何自动切换为Master的了。

我们可以看到三台机器的地址分别是:

1. 192.168.1.15:30921
2. 192.168.1.15:30911
3. 192.168.1.15:30931

我们发现30921端口的Broker的BID是0,说明他是Master

此时我们可以用命令lsof -i:30921找出占用30921端口的进程的PID,接着就用kill -9 的命令给他杀了。

等待个10秒左右,再次执行命令查看集群的状态:

sh bin/mqadmin clusterList -n 127.0.0.1:9876

此时就会发现作为Leader的BID为0的节点,变成另外一个Broker了,就说明Slave切换成了Master了。

完成三台NameServer的部署

其实RocketMQ集群部署并不难,主要就是在几台机器上做好相应的配置,然后执行一些命令启动NameServer和Broker就可以了。

首先是在三台NameServer的机器上,大家就按照上面的步骤安装好java,构建好Dledger和RocketMQ,然后编辑对应的文件,设置好JAVA_HOME就可以了。

此时可以执行如下命令就可以启动nameserver了:

nohup sh mqnamesrv &

这个NameServer监听的端口默认就是9876,所以如果你在三台机器上都启动了NameServer,那么他们的端口都是9876。

完成一组Broker集群的部署

在Broker的机器上安装好Java,构建好Dledger和RocketMQ,然后编辑好对应的文件。

接着就可以执行下面命令:

nohup sh bin/mqbroker -c conf/dledger/broker-n0.conf &

这里要说一下,第一个Broker的配置文件是broker-n0.conf,第二个broker的配置文件可以是broker-n1.conf,第三个broker的配置文件可以是broker-n2.conf。

对于这个配置文件里的东西也要说明一下,自己要做对应的修改:

# 这个是集群的名字,整个broker集群都可以用这个名字
brokerClusterName = RaftCluster
# 这是Broker的名称,比如你有一个Master和两个Slave,那么他们Broker名称必须是一样的,因为他们三个是一个分组,如果你有另外一组Master和Slave,你可以给他们起一个别的名字,比如RaftNode01
brokerNaem = RaftNode00
# 这个就是你Broker监听的端口号,如果每台机器上就部署一个Broker,可以考虑就用这个端口号,不需要修改
listenPort = 30911
# 这里是配置NameServer的地址,如果你有很多个NameServer的话,可以在这里写入多个NameServer的地址
namesrvAddr = 127.0.0.1:9876
# 下面两个目录是存放broker数据的地方, 你可以换成别的目录,类似于/usr/local/rocketmq/noded00之类的
storePathRootDir=/tmp/mqstore/node00
storePathCommitLog=/tmp/rmqstore/node00/commitlog

# 这个是非常关键的一个配置,就是是否启动DLedger技术,这个必须是true
enableDlegerCommitLog = true
# 这个一般建议和Broker名字保持一致,一个Master加两个Slave会组成一个Group
dLegerGroup=RaftNode00
# 这个很关键,对于每一组Broker,你得保证他们的这个配置是一样的,在这里要写出来一组里有哪几个Broker,比如这里假设有三台机器部署了Broker,要让他们作为一组,那么在这里就得写入他们三个的ip地址和监听的端口号
dLegerPeers=n0-127.0.0.1:30911;n1-127.0.0.1:30912;n2-127.0.0.1:30913

# 这个是代表了一个Broker在组里的id,一般就是n0、n1、n2之类的,这个你得跟上面的dLegerPeers中的n0、n1、n2相匹配
dLegerSelfId=n0
# 这个是发送消息的线程数量,一般建议你配置成跟你的CPU核数一样
sendMessageThreadPoolNums = 8

配置修改好之后,分别启动broker,启动之后,可以查看broker集群的状态

sh bin/mqadmin clusterList -n 127.0.0.1:9876

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表