<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>

          解決RabbitMQ鏡像集群腦裂問題

          共 4043字,需瀏覽 9分鐘

           ·

          2021-03-20 10:12

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”

          優(yōu)質(zhì)文章,第一時間送達(dá)

          76套java從入門到精通實(shí)戰(zhàn)課程分享

          1、現(xiàn)象:

          項目中使用了rabbitmq的鏡像模式集群,兩個節(jié)點(diǎn),昨天出現(xiàn)MQ集群不能正常消息通信,打開web管理界面:

          Network partition detected
          Mnesia reports that this RabbitMQ cluster has experienced a network partition. There is a risk of losing data. Please read RabbitMQ documentation about network partitions and the possible solutions.

          原來是集群出現(xiàn)腦裂現(xiàn)象,網(wǎng)絡(luò)分區(qū)中一個節(jié)點(diǎn)在一分鐘(或者一個net_ticktime時間)內(nèi)不能連接上另一個節(jié)點(diǎn),那么Mnesia會認(rèn)為另一個節(jié)點(diǎn)已經(jīng)掛了。就算之后兩個節(jié)點(diǎn)連通,但是這兩個節(jié)點(diǎn)都認(rèn)為對方已經(jīng)掛了,Mnesia此時認(rèn)定發(fā)生了網(wǎng)絡(luò)分區(qū)的情況。rabbitmq出錯日志如下:

          =INFO REPORT==== 11-Jun-2019::19:11:57 ===
          node 'rabbit@lg-mq01' up

          =ERROR REPORT==== 11-Jun-2019::19:11:57 ===
          Mnesia('rabbit@lg-mq02'): ** ERROR ** mnesia_event got {inconsistent_database, running_partitioned_network, 'rabbit@lg-mq01'}

          =INFO REPORT==== 11-Jun-2019::19:12:09 ===
          accepting AMQP connection <0.15728.1484> (10.200.66.115:56670 -> 10.200.66.115:5672)

          =INFO REPORT==== 11-Jun-2019::19:12:09 ===
          connection <0.15728.1484> (10.200.66.115:56670 -> 10.200.66.115:5672): user 'xxxxx' authenticated and granted access to vhost 'leboGame'

          =INFO REPORT==== 11-Jun-2019::19:12:14 ===
          accepting AMQP connection <0.22202.1484> (10.200.66.115:56686 -> 10.200.66.115:5672)

          =INFO REPORT==== 11-Jun-2019::19:12:14 ===
          connection <0.22202.1484> (10.200.66.115:56686 -> 10.200.66.115:5672): user 'xxxxx' authenticated and granted access to vhost 'leboGame'

          =WARNING REPORT==== 11-Jun-2019::19:12:17 ===
          closing AMQP connection <0.15728.1484> (10.200.66.115:56670 -> 10.200.66.115:5672):
          client unexpectedly closed TCP connection

          =INFO REPORT==== 11-Jun-2019::19:12:18 ===
          accepting AMQP connection <0.20778.1484> (10.200.66.115:56700 -> 10.200.66.115:5672)

          =INFO REPORT==== 11-Jun-2019::19:12:18 ===
          connection <0.20778.1484> (10.200.66.115:56700 -> 10.200.66.115:5672): user 'xxxxx' authenticated and granted access to vhost 'leboGame'

          =INFO REPORT==== 11-Jun-2019::19:54:58 ===
          accepting AMQP connection <0.23143.1484> (10.200.66.115:61598 -> 10.200.66.115:5672)


          2、解決辦法:

          原因是rabbitmq集群在配置時未設(shè)置出現(xiàn)網(wǎng)絡(luò)分區(qū)處理策略,先要將集群恢復(fù)正常,再設(shè)置出現(xiàn)網(wǎng)絡(luò)分區(qū)處理策略,步驟如下:

          (1)首先需要挑選一個信任的分區(qū),這個分區(qū)才有決定Mnesia內(nèi)容的權(quán)限,發(fā)生在其他分區(qū)的改變將不被記錄到Mnesia中而直接丟棄。

          (2)停止(stop)其他分區(qū)的節(jié)點(diǎn),然后啟動(start)這些節(jié)點(diǎn),之后重新將這些節(jié)點(diǎn)加入到當(dāng)前信任的分區(qū)之中。

          rabbitmqctl stop_app
          rabbitmqctl start_app

          (3)最后,你應(yīng)該重啟(restart)信任的分區(qū)中所有的節(jié)點(diǎn),以去除告警。

          你也可以簡單的關(guān)閉整個集群的節(jié)點(diǎn),然后再啟動每一個節(jié)點(diǎn),當(dāng)然,你要確保你啟動的第一個節(jié)點(diǎn)在你所信任的分區(qū)之中。

          (4)設(shè)置出現(xiàn)網(wǎng)絡(luò)分區(qū)處理策略,這里設(shè)置為autoheal,下面會詳細(xì)說明其它策略

          在/etc/rabbitmq下新建rabbitmq.conf,加入:

          [
           {rabbit,
            [{tcp_listeners,[5672]},
             {cluster_partition_handling, autoheal}
          ]}
          ].

          3、網(wǎng)絡(luò)分區(qū)處理策略:

          有以下3種處理策略:

          (1)ignore

          默認(rèn)類型,不處理。

          要求你所在的網(wǎng)絡(luò)環(huán)境非常可靠。例如,你的所有 node 都在同一個機(jī)架上,通過交換機(jī)互聯(lián),并且該交換機(jī)還是與外界通信的必經(jīng)之路。

          (2)pause_minority

          rabbitmq節(jié)點(diǎn)感知集群中其他節(jié)點(diǎn)down掉時,會判斷自己在集群中處于多數(shù)派還是少數(shù)派,也就是判斷與自己形成集群的節(jié)點(diǎn)個數(shù)在整個集群中的比例是否超過一半。如果是多數(shù)派,則正常工作,如果是少數(shù)派,則會停止rabbit應(yīng)用并不斷檢測直到自己成為多數(shù)派的一員后再次啟動rabbit應(yīng)用。注意:這種處理方式集群通常由奇數(shù)個節(jié)點(diǎn)組成。在CAP中,優(yōu)先保證了CP。

          注意:pause_minority適用情形有限制,如3個節(jié)點(diǎn)集群,每次只down1個時,此模式適用。但如果網(wǎng)絡(luò)都出問題,3節(jié)點(diǎn)會獨(dú)立形成3個集群。

          (3)autoheal

          你的網(wǎng)絡(luò)環(huán)境可能是不可靠的。你會更加關(guān)心服務(wù)的可持續(xù)性,而非數(shù)據(jù)完整性。你可以構(gòu)建一個包含2個node的集群。

          當(dāng)網(wǎng)絡(luò)分區(qū)恢復(fù)后,rabbitmq各分區(qū)彼此進(jìn)行協(xié)商,分區(qū)中客戶端連接數(shù)最多的為勝者,其余的全部會進(jìn)行重啟,恢復(fù)到同步狀態(tài)。

          ————————————————

          版權(quán)聲明:本文為CSDN博主「賀群」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

          原文鏈接:

          https://blog.csdn.net/hhq163/article/details/92584790




          鋒哥最新SpringCloud分布式電商秒殺課程發(fā)布

          ??????

          ??長按上方微信二維碼 2 秒





          感謝點(diǎn)贊支持下哈 

          瀏覽 186
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(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>
                  日本在线黄 | 麻豆视频免费观看 | 免费拍拍拍 | 男女操逼网站 | 国产做a爱一级毛片 |