--------------------------------------------------------------------------------------------
一、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-----------------------------------------------------