十步搞定rocketmq3.5.8 集群安装

简介:

阿里的rocketmq

RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:

1、支持严格的消息顺序;

2、支持Topic与Queue两种模式;

3、亿级消息堆积能力;

4、比较友好的分布式特性;

5、同时支持Push与Pull方式消费消息;

https://github.com/alibaba/RocketMQ/releases 最新版本

在生产环境部署Broker,请参考以下软硬件要求

https://github.com/alibaba/RocketMQ/wiki/system_requirements

安装

第一步:安装jdk、修改主机名、添加hosts

1
2
3
4
5
# jdk环境变量,具体怎么安装这里不再阐述
root@rocketmq-master2:~ # java -version
java version  "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
1
2
3
# 主机名,具体如何修改这里不再阐述
root@rocketmq-master2:~ # hostname 
rocketmq-master2
1
2
3
4
5
6
7
8
9
10
11
# hosts文件修改
root@rocketmq-master2:~ # cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       MQnameserver
192.168.1.157  mqnameserver1
192.168.1.158    mqnameserver2
192.168.1.157  rocketmq-master1
192.168.1.158    rocketmq-master2
root@rocketmq-master2:~ # ping mqnameserver1
PING mqnameserver1 (192.168.1.157) 56(84) bytes of data.
64 bytes from mqnameserver1 (192.168.1.157): icmp_req=1 ttl=64  time =0.122 ms

第二步:下载安装包并上传服务器/usr/local 下面(这个路径随便写,我比较喜欢放到这里)

源码的安装包下载地址为:https://github.com/alibaba/RocketMQ/releases

编译好的下载包地址为:http://download.csdn.net/detail/xinsir88/9772820

第三步:解压并删除原有程序包

1
2
unzip alibaba-rocketmq3.5.8.zip
rm -rf alibaba-rocketmq3.5.8.zip

第四步:对解压好的目录做一个超链接

1
ln  -s alibaba-rocketmq rocketmq3.5.8

第五步:修改环境变量并使环境变量生效

在/etc/profile文件中添加如下代码

1
2
3
# 这里的路径根据自己安装的路径进行对应修改
export  ROCKETMQ_HOME= /usr/local/rocketmq3 .5.8
export  PATH=$PATH::$ROCKETMQ_HOME /bin

执行下面命令使之修改生效

1
  source   /etc/profile

第六步:修改broker A的配置文件,注释原先所有配置,添加如下内容

文件路径:/usr/local/rocketmq3.5.8/conf/2m-noslave/broker-a.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
brokerClusterName=AdpMqCluster
brokerName=broker-a
brokerId=0
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
defaultTopicQueueNums=4
autoCreateTopicEnable= true
autoCreateSubscriptionGroup= true
listenPort=10911
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88
storePathRootDir= /Disk/data/rocketmq/store
storePathCommitLog= /Disk/data/rocketmq/store/commitlog
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable= false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128

第七步:修改brokerB的配置文件,注释原先所有配置,添加如下内容

文件路径:/usr/local/rocketmq3.5.8/conf/2m-noslave/broker-b.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
brokerClusterName=AdpMqCluster
brokerName=broker-b
brokerId=1
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
defaultTopicQueueNums=4
autoCreateTopicEnable= true
autoCreateSubscriptionGroup= true
listenPort=10911
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88
storePathRootDir= /Disk/data/rocketmq/store
storePathCommitLog= /Disk/data/rocketmq/store/commitlog
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable= false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128

第八步:分别修改启动nameserver和broker时候设定的内存大小(根据个人的机器配置进行修改)

分别修改两台主机的runserver.sh和runbroker.sh文件

runserver.sh文件修改

1
2
39  #JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"
40 JAVA_OPT= "${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=64m -XX:MaxPermSize=128m"

runbroker.sh文件修改

1
2
  39  #JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"
  40 JAVA_OPT= "${JAVA_OPT} -server -Xmx1g -Xmx1g -Xmn250m -XX:PermSize=64m -XX:MaxPermSize=128m"

第九步:分别启动两台主机的NameServer和broker

启动顺序:NameServer A ---> NameServer B --->broker A ---> broker B

1
2
3
4
# 启动NameServer命令
root@rocketmq-master1: /usr/local/rocketmq3 .5.8 /bin # pwd
/usr/local/rocketmq3 .5.8 /bin
root@rocketmq-master1: /usr/local/rocketmq3 .5.8 /bin # nohup sh mqnamesrv &
1
2
3
4
# 启动Broker A命令
root@rocketmq-master1: /usr/local/rocketmq3 .5.8 /bin # pwd
/usr/local/rocketmq3 .5.8 /bin
nohup  sh mqbroker -c .. /conf/2m-noslave/broker-a .properties >  /dev/null  2>&1 &
1
2
3
4
# 启动Broker B命令
root@rocketmq-master2: /usr/local/rocketmq3 .5.8 /bin # pwd
/usr/local/rocketmq3 .5.8 /bin
nohup  sh mqbroker -n 192.168.1.157:9876 -c .. /conf/2m-noslave/broker-b .properties  > /dev/null  2>&1 &

