参考资料
CentOS7上从零开始安装阿里RocketMQ版本:release-4.0.1【亲测哈哈】
安装
从官网看有什么安装包。
好,安装4.2的。
wget http://mirrors.hust.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
更新2:新版本
wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip
#新建一个新的程序文件夹用来放rocketmq
mkdir -p /usr/local/rocketmq
解压:
unzip rocketmq-all-4.2.0-bin-release.zip -d /usr/local/rocketmq
更新2:新版本
unzip rocketmq-all-4.5.1-bin-release.zip -d /usr/local/rocketmq
#注,如果unzip说command not foun的,请按照unzip
#yum install unzip
好了,打开文件路径:
cd /usr/local/rocketmq/
测试一下nameserver
nohup sh bin/mqnamesrv &
然后看到:
然后,
有错误,
内存不足,好,测试环境调低一点内存容量。
vim bin/runbroker.sh
看到:
调低内存:
到:
-server -Xms8g -Xmx8g -Xmn4g
===>
-server -Xms256m -Xmx256m -Xmn128m
[外链图片转存失败(img-HCb6rI9w-1563680831824)(
http://p7040fjon.bkt.clouddn.com/QQ截图20180713133740.png
)]
解决办法,找到runserver.sh和runbroker.sh,编辑
JAVA_OPT=”${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m”
改成如上就可以了
vim bin/runserver.sh
看到:
[外链图片转存失败(img-lBbNL5GA-1563680831825)(
http://p7040fjon.bkt.clouddn.com/QQ截图20180713140032.png
)]
改为:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
[外链图片转存失败(img-qIqc3C94-1563680831825)(
http://p7040fjon.bkt.clouddn.com/QQ截图20180713140252.png
)]
测试:
bin/mqnamesrv
[外链图片转存失败(img-Rjj2HYj3-1563680831825)(
http://p7040fjon.bkt.clouddn.com/QQ截图20180713140348.png
)]
测试通过。
追加-实用脚本
在单机情况下,每次都记住服务开启的命令是很麻烦的,下面提供几个脚本:
运行namesrv:
touch startSrv.sh
chmod +x startSrv.sh
vim startSrv.sh
内容如下:
#!/bin/sh
nohup sh ./bin/mqnamesrv > ~/logs/rocketmqlogs/namesrv.log &
tail -f ~/logs/rocketmqlogs/namesrv.log
touch stopSrv.sh
chmod +x stopSrv.sh
vim stopSrv.sh
内容如下:
#!/bin/sh
./bin/mqshutdown namesrv
broker执行:
touch startBroker.sh
chmod +x startBroker.sh
vim startBroker.sh
#!/bin/sh
#注意,下面的ip地址以及端口请填写你安装的rocketmq机器的ip地址及端口。
nohup sh bin/mqbroker -n xxx.xx.xx.xx:9876 > ~/logs/rocketmqlogs/broker.log &
tail -f ~/logs/rocketmqlogs/broker.log
~
touch stopBroker.sh
chmod +x stopBroker.sh
vim stopBroker.sh
#!/bin/sh
./bin/mqshutdown broker
简化设置及操作 — 待补充
为了简化一下操作,需要设置环境变量:
设置环境变量
其实不设置环境变量也可以,但是我们为了进一步简化后续的broker集群命令,所以还是设置一下吧。
配置rocketmq的环境变量
vim /etc/profile
在结尾添加
#设置rocketmq的环境变量
export ROCKETMQ_HOME=/usr/local/rocketmq
export PATH=$JAVA_HOME/bin:$ROCKETMQ_HOME/bin:$PATH
按esc+!wq保存
使rocketmq的配置生效
source /etc/profile
其余操作
启动Name Server
注意:启动前需要设置name server的jvm参数,默认堆内存耗费4g,内存设置不合理会导致异常情况发生。
需要设置默认内存。
启动name server
nohup sh mqnamesrv &
查看日志
tail -f /root/logs/rocketmqlogs/namesrv.log
关闭name server
nohup sh mqshutdown namesrv
name server启动好后,端口默认为9876
启动Broker(非集群,集群模式会在后面文章讲解)
注意:启动前需要设置broker的jvm参数,默认堆内存耗费8g,内存设置不合理会导致异常情况发生。
需要设置默认内存:
启动broker
nohup sh mqbroker -n localhost:9876 &
查看日志
tail -f /root/logs/rocketmqlogs/broker.log
关闭broker(不会马上关闭,大概有10秒左右的延迟。不要使用kill来关闭broker,会造成消息丢失。)
nohup sh mqshutdown broker
进阶配置
请参考:
Linux下RocketMQ环境的配置
单机下配置自动服务–废弃
为什么这个单元会废弃?
因为有些地方是无解的,譬如说,即使用了nohup 执行程序还是会卡住线程的,譬如:
在变成service以后也是这样无论用不用nohup都会卡住动不了下一个。。等以后再服务化,先草稿。。
单机情况可以这样配置service:
nameAddr的配置:
#打开service存放目录
cd /lib/systemd/system/
#创建文件
sudo touch MqNameSrv.service
#添加执行权限。
sudo chmod +x MqNameSrv.service
#编辑文件
sudo vim MqNameSrv.service
输入内容如下:
[Unit]
Description=mq的namesrv服务
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/opt/rocketmq-4.4.0/bin/mqnamesrv
ExecStop=/opt/rocketmq-4.4.0/bin/mqshutdown namesrv
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存,然后重新加载服务:
systemctl daemon-reload
启动:
systemctl start MqNameSrv
#查看状态是
systemctl status MqNameSrv
#关闭重启是
systemctl stop和restart MqNameSrv
添加开机启动是:
systemctl enable MqNameSrv
坑一 请设置 java_home
如下图
然后,你会发现,自己是有java_home这个变量设定的,问题在哪里?
请参考:
ubuntu14.04-rocketmq单机搭建
打开命令文件
sudo vim /opt/rocketmq-4.4.0/bin/mqnamesrv
发现调用的是
runserver.sh
,
查看runserver.sh
:
诶,这一段判断位置的。。注释掉即可然后会发现,还是找不到java home的,这时候,请将脚本从bin/sh改为bash且添加一句话:
source /etc/profile
注意,如果不是bash,那么source会提示找不到命令的。
如下图:
注意,在mqnamesrv上面要改为 bash /xxxx.sh 如下图:
mqbroker出现java_home问题
一样的解决方案,
在mqbroker上面这样改:
然后: