Rocketmq分布式消息队列的部署与监控

--------------------------------------------------------------------------------------------

一、Rocketmq简介:

--------------------------------------------------------------------------------------------

RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:
1、支持严格的消息顺序;
2、支持Topic与Queue两种模式;
3、亿级消息堆积能力;
4、比较友好的分布式特性;
5、同时支持Push与Pull方式消费消息;

(本文采用双Master架构模式。

--------------------------------------------------------------------------------------------

二、服务器分布:

--------------------------------------------------------------------------------------------

1、2台服务器信息(我用的虚拟机)

IP地址 主机名 机型 角色 架构模式
 192.168.100.193  rocketmq-master1 20G nameserver、brokerserver  Master1(双Master模式) 
  192.168.100.194  rocketmq-master2 20G  nameserver、brokerserver  Master2(双Master模式)

2、hosts信息添加

vi /etc/hosts

增加以下:

192.168.100.193 rocketmq-master1
192.168.100.194 rocketmq-master2

192.168.100.193 mqnameserver1
192.168.100.194 mqnameserver2

3、系统环境

CentOS 6.3

4、总体架构

--------------------------------------------------------------------------------------------

三、Rocketmq安装与配置

--------------------------------------------------------------------------------------------

1、JDK安装:

tar包解压,然后在/etc/profile中加入如下的环境变量:

生效:source /etc/profile

具体可以参考我的另一篇博客:http://www.cnblogs.com/gmq-sh/p/4328843.html

2、RocketMq安装

下载rocketmq的release版:

https://github.com/alibaba/RocketMQ/releases

文件我放到了/data目录下。

执行一下命令:

tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local/
mv alibaba-rocketmq alibaba-rocketmq-3.2.6
ln -s alibaba-rocketmq-3.2.6 rocketmq
ll /usr/local

(

以下是分开执行的以及效果:

tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local/

mv alibaba-rocketmq alibaba-rocketmq-3.2.6

修改名字。

简历软连接:

ln -s alibaba-rocketmq-3.2.6 rocketmq

)

3、环境变量设置

在 /etc/profile 文件中追加一下配置:

vi /etc/profile
## /usr/local/bin
export PATH=$PATH:/usr/local/bin

## java env
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOMEb/dt.jar:$JAVA_HOMEb/tools.jar

## rocketmq
export ROCKETMQ_HOME=/usr/local/rocketmq
export PATH=$PATH::$ROCKETMQ_HOME/bin

生效:

source /etc/profile

进入rocketmq的bin目录:

cd /usr/local/rocketmq/bin

(centos系统优化:慎用,我虚拟机总是卡死,还不明白为啥

执行 os.sh的系统优化,原始的sh文件需要修改,不然会导致出问题:

-- sh os.sh -- 未找到错误原因,先不要执行这个命令

(详情参考本人另一篇博文:http://www.cnblogs.com/gmq-sh/p/6957741.html)

目前这个命令已经根据刚才的博文改好了,貌似还是一直在执行,不知道要执行多久,有大神可以指导下?

4、主机名设置

(1)、Master1服务器

vi /etc/hosts

如下:

192.168.100.193 rocketmq-master1
192.168.100.194 rocketmq-master2

192.168.100.193 mqnameserver1
192.168.100.194 mqnameserver2

网络:

vi /etc/sysconfig/network

修改成如下:

sed -i  ‘/HOSTNAME/d‘ /etc/sysconfig/network
echo ‘HOSTNAME=rocketmq-master1‘  >> /etc/sysconfig/network
hostname rocketmq-master1

效果如下:

(2)、Master2服务器

vi /etc/hosts
192.168.100.193 rocketmq-master1
192.168.100.194 rocketmq-master2

192.168.100.193 mqnameserver1
192.168.100.194 mqnameserver2

sed -i  ‘/HOSTNAME/d‘ /etc/sysconfig/network
echo ‘HOSTNAME=rocketmq-master2‘  >> /etc/sysconfig/network
hostname rocketmq-master2

5、RocketMQ配置

(1)、Master1服务器

vi /usr/local/rocketmq/conf/2m-noslave/broker-a.properties

内容如下:

---------------------start-----------------------------------------------------

#启动MessageFilterServer进程
#filterServerNums=1

#Broker所属集群

brokerClusterName=AdpMqCluster
brokerName=broker-a

#0:Master >0:Slave
brokerId=0
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
defaultTopicQueueNums=4

#线下开启,线上关闭
autoCreateTopicEnable=FALSE

#自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=FALSE

#是否拒绝事务消息接入
rejectTransactionMessage=FALSE

#是否从web服务器获取NameServer地址,针对大规模的Broker集群建议使用这种方式

fetchNamesrvAddrByAddressServer=FALSE

listenPort=10911

#删除文件时间点,默认凌晨4点
deleteWhen=04

#文件保留时间,默认48小时
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88

#日志根路径

storePathRootDir=/data/rocketmq/store

#commitLog存储路径
storePathCommitLog=/data/rocketmq/store/commitlog

maxMessageSize=65536

flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000

#Broker 的角色
#ASYNC_MASTER 主从异步复制
#SYNC_MASTER 主从同步双写
#SLAVE Slave

brokerRole=ASYNC_MASTER

#刷盘方式
#ASYNC_FLUSH:异步刷盘
#SYNC_FLUSH:同步刷盘

flushDiskType=ASYNC_FLUSH

checkTransactionMessageEnable=false

sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128

#是否开启消息索引功能
messageIndexEnable=TRUE

#是否提供安全的消息索引机制,索引保证不丢
messageIndexSafe=FALSE

#磁盘满、且无过期文件情况下 TRUE 表示强制删除文件,优先保证服务可用; FALSE 标记服务不可用,文件不删除
cleanFileForciblyEnable=TRUE

#Topic持久化文件
topicConfigPath=/data/logs/rocketmq/store/config/topics.json

#ConsumerOffset持久化文件
consumerOffsetPath=/data/logs/rocketmq/store/config/consumerOffset.json

#subscriptionGroup 持久化文件
subscriptionGroupPath=/data/logs/rocketmq/store/config/subscriptionGroup.json

---------------------end-----------------------------------------------------

时间: 2024-10-29 19:12:03

Rocketmq分布式消息队列的部署与监控的相关文章

分布式消息队列RocketMQ部署与监控

========================================================================================== 一.RocketMQ简介 ========================================================================================== RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.支持严格的消息顺序: 2.支持Topi

RocketMQ 消息队列单机部署及使用

转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51086876 相关文章: <RocketMQ 消息队列单机部署及使用> < java编写简单消息队列.实现高德坐标变形服务> 0 RocketMQ简单介绍 0.1 介绍 RocketMQ是一个消息中间件. 消息中间件中有两个角色:消息生产者和消息消费者.RocketMQ里相同有这两个概念.消息生产者负责创建消息并发送到RocketMQ服务器.RocketMQ服务器会将

EQueue - 一个纯C#写的分布式消息队列介绍2

一年前,当我第一次开发完EQueue后,写过一篇文章介绍了其整体架构,做这个框架的背景,以及架构中的所有基本概念.通过那篇文章,大家可以对EQueue有一个基本的了解.经过了1年多的完善,EQueue无论是功能上还是成熟性上都完善了不少.所以,希望再写一篇文章,介绍一下EQueue的整体架构和关键特性. EQueue架构 EQueue是一个分布式的.轻量级.高性能.具有一定可靠性,纯C#编写的消息队列,支持消费者集群消费模式. 主要包括三个部分:producer, broker, consume

C#分布式消息队列 EQueue 2.0 发布啦

前言 最近花了我几个月的业余时间,对EQueue做了一个重大的改造,消息持久化采用本地写文件的方式.到现在为止,总算完成了,所以第一时间写文章分享给大家这段时间我所积累的一些成果. EQueue开源地址:https://github.com/tangxuehua/equeue EQueue相关文档:http://www.cnblogs.com/netfocus/category/598000.html EQueue Nuget地址:http://www.nuget.org/packages/eq

分布式消息队列Apache Pulsar

Pulsar简介 Apache Pulsar是一个企业级的分布式消息系统,最初由Yahoo开发并在2016年开源,目前正在Apache基金会下孵化.Plusar已经在Yahoo的生产环境使用了三年多,主要服务于Mail.Finance.Sports. Flickr. the Gemini Ads platform. Sherpa以及Yahoo的KV存储. Pulsar之所以能够称为下一代消息队列,主要是因为以下特性: 线性扩展.能够丝滑的扩容到成百上千个节点(Kafka扩容需要占用很多系统资源在

【系统架构】分布式消息队列

原文地址 以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统). 本次分享大纲 消息队列概述 消息队列应用场景 消息中间件示例 JMS消息服务(见第二篇:大型网站架构系列:分布式消息队列(二)) 常用消息队列(见第二篇:大型网站架构系列:分布式消息队列(二)) 参考(推荐)资料(见第二篇:大型网站架构系列:分布式消息队列(二)) 本次分享总结(见第二篇:大型网站架构系列:分布式消息队列(二)) 一.消息队列概述 消息队列中间件是分布式系统中重要的

大型网站架构系列:分布式消息队列(一) (转)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统). 本次分享大纲 消息队列概述 消息队列应用场景 消息中间件示例 JMS消息服务(见第二篇:大型网站架构系列:分布式消息队列(二)) 常用消息队列(见第二篇:大型网站架构系列:分布式消息队列(二)) 参考(推荐)资料(见第二篇:大型网站架构系列:分布式消息队列(二)) 本次分享总结(见第二篇:大型网站架构系列:分布式消息队列(二)) 一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要

基于Redis实现分布式消息队列(1)

1.为什么需要消息队列? 当系统中出现"生产"和"消费"的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异. 举个例子:业务系统触发短信发送申请,但短信发送模块速度跟不上,需要将来不及处理的消息暂存一下,缓冲压力. 再举个例子:调远程系统下订单成本较高,且因为网络等因素,不稳定,攒一批一起发送. 再举个栗子,交互模块5:00到24:00和电商系统联通,和内部ERP断开.1:00到4:00和ERP联通,和电商系统断开. 再举个例子,服务员点菜

Netty构建分布式消息队列实现原理浅析

在本人的上一篇博客文章:Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇 中,重点向大家介绍了AvatarMQ主要构成模块以及目前存在的优缺点.最后以一个生产者.消费者传递消息的例子,具体演示了AvatarMQ所具备的基本消息路由功能.而本文的写作目的,是想从开发.设计的角度,简单的对如何使用Netty,构建分布式消息队列背后的技术细节.原理,进行一下简单的分析和说明. 首先,在一个企业级的架构应用中,究竟何时需引入消息队列呢?本人认为,最经常的情况,无非这几种:做业务解耦.事件