第十步:分别检查是否成功启动,检查命令:jps 如果发现有Nameserver和Broker进程在问题基本不大,可以写代码进行测试了

NameServer A

1
2
3
4
root@rocketmq-master1: /usr/local/rocketmq3 .5.8 /conf/2m-noslave # jps 
3586 NamesrvStartup
4021 Jps
3663 BrokerStartup

NameServer B

1
2
3
4
root@rocketmq-master2: /usr/local/rocketmq3 .5.8 /bin # jps
1290 NamesrvStartup
1706 Jps
1323 BrokerStartup

呜谢:

感谢重要参考文档:

http://blog.csdn.net/a19881029/article/details/34446629









本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1903894,如需转载请自行联系原作者
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
8月前
|
消息中间件 负载均衡 监控
【面试问题】RabbitMQ 的集群
【1月更文挑战第27天】【面试问题】RabbitMQ 的集群
|
16天前
|
消息中间件 存储 运维
2024最全RabbitMQ集群方案汇总
本文梳理了RabbitMQ集群的几种方案,主要包括普通集群、镜像集群(高可用)、Quorum队列(仲裁队列)、Streams集群模式(高可用+负载均衡)和插件方式。重点介绍了每种方案的特点、优缺点及适用场景。搭建步骤包括安装Erlang和RabbitMQ、配置集群节点、修改hosts文件、配置Erlang Cookie、启动独立节点并创建集群,以及配置镜像队列以提高可用性和容错性。推荐使用Quorum队列与Streams模式,其中Quorum队列适合高可用集群,Streams模式则同时支持高可用和负载均衡。此外,还有Shovel和Federation插件可用于特定场景下的集群搭建。
115 2
|
16天前
|
消息中间件 RocketMQ
2024最全RocketMQ集群方案汇总
在研究RocketMQ集群方案时,发现网上存在诸多不一致之处,如组件包含NameServer、Broker、Proxy等。通过查阅官方文档,了解到v4.x和v5.x版本的差异。v4.x部署模式包括单主、多主、多主多从(异步复制、同步双写),而v5.x新增Local与Cluster模式,主要区别在于Broker和Proxy是否同进程部署。Local模式适合平滑升级,Cluster模式适合高可用需求。不同模式下,集群部署方案大致相同,涵盖单主、多主、多主多从等模式,以满足不同的高可用性和性能需求。
80 0
|
5月前
|
消息中间件 存储 负载均衡
|
5月前
|
消息中间件 存储 负载均衡
"RabbitMQ集群大揭秘!让你的消息传递系统秒变超级英雄,轻松应对亿级并发挑战!"
【8月更文挑战第24天】RabbitMQ是一款基于AMQP的开源消息中间件,以其高可靠性、扩展性和易用性闻名。面对高并发和大数据挑战时,可通过构建集群提升性能。本文深入探讨RabbitMQ集群配置、工作原理,并提供示例代码。集群由多个通过网络连接的节点组成,共享消息队列,确保高可用性和负载均衡。搭建集群需准备多台服务器,安装Erlang和RabbitMQ,并确保节点间通信顺畅。核心步骤包括配置.erlang.cookie文件、使用rabbitmqctl命令加入集群。消息发布至任一节点时,通过集群机制同步至其他节点;消费者可从任一节点获取消息。
57 2
|
5月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
101 0
|
6月前
|
消息中间件 Prometheus 监控
消息队列 MQ使用问题之如何将旧集群的store目录迁移到新集群
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
6月前
|
消息中间件 RocketMQ
MetaQ/RocketMQ 原理问题之当消费集群规模较大时,处理分配不到队列的Consumer的问题如何解决
MetaQ/RocketMQ 原理问题之当消费集群规模较大时,处理分配不到队列的Consumer的问题如何解决
|
5月前
|
消息中间件 API 数据安全/隐私保护
就软件研发问题之RocketMQ ACL 2.0加强集群组件间访问控制的问题如何解决
就软件研发问题之RocketMQ ACL 2.0加强集群组件间访问控制的问题如何解决
|
6月前
|
消息中间件 负载均衡 算法
【RocketMQ系列十二】RocketMQ集群核心概念之主从复制&生产者负载均衡策略&消费者负载均衡策略
【RocketMQ系列十二】RocketMQ集群核心概念之主从复制&生产者负载均衡策略&消费者负载均衡策略
171 2