<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          愛折騰 | docker搭建RocketMq測試環(huán)境踩坑

          共 3571字,需瀏覽 8分鐘

           ·

          2022-03-08 23:33

          47ee99d9468cb882d3b063bc4192b9c0.webp

          前言

          最近公司在搞ActiveMQ切換到rocketMq的事,雖然不是特別緊急的事,而且好像已經(jīng)給出切換的文檔了,但是本著自己動手豐衣足食的想法,我還是打算把之前發(fā)過的rocketMq的相關(guān)內(nèi)容,再好好回顧下,畢竟知其然且知其所以然,才能更好地處理(裝)問題(逼)。

          不過今天的內(nèi)容暫時還不涉及RocketMq的相關(guān)技術(shù)知識,只是一次簡單的環(huán)境搭建,關(guān)于技術(shù)層面的知識,我們后面繼續(xù)探討。

          RocketMQ部署

          部署namesrv

          namesrv就類似于消息隊列的注冊中心,因為rocketmq原生支持集群,所以namesrv就顯得很重要。

          拉取鏡像

          首先是拉取鏡像,這里拉取的是rocketMQ的核心鏡像

          docker?pull?rocketmqinc/rocketmq
          啟動namesrv

          啟動過程也很簡單,主要是docker的一些參數(shù)和配置指定

          #?后臺運行,并映射端口
          docker?run?-d?-p?9876:9876?\
          #?設(shè)置容器名稱
          --name?rmqnamesrv?\
          #?設(shè)置重啟策略
          --restart=always?\
          #?映射日志文件夾(前面的為本地路徑)
          -v?/home/syske/docker/mq/data/namesrv/logs:/root/logs?\
          #?映射書籍存在文件夾(同上)
          -v?/home/syske/docker/mq/namesrv/store:/root/store?\
          #?指定環(huán)境變量
          -e?"MAX_POSSIBLE_HEAP=100000000"?\
          #?指定鏡像版本,這里建議指定具體版本,否則在和java交互的時候會報錯,目前最新版本是4.4.0,所以maven的依賴也必須對應(yīng),否則會報錯
          rocketmqinc/rocketmq:latest?\
          #?啟動命令
          sh?mqnamesrv

          部署broker

          由于brokernamesrv是同一個鏡像,所以這里不需要再拉取鏡像

          創(chuàng)建broker配置

          除了最后兩行配置,其他的配置都是系統(tǒng)默認(rèn)的,具體說明可以參考官方文檔

          # broker集群名稱
          brokerClusterNam = DefaultCluster
          # broker節(jié)點名稱
          brokerName = broker-a
          # broker節(jié)點id
          brokerId = 0
          # 刪除條件?這個還不清楚用途,后續(xù)研究下
          deleteWhen = 04
          # 文件保留時間(單位小時),默認(rèn)為3天
          fileReservedTime = 48
          # broker角色
          brokerRole = ASYNC_MASTER
          # 磁盤同步方式:同步,異步
          flushDiskType = ASYNC_FLUSH
          # 類似注冊中心
          namesrvAddr=192.168.0.103:9876
          # 當(dāng)前broker監(jiān)聽的IP(主)
          brokerIP1 = 192.168.0.103
          啟動broker

          這里的啟動命令最核心的其實就是最后sh操作,這里制定了配置文件的路徑。

          ?#?后臺運行
          ?docker?run?-d?\
          ?#?映射端口
          -p?10911:10911?\
          #?映射端口
          -p?10909:10909?\
          #?容器名稱
          --name?rmqbroker?\
          #?重啟策略
          --restart=always?\
          #?映射日志路徑
          -v?/home/syske/docker/mq/data/broker/logs:/root/logs?\
          #?映射文件存儲路徑
          -v?/home/syske/docker/mq/data/broker/store:/root/store?\
          #?映射配置文件
          -v?/home/syske/docker/mq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf?\
          #?鏈接namesrv
          --link?rmqnamesrv:namesrv?\
          #?指定環(huán)境設(shè)置
          -e?"NAMESRV_ADDR=namesrv:9876"?\
          #?指定環(huán)境設(shè)置,指定鏡像
          -e?"MAX_POSSIBLE_HEAP=200000000"?rocketmqinc/rocketmq:latest?\
          #?啟動命令(指定配置啟動)
          sh?mqbroker?-c?/opt/rocketmq-4.4.0/conf/broker.conf

          由于這里我們把rocketmq的日志映射到了本機(jī)目錄,所以我們可以直接通過tail查看broker的啟動日志,比如broker.log:

          4ad0e8bbb882320bcf3926b3e8198ce7.webp

          當(dāng)然,你也可以通過docker exec命令的方式查看日志,當(dāng)然就是沒有上面這種方式方便。

          安裝console

          consolerocketmq的擴(kuò)展組件,console組件提供了圖形化的界面,便于我們管理和監(jiān)控rocketmq,界面截圖如下:

          27fdbab62792e885611446ee3575d19f.webp33f730703137d50dbd07e09a49f1cbb8.webp

          官方文檔:

          https://rocketmq-1.gitbook.io/rocketmq-connector/rocketmq-connect/rocketmq-console/an-zhuang-shi-yong
          拉取鏡像

          默認(rèn)拉取最新版本鏡像:

          docker?pull?styletang/rocketmq-console-ng
          啟動

          啟動命令也很簡單,只是指定rocketmqnamesrv的地址,除了端口有修改,其他直接復(fù)制官方文檔

          docker?run?-e?"JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.0.103:9876?-Dcom.rocketmq.sendMessageWithVIPChannel=false"?-p?8000:8080?-t?styletang/rocketmq-console-ng

          啟動成功后直接訪問我們配置的端口,即可看到如上截圖。

          踩坑記錄

          由于是時候回顧總結(jié),所以過程中的好多錯誤問題我已經(jīng)復(fù)現(xiàn)不出來了,下面是印象比較深刻的幾個問題,各位小伙伴可以參考下,少走一些彎路。

          • 映射路徑配置錯誤,導(dǎo)致容器無限重啟。表現(xiàn)就是執(zhí)行docker ps的時候,mqbroker服務(wù)狀態(tài)一直是Restarting

            93b23a3a20130279a2b5e18605ef9503.webp

            最后幾經(jīng)檢查,發(fā)現(xiàn)是映射的本地文件夾不存在導(dǎo)致的。本地的路徑是/home/syske/docker/mq/data/broker,但是啟動命令里面映射的路徑少了docker目錄,所以導(dǎo)致日志和配置文件路徑都錯誤了,所以報錯了

          • 版本問題導(dǎo)致配置文件讀取不到:也就是在啟動boker服務(wù)的時候,broker.conf的路徑配置不正確,導(dǎo)致啟動直接報錯:

            01261afee39ae637476c5f1ac7f9bb63.webp

            進(jìn)入容器中查看了rocketmq的版本才知道這里的路徑需要配置成rocketmq-4.4.0,所以各位小伙伴在拉取鏡像的時候一定要指定版本,這樣在設(shè)置配置的時候也就不會出錯了。

          • 如果你在客戶端調(diào)用rocketmq時有如下錯誤:9e5663a41bb8a537fe617a3ee9f04e5d.webp

            你需要在broker的配置文件中指定brokerIP1的相關(guān)配置,因為172.17.0.5docker的內(nèi)網(wǎng)ip,我們需要在外部調(diào)用broker,所以需要配置一個外部ipdocker主機(jī)的局域網(wǎng)ip

          59b229482aa9bb9b7a7d8273a913f86d.webp
          • 如果客戶端調(diào)用rocketmq報錯的話,那大概率是因為broker服務(wù)沒有正常啟動導(dǎo)致的(我就是因為第一個坑導(dǎo)致的)5a1ac1dbc7f629ddcb9053e9fd0117d1.webp

          結(jié)語

          好了關(guān)于docker安裝配置rocketMq的相關(guān)內(nèi)容,我們就先到這里,下面我們聊點本次折騰的背景:

          原本是打算在manjaro環(huán)境搞下rocketMQ的測試環(huán)境就可以了,但是在實際操作的時候,發(fā)現(xiàn)manjaro還沒有配置過JDK環(huán)境,而且在我一通安裝設(shè)置之后,rocketMq啟動還是報錯,具體報什么錯我也記不清楚了,總之就是很惡心,最后我就放棄了這種原生的方式。

          之后我又想到了可以在k8s環(huán)境搞一套,但是不幸的是,我發(fā)現(xiàn)manjarok8s集群也壞了,就是執(zhí)行kubectl命令時候一直提示拒絕連接:

          The?connection?to?the?server?localhost:8080?was?refused?-?did?you?specify?the?right?host?or?port?

          好吧,太浪費時間了,于是我覺定重新裝個系統(tǒng)(一言不合就折騰),一頓操作之后,我安裝了特別熟悉的linux系統(tǒng)——ubuntu,不過網(wǎng)絡(luò)還算給力,20m/s的速度,系統(tǒng)很快就下載好了。之后經(jīng)過兩個小時的折騰,dockerjdkgitoh-my-zsh都被我搞定了,然后今天又花了兩三個小時折騰rocketmqdocker環(huán)境。

          總體來說,我還是很喜歡這種排查并處理問題的感覺的,特別是解決完所有問題之后的酣暢感,這給了我極大的成就感,這也是我熱愛折騰的原因吧!

          - END -


          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99精品色 | 免费99视频 | 亚洲高清免费在线 | 免费看A A长 | 欧美大黑逼 |