当前位置: 首页 > 科技观察

从0到1手把手教你搭建RocketMQ集群

时间:2023-03-17 23:58:43 科技观察

大家好,我是君哥,今天分享一下RocketMQ集群的搭建方法。本文搭建集群的环境为2台云主机,架构如下:分别在47.xx.xx.xx和39.xx.xx.xx上部署一个NameServer和一个Brokermaster节点,以及这里不要搭建slave节点。即官网介绍的2m-noslave构建模式。注:官网提供了三种配置模式:2m-2s-sync、2m-2s-async、2m-noslave。所有三种配置都使用异步闪存策略:ASYNC_FLUSH。集群搭建成功后,Broker会向NameServer注册Topic路由信息,Producer和Consumer会从NameServer获取路由信息,然后Producer根据路由信息向Broker发送消息,Consumer根据路由从Broker拉取消息信息。1准备工作安装RocketMQ首先需要在云主机上安装Java环境和Maven环境。这里我就不细说了。Java和Maven环境安装完成后,到官网下载最新版本,地址如下:https://dlcdn.apache.org/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip下载完成后解压编译,执行以下命令:>unziprocketmq-all-4.9.4-source-release.zip>cdrocketmq-all-4.9.4-source-release/>mvn-Prelease-all-DskipTestscleaninstall-U>cddistribution/target/rocketmq-4.9.4/rocketmq-4.9.4当看到下图的输出时,编译成功:2Start2.1StartNameServer因为我的cloudhost内存比较小,RocketMQ默认需要启动NameServerJVM堆内存默认是4g,所以需要修改默认堆内存。修改后的文件为:rocketmq-all-4.9.4-source-release/distribution/target/rocketmq-4.9.4/rocketmq-4.9.4/bin/runserver.sh修改后的配置如下:JAVA_OPT="${JAVA_OPT}-server-Xms256m-Xmx256m-Xmn128m-XX:MetaspaceSize=128m-XX:MaxMetaspaceSize=320m》修改完成后,执行以下命令:nohupshbin/mqnamesrv&启动成功后,出现如下日志nohup.out文件中打印:名称服务器启动成功。serializeType=JSON搭建好一台机器后,用同样的方法搭建第二台机器。2.2启动Broker同样,RocketMQ启动Broker所需的JVM堆内存默认为8g,因此需要修改堆内存。修改后的文件为:rocketmq-all-4.9.4-source-release/distribution/target/rocketmq-4.9.4/rocketmq-4.9.4/bin/runbroker.sh修改后的配置如下:JAVA_OPT="${JAVA_OPT}-server-Xms512m-Xmx512m”创建一个conf.properties文件,内容如下:brokerClusterName=MyTestClusterbrokerName=broker-abrokerId=0deleteWhen=04fileReservedTime=48brokerRole=ASYNC_MASTERflushDiskType=ASYNC_FLUSHnamesrvAddr=127.0.78xx配置之后:7,x78xxbroker-a节点,启动命令如下:nohupbashbin/mqbroker-cconf/broker.properties&Broker启动成功后,NameServer的日志如下图:以同样的方式启动broker-b,conf.properties文件配置如下:#cluster名称brokerClusterName=MyTestCluster#broker名称brokerName=broker-bbrokerId=0#删除消息存储过期文件的时间是凌晨4点deleteWhen=04#的消息存储文件的保留期that没有更新是48小时,48小时后会过期,会被删除fileReservedTime=48brokerRole=ASYNC_MASTERflushDiskType=ASYNC_FLUSHnamesrvAddr=127.0.0.1:9876;xx.xx.xx.xx:9876启动成功后,执行mqadmin命令查看集群信息:[root@rocketmq-4.9.4]#./bin/mqadmintopicList-n127.0.0.1:9876MyTestClusterRMQ_SYS_TRANS_HALF_TOPICBenchmarkTestOFFSET_MOVED_EVENTiZ8vbfyc7hfzygtpgapblyZTBW102SELF_TEST_TOPICDefaultClusteriZ2ze4m2ri7irk6au5mbfgZSCHEDULE_TOPIC_XXXXDefaultCluster_REPLY_TOPICbroker-bbroker-aMyTestCluster_REPLY_TOPIC注意:执行上面命令需要修改bin/tools.sh中的JVM参数,配置如下:JAVA_OPT="${JAVA_OPT}-server-Xms256m-Xmx256m-Xmn128m-XX:MetaspaceSize=128m-XX:MaxMetaspaceSize=128m"3dashboard3.1安装dashboard,需要编译源码。源码github地址如下:https://github.com/apache/rocketmq-dashboard下载后修改application.yml参数。我这里只修改了NameServerAddress:rocketmq:config:namesrvAddrs:-127.0.0.1:9876-47.xx.xx.xx:9876然后执行Maven打包命令打印出jar包:mvncleanpackage-Dmaven。test.skip=true打包后的jar包上传到服务器,执行如下命令启动:java-jarrocketmq-dashboard-1.0.1-SNAPSHOT.jar启动成功后,输出如下日志:3.2测试浏览器输入http://39.xx.xx.xx:8080/界面如下:使用如下命令创建一个名为MyTestTopic的Topic:shbin/mqadminupdateTopic-n127.0.0.1:9876\;47.92.71.246:9876-cMyTestCluster-tMyTestTopic这个在创建Topic的界面可以看到,如下图:使用命令发送消息:[root@rocketmq-4.9.4]#shbin/mqadminsendMessage-n127.0.0.1:9876-tMyTestTopic-p'hellotestmessage'#BrokerName#QID#SendResult#MsgIdbroker-a1SEND_OK7F000001D3C3339097527B50D1740000查看界面上的消息,如下图:4总结本文主要介绍RocketMQ集群希望对大家了解RocketMQ有所帮助