java架構之路-(MQ專題)RocketMQ從入坑到集羣詳解

  這次我們來說說我們的RocketMQ的安裝和參數配置,先來看一下我們RocketMQ的提出和應用場景吧。

  早在2009年,阿里巴巴的淘寶第一次提出了雙11購物狂歡節,但是在2009年,服務器無法承受到大規模的併發,導致了大規模宕機停運,當時還是IOE的服務架構,也就是沒有我們的消息隊列中間件,直接由IBM的小型機、Oracle數據庫、EMC存儲設備來提供服務的,可想而知,我們的大併發場景,IOE是無法承受的,RocketMQ是由我們的國內的阿里巴巴在2010年開始由我們的阿里雲的王堅博士組件團隊,來處理我們的去IOE服務架構,也就產生了我們的RocketMQ中間件,經歷了阿里巴巴內部的不斷嘗試和實踐下,在2016年11月,阿里將RocketMQ捐獻給Apache軟件基金會,正式成爲孵化項目,現在已經在我們Apache軟件基金會畢業了,並且成爲了Apache軟件基金會的頂級項目。可想而知RocketMQ還是很成熟很可靠的。

  說到這也就是知道了我們的RocketMQ可以於我們的消息中間件來傳遞我們的消息,還有很多廣泛的應用場景,比如我們的異步處理事件,分佈式事務協調,對於高併發的削峯平谷處理,MQ的思想還是很出衆的,下面我們來先一下RocketMQ的安裝吧。

安裝單機(運行環境JDK版本:1.8.0_221以上)

  1.下載。rocketmq版本:rocketmq-all-4.4.0-bin-release.zip,地址 https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-bin-release.zip

  2.上傳的到我們的服務器並解壓。$ unzip rocketmq-all-4.4.0-bin-release.zip (沒有unzip命令的,yum install unzip安裝一下)

  3.設置環境變量,$ vim /etc/profile,下底部添加如下代碼。

export ROCKETMQ_HOME=/usr/local/software/rocketmq-all-4.4.0 
export PATH= $ROCKETMQ_HOME/bin:$PATH

保存,並刷新環境變量 $ source /etc/profile

   4.修改一下我們的配置,現有的配置稍微有點坑,不修改配置,可能啓動不成功的。切換到我們的RocketMQ目錄下,$  vim bin/runbroker.sh 和我們的$ vim bin/runserver.sh

 修改爲256M即可

  注意兩個配置都要改runbroker.sh和runserver.sh,這裏我只是根據我們的虛擬機大小來設置的,生產的環境可以根據配置自行設置大小。後面會說參數的作用。

   4.開啓服務。

  啓動nameserver $ nohup sh bin/mqnamesrv -n 120.27.13.177:9876 & 

  啓動broker 

  不指定配置文件 $ nohup sh bin/mqbroker -n 120.27.13.177:9876 autoCreateTopicEnable=true & //極力不推薦

  指定配置文件 $ nohup sh bin/mqbroker -n 120.27.13.177:9876 -c conf/broker.conf &//修改在配置文件內加入autoCreateTopicEnable=true,不然發送消息會失敗。

  5.測試是否成功

