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