上一篇 架構運維篇(四):Centos7/Linux中Tomcat安裝Https證書實踐
這一篇講一下在Centos7/Linux安裝RocketMQ,MQ的具體應用場景和使用就不再囉嗦了。我在沒有使用過MQ之前聽其他大神提到感覺很高深和複雜,不過有道是“難者不會,會者不難”,那麼想要入門MQ的先從學會安裝部署開始。
版本說明
- JDK :jdk1.8.0_172(已安裝)
- MQ : rocketmq4.3
安裝部署RocketMQ
第一步:下載RocketMQ安裝包
- 官網下載
下載地址: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
第二步:上傳至服務器
這裏將下載好的rocketmq安裝包放到服務器 software 目錄下(可以參考架構運維篇的前幾章,安裝文件都會放到該目錄下)
[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 //刪除安裝包,可選
第三步:修改相關配置
如果對rocketmq的配置有詳細查看過就會發現,默認配置是非常耗費內存的,如果服務器資源不是很充足還是需要修改的,不然啓動會報錯。
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"
也不要設置太小(至少要配置512m),第一次安裝時參考網上其他作者寫的文章這裏配置了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"
備註:同樣不可設置過低
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"
第四步:啓動服務
rocketmq在啓動時需要啓動Name Server和Broker兩個服務,按照順序依次啓動。
啓動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的默認端口
關閉服務
sh mqshutdown namers
sh mqshutdown broker
其實寫到這裏已經算是安裝部署完成了,那麼爲了讓初學者對MQ有更加直觀的體驗,接着搭建監控平臺。
搭建RocketMQ監控平臺
官方有提供基於Spring Boot的RocketMQ web界面監控項目(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目錄,執行命令
mvn clean package -Dmaven.test.skip=true
備註:會編譯生成rocketmq-console-ng-1.0.1.jar,也可以將項目導入的idea裏面進行修改和打包操作。
第四步:上傳jar到服務器並啓動項目
上傳到服務器後,進入jar包所在目錄執行如下命令:
[root@localhost data]# java -jar rocketmq-console-ng-1.0.1.jar
第五步:測試結果
瀏覽器訪問:http://127.0.0.1:89 ,如下圖所示部署成功:
總結
Centos7/Linux環境搭建RocketMQ會遇到一些坑,這裏給大家先列舉一下:
1、jvm內存溢出
文章上面有提到過如果配置空間過小啓動時會報內存錯誤,參考文中配置即可解決,也可以自己調試合適的空間大小。
2、No route info of this topic, TopicTest 錯誤
項目是用Spring Boot 搭建的,在啓動是報“org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest”錯誤,經排查是啓動broker方式不對。
官網啓動方式和文中一樣,但是還是報錯。
#官網推薦啓動命令
nohup sh bin/mqbroker -n localhost:9876 &
改爲
nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &