上一篇 架構(gòu)運維篇(四):Centos7/Linux中Tomcat安裝Https證書實踐
這一篇講一下在Centos7/Linux安裝RocketMQ狼犯,MQ的具體應(yīng)用場景和使用就不再啰嗦了。我在沒有使用過MQ之前聽其他大神提到感覺很高深和復(fù)雜,不過有道是“難者不會植旧,會者不難”馏臭,那么想要入門MQ的先從學(xué)會安裝部署開始掷邦。
版本說明
- JDK :jdk1.8.0_172(已安裝)
- MQ : rocketmq4.3
安裝部署RocketMQ
第一步:下載RocketMQ安裝包
- 官網(wǎng)下載
下載地址:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip
- 其他鏡像下載
下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip
第二步:上傳至服務(wù)器
這里將下載好的rocketmq安裝包放到服務(wù)器 software 目錄下(可以參考架構(gòu)運維篇的前幾章,安裝文件都會放到該目錄下)
[root@localhost software]# unzip rocketmq-all-4.3.2-bin-release.zip //解壓箱沦,也可以采用tar 等方式
[root@localhost software]# mv rocketmq-all-4.3.2-bin-release rocket4.3 //這里進行重命名,名字太長不好維護
[root@localhost software]# rm -f rocketmq-all-4.3.2-bin-release.zip //刪除安裝包雇庙,可選
第三步:修改相關(guān)配置
如果對rocketmq的配置有詳細查看過就會發(fā)現(xiàn)谓形,默認配置是非常耗費內(nèi)存的灶伊,如果服務(wù)器資源不是很充足還是需要修改的,不然啟動會報錯寒跳。
1聘萨、修改runserver.sh 配置文件
到rocketmq的解壓文件 /bin 目錄下,進行如下操作:
[root@localhost bin]# vim runserver.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
也不要設(shè)置太型(至少要配置512m)米辐,第一次安裝時參考網(wǎng)上其他作者寫的文章這里配置了256,啟動時是會報錯的康愤,錯誤信息如下所示:
[root@localhost bin]# Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
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: MaxNewSize (524288k) is equal to or greater than the entire heap (524288k). A new max generation size of 524224k will be used.
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:127)
......
2儡循、修改runbroker.sh 配置文件
copy一份原來的,再進行修改配置信息:
[root@localhost bin]# vim runbroker.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
備注:同樣不可設(shè)置過低
3征冷、修改tools.sh 配置文件
同樣copy一份原來的择膝,再進行修改配置信息:
[root@localhost bin]# vim tools.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
第四步:啟動服務(wù)
rocketmq在啟動時需要啟動Name Server和Broker兩個服務(wù),按照順序依次啟動检激。
啟動Name Server:
[root@ localhost bin]# nohup sh mqnamesrv -n localhost:9876 &
[1] 28042
[root@ localhost bin]# Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON
啟動Broker:
[root@localhost bin]# nohup sh mqbroker -n localhost:9876 &
[2] 28082
備注:9876是rocketmq的默認端口
關(guān)閉服務(wù)
sh mqshutdown namesrv
sh mqshutdown broker
其實寫到這里已經(jīng)算是安裝部署完成了肴捉,那么為了讓初學(xué)者對MQ有更加直觀的體驗,接著搭建監(jiān)控平臺叔收。
搭建RocketMQ監(jiān)控平臺
官方有提供基于Spring Boot的RocketMQ web界面監(jiān)控項目(rocketmq-console)齿穗,接下來部署上。
第一步:下載項目
GitHub地址:https://github.com/apache/rocketmq-externals.git
如下圖打包下載:
第二步:修改配置文件
打開rocketmq-console項目中的application.properties文件饺律,修改如下配置:
server.port=89 #端口自己定義
rocketmq.config.namesrvAddr=127.0.0.1:9876 #IP地址可以修改
第三步:rocketmq-console項目打包
打包命令如下:
#進入rocketmq-console目錄窃页,執(zhí)行命令
mvn clean package -Dmaven.test.skip=true
備注:會編譯生成rocketmq-console-ng-1.0.1.jar,也可以將項目導(dǎo)入的idea里面進行修改和打包操作复濒。
第四步:上傳jar到服務(wù)器并啟動項目
上傳到服務(wù)器后脖卖,進入jar包所在目錄執(zhí)行如下命令:
[root@localhost data]# java -jar rocketmq-console-ng-1.0.1.jar
第五步:測試結(jié)果
瀏覽器訪問:http://127.0.0.1:89 ,如下圖所示部署成功:
總結(jié)
Centos7/Linux環(huán)境搭建RocketMQ會遇到一些坑巧颈,這里給大家先列舉一下:
1畦木、jvm內(nèi)存溢出
文章上面有提到過如果配置空間過小啟動時會報內(nèi)存錯誤,參考文中配置即可解決砸泛,也可以自己調(diào)試合適的空間大小顶掉。
2蟆肆、No route info of this topic, TopicTest 錯誤
項目是用Spring Boot 搭建的喻杈,在啟動是報“org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest”錯誤路鹰,經(jīng)排查是啟動broker方式不對。
官網(wǎng)啟動方式和文中一樣盏筐,但是還是報錯械姻。
#官網(wǎng)推薦啟動命令
nohup sh bin/mqbroker -n localhost:9876 &
改為
nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &
3、RocketMQ 設(shè)置 brokerIP1 無效,默認會找到內(nèi)網(wǎng) 的地址楷拳,導(dǎo)致無法連接到broker
修改配置
在conf/broker.conf 中 加入 brokerIP1=你的公網(wǎng)IP
啟動broker
nohup sh bin/mqbroker -n 你的公網(wǎng)IP:9876 -c conf/broker.conf autoCreateTopicEnable=true &
4绣夺、rocketmq-console報錯RemotingConnectException: connect to xx failed
原因:端口沒有開放,一般的做法是開放一段端口區(qū)域欢揖,例如:
放行端口:[10000-20000]