$ export NAMESRV_ADDR=120.27.13.177:9876測試發送端,多個可以用英文,來區別
例如$ export NAMESRV_ADDR = 120.27.13.177:9876,120.27.13.178:9876

    $ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer 測試消費端

  $ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

    6.關閉服務

  $ sh mqshutdown broker ‐‐關閉broker

  $ sh mqshutdown namesrv ‐‐關閉namesrv

 總結

   上述安裝弄了好幾個小時,日,這個是官方文檔地址:http://rocketmq.apache.org/docs/quick-start/,誰能按照他的說明安裝成功聯繫我一下,反正我是沒有成功

  1,可能遇到內存不夠用的情況,默認配置是8G的...哪來錢買那麼大的服務器。

  2,服務啓動nohup sh bin/mqnamesrv -n 120.27.13.177:9876 & 官網說localhost,如果你有多個網卡,你就蒙圈了...

  3,官網完全沒告訴你指定配置文件,也沒說需要配置autoCreateTopicEnable=true,沒有這個你怎麼創建Topic,autoCreateTopicEnable=true意思就是允許創建topic。

  說到底就是官網完全就是坑爹不給力的。

 安裝集羣(運行環境JDK版本:1.8.0_221以上)

  上面走過來一路的坑,我們現在來看看集羣時如何配置的吧,這裏捎帶說一下,盡力優先啓動nameserver,然後啓動broker,因爲我們的每一個broker服務需要將信息註冊到我們的nameserver上去的。

  準備2個虛擬機分別是虛擬機centos-node-01與centos-node-02,分別部署2個 NameServer,並在每臺機器上分別啓動一個Master和一個Slave,互爲主備,在主目錄下的conf文件夾下提供了多種broker配置模式,分別有:2m-2s-async,2m-2s- sync,2m-noslave,就是我們的我們兩主兩從同步,兩主兩從異步和我們的兩主無從。接上面的配置來說,簡單的我就不提了。
  1.準備兩臺服務器,安裝jdk1.8+環境,下載並解壓我們的rocketMQ。

 

   2.將每臺服務器上的配置文件複製出來,因爲我們每臺服務器要啓動一個主節點,一個從節點,我們開始複製命令。

  $ cp broker.conf master.conf ###作爲主節點配置

  $ cp broker.conf slave.conf ### 從節點配置。

  兩臺服務器都要複製。

  將master.conf修改,master.conf配置如下:

   slave配置如下

   記得修改bin下的runserver和runbroker,要不內存又不夠了。

  3.啓動

  先分別啓動兩臺服務器的nameserver,$ nohup sh bin/mqnamesrv & 

  啓動broker-master

  nohup sh bin/mqbroker -c conf/master.conf &

  啓動broker-slave

  nohup sh bin/mqbroker -c conf/slave.conf &

  4.查查看集羣監控狀態 $ sh mqadmin clusterlist -n 192.168.241.198:9876

總結

  這個集羣也不是很順利,搭建了一下午。切記幾個問題,端口別弄重複了,文件保存路徑別重複了,記得互爲主備,有一個小竅門就是,你先配置一個單機,然後測試是否成功了,然後複製配置文件,然後將這些配置文件直接傳到另一個服務器上,改一下名稱就可以了(互爲主備那個名稱)。

安裝可視化界面:(一路小坑已踏平)

  1.下載,地址:https://github.com/apache/rocketmq-externals/tree/release-rocketmq-console-1.0.0

  2.導入我們的編譯器IDEA或者Eclipse,這個玩意在我們本地啓動就可以的。

  3.修改配置application.properties,寫入我們的集羣地址,多個IP用分號分隔。

rocketmq.config.namesrvAddr=114.215.144.143:9876;115.29.149.133:9876

  修改pom文件將mq版本修改和我們集羣的版本一致

<rocketmq.version>4.4.0</rocketmq.version>

  4.不知道很多博主怎麼弄的,寫到這了就說可以啓動了,反正我是報錯了,不知道你們報錯了嗎?至少我單機的時候啓動有一個界面是報錯的。去我們的集羣服務器。在conf/broker.conf文件添加brokerIP1=115.29.149.133,IP1=當前服務器的的IP地址。

  5.啓動走起~!

 順帶說一下啊,右上角那個按鈕是調整語言的,我當時沒加brokerIP1時,那個什麼駕駛艙頁面第一個圖表報錯。 

  一路大坑帶小坑的,都踏平了,弄了兩天多,才弄好,官方文檔.....

  過去的這幾天我說了RabbitMQ和RocketMQ的安裝,後續我會逐步去說他們的實際操作,還有一些高級用法,感謝閱讀。

最進弄了一個公衆號,小菜技術,歡迎大家的加入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章