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

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

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

  說到這也就是知道了咱們的RocketMQ能夠於咱們的消息中間件來傳遞咱們的消息,還有不少普遍的應用場景,好比咱們的異步處理事件,分佈式事務協調,對於高併發的削峯平谷處理,MQ的思想仍是很出衆的,下面咱們來先一下RocketMQ的安裝吧。github

安裝單機(運行環境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.zipapache

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

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

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

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

相關文章
相關標籤/搜索