RocketMQ安装和用法
2017年09月25日

RocketMQ安装手册


详细步骤:

参考资料:https://github.com/alibaba/RocketMQ/wiki/Quick-Start


步骤一: 安装准备


1)先下载RocketMQ源码,在Linux下安装Maven

然后用Maven编译源代码:

cd RocketMQ

bash install.sh


2)在安装之前,可以调用RocketMQ官方提供的脚本对系统进行优化:

创建 admin 用户,后面会用admin用户来部署。

创建用户:adduser admin

设置密码:echo admin:admin | chpasswd

以root身份执行 sh bin/os.sh

(注意,系统内存剩余至少要1G以上,否则执行这个脚本会卡死。。。)


步骤二:把编译包发送到各个安装服务器并解压

使用admin账号,或者用root把目前归属权给admin:chown -R admin:admin ~/RocketMQ然后切换到admin账号下

进入安装目录。

cd RocketMQ

然后执行如下命令:

ln -s target/alibaba-rocketmq-broker/alibaba-rocketmq devenv

然后:

cd devenv

echo "ROCKETMQ_HOME=`pwd`" >> ~/.bash_profile

source ~/.bash_profile


步骤三:检查安装脚本 runbroker.sh 和 runserver.sh

cd devenv

在runbroker.sh 和 runserver.sh里面有一段:

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"

如果服务器资源不足,可以适当改小:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

如果内存不够,RocketMQ broker启动不了,也没有提示,启动信息如下:

[admin@iZuf62pac6qyZ bin]$ bash mqbroker -n localhost:9876
cp: cannot stat `/home/admin/rmq_bk_gc.log': No such file or directory
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=320m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file /home/admin/tmpfs/logs/gc.log due to No such file or directory

/home/admin/RocketMQ-3.5.8/devenv/bin/runbroker.sh: line 58: 28892 Killed                  numactl --interleave=all $JAVA ${JAVA_OPT} $@

那两个文件不存在没有影响,关键是最后一行,其实就是因为内存不够造成的。



步骤四:启动Name Server

NameServer 为10.1.10.74和10.1.10.156

cd bin

screen bash mqnamesrv

    如果出现:

-bash: screen: command not found

    说明需要安装screen:

 yum install screen

    启动完之后:If you see "The Name Server boot success. serializeType=JSON", this means name server starts successfully. Press Ctrl + A, then D to detach the session.

    如果报错screen Cannot open your terminal '/dev/pts/1',解决问题 :

userB在 su - userA以后,执行如下命令即可:

script /dev/null

具体参见:http://blog.sina.com.cn/s/blog_704836f401010osn.html


步骤五:启动broker

Broker  为10.1.10.75和10.1.10.77一组,10.1.10.76和10.1.10.155一组

nohup bash mqbroker -c ../conf/2m-2s-sync/broker-a.properties -n "10.1.10.74:9876;10.1.10.156:9876" autoCreateTopicEnable=true &

注意:

1、-n后面的参数用双引号括起来。

2、加上参数 autoCreateTopicEnable=true 使得producer创建topic不会失败。


步骤六:

所有启动好之后,查看集群状态:

sh mqadmin clusterList -n "10.1.10.74:9876;10.1.10.156:9876"



关闭:

sh mqshutdown broker 

sh mqshutdown namesrv


使用admin工具查看服务器状态:

例如:

sh mqadmin clusterList -n "10.1.10.74:9876;10.1.10.75:9876"


手动创建Topic:(设置了自动创建topic后生产者会自动创建topic,消费者不会)

sh mqadmin updateTopic -n "10.1.10.74:9876;10.1.10.156:9876" -c DefaultCluster -r 4 -w 4 -t topic名称

更多例子参见:

https://github.com/alibaba/RocketMQ/wiki/CLI-Admin-Tool

http://blog.csdn.net/lang_man_xing/article/details/47447769



客户端报错:com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <:10909> failed

解决方案:

1. 目前这种写法Rocket默认开启了VIP通道,VIP通道端口为10911-2=10909。若Rocket服务器未启动端口10909,则报connect to <> failed。

2. 解决方式:增加一行代码producer.setVipChannelEnabled(false);


参见:https://my.oschina.net/bingoding/blog/685079?p=1



参考资料:

http://www.mamicode.com/info-detail-1039164.html

http://www.jianshu.com/p/453c6e7ff81c

https://github.com/alibaba/RocketMQ/wiki/Quick-Start

https://github.com/alibaba/RocketMQ/wiki/Cluster-Configuration-and-Deployment


JavaSDK:

https://help.aliyun.com/document_detail/29546.html?spm=5176.doc29546.3.3.FNzQoZ