1. 程式人生 > >java架構之路-(MQ專題)RocketMQ從入坑到叢集詳解

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的安裝,後續我會逐步去說他們的實際操作,還有一些高階用法,感謝閱讀。

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