婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > 深入淺析RabbitMQ鏡像集群原理

深入淺析RabbitMQ鏡像集群原理

熱門標(biāo)簽:電銷機(jī)器人 深圳 外呼系統(tǒng)會(huì)封嗎 武漢AI電銷機(jī)器人 地圖標(biāo)注如何弄全套標(biāo) 南京電銷外呼系統(tǒng)哪家好 實(shí)體店地圖標(biāo)注怎么標(biāo) 股票配資電銷機(jī)器人 在電子版地圖標(biāo)注要收費(fèi)嗎 萬利達(dá)綜合醫(yī)院地圖標(biāo)注點(diǎn)

集群架構(gòu)

RabbitMQ 集群是一個(gè)或多個(gè)節(jié)點(diǎn)的邏輯分組,集群中的每個(gè)節(jié)點(diǎn)都是對等的

每個(gè)節(jié)點(diǎn)共享所有的用戶,虛擬主機(jī),隊(duì)列,交換器,綁定關(guān)系,運(yùn)行時(shí)參數(shù)和其他分布式狀態(tài)等信息。

一個(gè)高可用,負(fù)載均衡的 RabbitMQ 集群架構(gòu)應(yīng)類似下圖:

這里對上面的集群架構(gòu)做一下解釋說明:

1)首先一個(gè)基本的 RabbitMQ 集群不是高可用的

雖然集群共享隊(duì)列,但在默認(rèn)情況下,消息只會(huì)被路由到某一個(gè)節(jié)點(diǎn)的符合條件的隊(duì)列上,并不會(huì)同步到其他節(jié)點(diǎn)的相同隊(duì)列上。

假設(shè)消息路由到 node1 的 my-queue 隊(duì)列上,但是 node1 突然宕機(jī)了,那么消息就會(huì)丟失

想要解決這個(gè)問題,需要開啟隊(duì)列鏡像,將集群中的隊(duì)列彼此之間進(jìn)行鏡像,此時(shí)消息就會(huì)被拷貝到處于同一個(gè)鏡像分組中的所有隊(duì)列上。

2)其次 RabbitMQ 集群本身并沒有提供負(fù)載均衡的功能

也就是說對于一個(gè)三節(jié)點(diǎn)的集群,每個(gè)節(jié)點(diǎn)的負(fù)載可能都是不相同的,想要解決這個(gè)問題可以通過硬件負(fù)載均衡或者軟件負(fù)載均衡的方式

這里我們選擇使用 HAProxy 來進(jìn)行負(fù)載均衡,當(dāng)然也可以使用其他負(fù)載均衡中間件,如LVS等。

HAProxy 同時(shí)支持四層和七層負(fù)載均衡,并基于單一進(jìn)程的事件驅(qū)動(dòng)模型,因此它可以支持非常高的井發(fā)連接數(shù)。

3)接著假設(shè)我們只采用一臺(tái) HAProxy

那么它就存在明顯的單點(diǎn)故障的問題

所以至少需要兩臺(tái) HAProxy ,同時(shí)這兩臺(tái) HAProxy 之間需要能夠自動(dòng)進(jìn)行故障轉(zhuǎn)移,通常的解決方案就是 KeepAlived 。

KeepAlived 采用 VRRP (Virtual Router Redundancy Protocol,虛擬路由冗余協(xié)議) 來解決單點(diǎn)失效的問題

它通常由一組一備兩個(gè)節(jié)點(diǎn)組成,同一時(shí)間內(nèi)只有主節(jié)點(diǎn)會(huì)提供對外服務(wù),并同時(shí)提供一個(gè)虛擬的 IP 地址 (Virtual Internet Protocol Address ,簡稱 VIP) 。

如果主節(jié)點(diǎn)故障,那么備份節(jié)點(diǎn)會(huì)自動(dòng)接管 VIP 并成為新的主節(jié)點(diǎn) ,直到原有的主節(jié)點(diǎn)恢復(fù)。

4)最后,任何想要連接到 RabbitMQ 集群的客戶端

只需要連接到虛擬 IP,而不必關(guān)心集群是何種架構(gòu)。

搭建集群準(zhǔn)備:

1、準(zhǔn)備3個(gè)虛擬機(jī)

vi /etc/hostname   #修改虛擬機(jī)名稱  node1  node2  node3
虛擬機(jī)(機(jī)器)名稱 node1 node2 node3
ip 192.168.0.101 192.168.0.102 192.168.0.103
安裝 Erlang+RabbitMQ Erlang+RabbitMQ Erlang+RabbitMQ

2、設(shè)置node1、node2、node3的hosts

vi /etc/hosts  #修改虛擬機(jī)hosts  node1  node2  node3

文件內(nèi)容:

192.168.0.101 node1
192.168.0.102 node2
192.168.0.103 node3

安裝Erlang:

由于RabbitMQ是基于Erlang(面向高并發(fā)的語言)語言開發(fā),所以在安裝RabbitMQ之前,需要先安裝Erlang。

1.選擇Erlang和RabbitMQ版本,這里選擇RabbitMQ3.9.x、Erlang24.0,查看對應(yīng)版本   

2.Erlang官網(wǎng)下載、Github下載

3.更新基本系統(tǒng),安裝任何軟件包之前,建議使用以下命令更新軟件包和存儲(chǔ)庫

yum -y update

4、安裝 tar

yum install -y tar

5、首先要先安裝GCC、 GCC-C++、 Openssl等依賴模塊:

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

6、再安裝ncurses模塊

yum -y install ncurses-devel
yum install ncurses-devel

7、將安裝包拷貝到linux下:

8、解壓ErLang安裝包

[root@node1 /]# cd /usr/local/  #先切換到安裝包目錄
[root@nodel local]# ls  #查看文件
bin  etc  games  include  lib  lib64  libexec  otp_src_24.0  otp_src_24.0.tar.gz  sbin  share  src
[root@nodel local]# tar -xvf otp_src_24.0.tar.gz  #解壓文件

9、創(chuàng)建安裝的目錄/usr/local/erlang

[root@node1 local]# mkdir erlang
[root@node1 local]# ls
bin  erlang  etc  games  include  lib  lib64  libexec  otp_src_24.0  otp_src_24.0.tar.gz  sbin  share  src
[root@node1 local]# 

10、切換到解壓后的目錄

[root@node1 local]# cd otp_src_24.0
[root@node1 otp_src_24.0]# ls
AUTHORS  bootstrap  configure.src    erl-build-tool-vars.sh  HOWTO  LICENSE.txt  Makefile.in  otp_patch_apply  otp_versions.table  prebuilt.files  system       xcomp
bin      configure  CONTRIBUTING.md  erts                    lib    make         otp_build    OTP_VERSION      plt                 README.md       TAR.include
[root@node1 otp_src_24.0]# 

11、配置安裝路徑

./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac

erlang的編譯需要用到j(luò)ava環(huán)境,如果不裝,會(huì)報(bào)錯(cuò)如下,但不影響后續(xù)操作

12、進(jìn)行編譯安裝

make  make install

13、查看安裝

[root@node1 local]# cd erlang/
[root@node1 erlang]# ll
total 4
drwxr-xr-x. 2 root root 4096 Aug  7 23:30 bin
drwxr-xr-x. 3 root root   19 Aug  7 23:30 lib
[root@node1 erlang]# 

14、配置環(huán)境變量

vi /etc/profile

加入一下配置:

#########     erlang       #############
PATH=$PATH:/usr/local/erlang/bin
########################################

15、使配置生效:

source /etc/profile

16、直接輸入 erl 、得到如下圖得安裝成功,輸入 halt(). 退出

安裝RabbitMQ:

1、Github下載

2、將安裝包拷貝到linux下:

3、解壓到 /usr/local/ 目錄下

[root@node1 local]# tar -xvf rabbitmq-server-generic-unix-3.9.3.tar.xz 
******
[root@node1 local]# ls
bin     etc    include  lib64    otp_src_24.0         rabbitmq_server-3.9.3                      sbin   src
erlang  games  lib      libexec  otp_src_24.0.tar.gz  rabbitmq-server-generic-unix-3.9.3.tar.xz  share

4、添加環(huán)境變量

vi /etc/profile

加入一下配置:

#########     RabbitMQ   #############
PATH=$PATH:/usr/local/rabbitmq_server-3.9.3/sbin
########################################

5、使配置生效:

source /etc/profile

 

6、切換到解壓后的目錄

[root@node1 local]# cd rabbitmq_server-3.9.3/
[root@node1 rabbitmq_server-3.9.3]# ls
escript          LICENSE-APACHE2-excanvas        LICENSE-erlcloud    LICENSE-MIT-Erlware-Commons  LICENSE-MIT-Sammy     LICENSE-rabbitmq_aws
etc              LICENSE-APACHE2-ExplorerCanvas  LICENSE-httpc_aws   LICENSE-MIT-Flot             LICENSE-MIT-Sammy060  plugins
INSTALL          LICENSE-APL2-Stomp-Websocket    LICENSE-ISC-cowboy  LICENSE-MIT-jQuery           LICENSE-MPL           sbin
LICENSE          LICENSE-BSD-base64js            LICENSE-MIT-EJS     LICENSE-MIT-jQuery164        LICENSE-MPL2          share
LICENSE-APACHE2  LICENSE-BSD-recon               LICENSE-MIT-EJS10   LICENSE-MIT-Mochi            LICENSE-MPL-RabbitMQ
[root@node1 rabbitmq_server-3.9.3]# cd sbin/
[root@node1 sbin]# ls
rabbitmqctl  rabbitmq-defaults  rabbitmq-diagnostics  rabbitmq-env  rabbitmq-plugins  rabbitmq-queues  rabbitmq-server  rabbitmq-streams  rabbitmq-upgrade
[root@node1 sbin]# 

7、啟動(dòng)web管理插件

[root@node1 sbin]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
started 3 plugins.

8、后臺(tái)啟動(dòng)rabbitmq服務(wù)

rabbitmq-server -detached

9、啟用了rabbitmq的管理插件,會(huì)有一個(gè)web管理界面,默認(rèn)監(jiān)聽端口15672,將此端口在防火墻上打開,則可以訪問web界面:

使用默認(rèn)的用戶 guest / guest (此也為管理員用戶)登陸,會(huì)發(fā)現(xiàn)無法登陸,

報(bào)錯(cuò):User can only log in via localhost。

那是因?yàn)槟J(rèn)是限制了guest用戶只能在本機(jī)登陸,也就是只能登陸localhost:15672。

可以通過修改配置文件rabbitmq.conf,取消這個(gè)限制: loopback_users這個(gè)項(xiàng)就是控制訪問的,

如果只是取消guest用戶的話,只需要loopback_users.guest = false 即可。或者添加遠(yuǎn)程用戶

10、添加遠(yuǎn)程用戶

# 添加用戶
rabbitmqctl add_user 用戶名 密碼
# 設(shè)置用戶角色,分配操作權(quán)限
rabbitmqctl set_user_tags 用戶名 角色
# 為用戶添加資源權(quán)限(授予訪問虛擬機(jī)根節(jié)點(diǎn)的所有權(quán)限)
rabbitmqctl set_permissions -p / 用戶名 ".*" ".*" ".*"

角色有四種:

  • administrator:可以登錄控制臺(tái)、查看所有信息、并對rabbitmq進(jìn)行管理
  • monToring:監(jiān)控者;登錄控制臺(tái),查看所有信息
  • policymaker:策略制定者;登錄控制臺(tái)指定策略
  • managment:普通管理員;登錄控制

這里創(chuàng)建用戶rabbitadmin,密碼rabbitadmin,設(shè)置administrator角色,賦予所有權(quán)限

[root@node1 sbin]# rabbitmqctl add_user rabbitadmin rabbitadmin
Adding user "rabbitadmin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@node1 sbin]# rabbitmqctl set_user_tags rabbitadmin administrator
Setting tags for user "rabbitadmin" to [administrator] ...
[root@node1 sbin]# rabbitmqctl set_permissions -p / rabbitadmin ".*" ".*" ".*"
Setting permissions for user "rabbitadmin" in vhost "/" ...
[root@node1 sbin]# 

11、登錄,其他兩臺(tái)虛擬機(jī)也是如上配置

同步cookie:

1、如何查看cookie

[root@node1 rabbitmq]# pwd  
/usr/local/rabbitmq_server-3.9.3/var/log/rabbitmq
[root@node1 rabbitmq]# more rabbit\@node1.log 
******
2021-08-14 21:11:06.883853-04:00 [info] 0.222.0>  node           : rabbit@node1
2021-08-14 21:11:06.883853-04:00 [info] 0.222.0>  home dir       : /root
2021-08-14 21:11:06.883853-04:00 [info] 0.222.0>  config file(s) : (none)
2021-08-14 21:11:06.883853-04:00 [info] 0.222.0>  cookie hash    : baCpCWaCXrmkyZweJiNbVw==
2021-08-14 21:11:06.883853-04:00 [info] 0.222.0>  log(s)         : /usr/local/rabbitmq_server-3.9.3/var/log/rabbitmq/rabbit@node1.log
2021-08-14 21:11:06.883853-04:00 [info] 0.222.0>                 : /usr/local/rabbitmq_server-3.9.3/var/log/rabbitmq/rabbit@node1_upgrade.log
2021-08-14 21:11:06.883853-04:00 [info] 0.222.0>                 : stdout>
2021-08-14 21:11:06.883853-04:00 [info] 0.222.0>  database dir   : /usr/local/rabbitmq_server-3.9.3/var/lib/rabbitmq/mnesia/rabbit@node1

我的${home}目錄是/root,切換到root目錄下,該文件是一個(gè)隱藏文件,需要使用 ls -al 命令查看

[root@node1 ~]# pwd
/root
[root@node1 ~]# ls -la
total 52
dr-xr-x---.  2 root root  4096 Aug 14 21:10 .
dr-xr-xr-x. 18 root root  4096 Nov 12  2020 ..
-rw-------.  1 root root   993 Nov  7  2020 anaconda-ks.cfg
-rw-------.  1 root root 14288 Aug 14 23:07 .bash_history
-rw-r--r--.  1 root root    18 Dec 28  2013 .bash_logout
-rw-r--r--.  1 root root   176 Dec 28  2013 .bash_profile
-rw-r--r--.  1 root root   176 Dec 28  2013 .bashrc
-rw-r--r--.  1 root root   100 Dec 28  2013 .cshrc
-r--------.  1 root root    20 Aug 14 00:00 .erlang.cookie
-rw-r--r--.  1 root root   129 Dec 28  2013 .tcshrc
[root@node1 ~]# 

2、同步(拷貝.cookie時(shí),各節(jié)點(diǎn)都必須停止MQ服務(wù),在node1上執(zhí)行遠(yuǎn)程操作命令)

scp /root/.erlang.cookie root@node2:/root/
scp /root/.erlang.cookie root@node3:/root/

集群搭建:

1、啟動(dòng)RabbitMQ服務(wù),順帶啟動(dòng)Erlang虛擬機(jī)和RabbitMQ應(yīng)用服務(wù),在node1、node2、node3執(zhí)行命令

rabbitmq-server -detached

2、RabbitMQ 集群的搭建需要選擇其中任意一個(gè)節(jié)點(diǎn)為基準(zhǔn),將其它節(jié)點(diǎn)逐步加入。這里我們以 node1 為基準(zhǔn)節(jié)點(diǎn),將 node2 和 node3 加入集群。在 node2 和node3 上執(zhí)行以下命令:

# 1.停止服務(wù)
rabbitmqctl stop_app
# rabbitmqctl stop會(huì)將Erlang虛擬機(jī)關(guān)閉,rabbitmqctl stop_app只關(guān)閉RabbitMQ服務(wù)

# 2.重置狀態(tài)
rabbitmqctl reset

# 3.節(jié)點(diǎn)加入, 在一個(gè)node加入cluster之前,必須先停止該node的rabbitmq應(yīng)用,即先執(zhí)行stop_app
# node2加入node1, node3加入node2
rabbitmqctl join_cluster rabbit@node1

# 4.啟動(dòng)服務(wù)
rabbitmqctl start_app

join_cluster 命令有一個(gè)可選的參數(shù) --ram ,該參數(shù)代表新加入的節(jié)點(diǎn)是內(nèi)存節(jié)點(diǎn),默認(rèn)是磁盤節(jié)點(diǎn)。

如果是內(nèi)存節(jié)點(diǎn),則所有的隊(duì)列、交換器、綁定關(guān)系、用戶、訪問權(quán)限和 vhost 的元數(shù)據(jù)都將存儲(chǔ)在內(nèi)存中,

如果是磁盤節(jié)點(diǎn),則存儲(chǔ)在磁盤中。

內(nèi)存節(jié)點(diǎn)可以有更高的性能,但其重啟后所有配置信息都會(huì)丟失,

因此RabbitMQ 要求在集群中至少有一個(gè)磁盤節(jié)點(diǎn),其他節(jié)點(diǎn)可以是內(nèi)存節(jié)點(diǎn)。

當(dāng)內(nèi)存節(jié)點(diǎn)離開集群時(shí),它可以將變更通知到至少一個(gè)磁盤節(jié)點(diǎn);

然后在其重啟時(shí),再連接到磁盤節(jié)點(diǎn)上獲取元數(shù)據(jù)信息。

除非是將 RabbitMQ 用于 RPC 這種需要超低延遲的場景,

否則在大多數(shù)情況下,RabbitMQ 的性能都是夠用的,可以采用默認(rèn)的磁盤節(jié)點(diǎn)的形式。

另外,如果節(jié)點(diǎn)以磁盤節(jié)點(diǎn)的形式加入,則需要先使用 reset 命令進(jìn)行重置,然后才能加入現(xiàn)有群集,重置節(jié)點(diǎn)會(huì)刪除該節(jié)點(diǎn)上存在的所有的歷史資源和數(shù)據(jù)。

采用內(nèi)存節(jié)點(diǎn)的形式加入時(shí)可以略過 reset 這一步,因?yàn)閮?nèi)存上的數(shù)據(jù)本身就不是持久化的

3、查看集群狀態(tài)

此時(shí)可以在任意節(jié)點(diǎn)上使用 rabbitmqctl cluster_status 命令查看集群狀態(tài),輸出如下:

[root@node1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1 ...
Basics
Cluster name: rabbit@node1
Disk Nodes
rabbit@node1
rabbit@node2
rabbit@node3
Running Nodes
rabbit@node1
rabbit@node2
rabbit@node3
Versions
rabbit@node1: RabbitMQ 3.9.3 on Erlang 24.0
rabbit@node2: RabbitMQ 3.9.3 on Erlang 24.0
rabbit@node3: RabbitMQ 3.9.3 on Erlang 24.0
Maintenance status
Node: rabbit@node1, status: not under maintenance
Node: rabbit@node2, status: not under maintenance
Node: rabbit@node3, status: not under maintenance
Alarms
Free disk space alarm on node rabbit@node3
Network Partitions
(none)
Listeners
Node: rabbit@node1, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@node1, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@node1, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@node2, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@node2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@node2, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@node3, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@node3, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@node3, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Feature flags
Flag: drop_unroutable_metric, state: enabled
Flag: empty_basic_get_metric, state: enabled
Flag: implicit_default_bindings, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: stream_queue, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled
[root@node1 ~]# 

4、UI 界面查看

鏡像隊(duì)列:

1、鏡像的配置是通過 policy 策略的方式,以命令的方式設(shè)置 或 UI界面設(shè)置

2、參數(shù)說明:

  • Name:policy的名稱
  • Pattern: queue的匹配模式(正則表達(dá)式)
  • priority:可選參數(shù),policy的優(yōu)先級(jí)
  • Definition:鏡像定義,包括三個(gè)部分ha-mode、ha-params、ha-sync-mode
  • ha-mode:指明鏡像隊(duì)列的模式,有效值為 all/exactly/nodes
  • all:表示在集群中所有的節(jié)點(diǎn)上進(jìn)行鏡像
  • exactly:表示在指定個(gè)數(shù)的節(jié)點(diǎn)上進(jìn)行鏡像,節(jié)點(diǎn)的個(gè)數(shù)由ha-params指定
  • nodes:表示在指定的節(jié)點(diǎn)上進(jìn)行鏡像,節(jié)點(diǎn)名稱通過ha-params指定
  • ha-params:ha-mode模式需要用到的參數(shù)
  • ha-sync-mode:進(jìn)行隊(duì)列中消息的同步方式,有效值為automatic(自動(dòng))和manual(手動(dòng))

3、對隊(duì)列名稱以“queue_”開頭的所有隊(duì)列進(jìn)行鏡像,并在集群的兩個(gè)節(jié)點(diǎn)上完成進(jìn)行,policy的設(shè)置命令為:

[root@node1 ~]# rabbitmqctl set_policy ha-queue-two '^queue_' '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
Setting policy "ha-queue-two" for pattern "^queue_" to "{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}" with priority "0" for vhost "/" ...
[root@node1 ~]# 

4、在任意節(jié)點(diǎn)(我在node1節(jié)點(diǎn))創(chuàng)建queue_testQueue隊(duì)列,并查看鏡像狀態(tài)

上圖Node中的+1表示備份,下圖中的Mirrors就是備份的節(jié)點(diǎn),若node1宕機(jī)了node3就會(huì)代替node1繼續(xù)提供服務(wù)

測試:首先關(guān)閉node1節(jié)點(diǎn)

然后查看node3節(jié)點(diǎn)上的鏡像狀態(tài),發(fā)現(xiàn)在node2節(jié)點(diǎn)也進(jìn)行了備份,以此說明:就算整個(gè)集群只剩下一臺(tái)機(jī)器了,依然能消費(fèi)隊(duì)列里面的消息

5、復(fù)制系數(shù)

若ha-mode 的值為 all ,代表消息會(huì)被同步到所有節(jié)點(diǎn)的相同隊(duì)列中,如果你的集群有很多節(jié)點(diǎn),那么此時(shí)復(fù)制的性能開銷就比較大,此時(shí)需要選擇合適的復(fù)制系數(shù)。

通常可以遵循過半寫原則,即對于一個(gè)節(jié)點(diǎn)數(shù)為 n 的集群,只需要同步到 n/2+1 個(gè)節(jié)點(diǎn)上即可。

6、集群的關(guān)閉與重啟

沒有一個(gè)直接的命令可以關(guān)閉整個(gè)集群,需要逐一進(jìn)行關(guān)閉。但是需要保證在重啟時(shí),最后關(guān)閉的節(jié)點(diǎn)最先被啟動(dòng)。如果第一個(gè)啟動(dòng)的不是最后關(guān)閉的節(jié)點(diǎn),那么這個(gè)節(jié)點(diǎn)會(huì)等待最后關(guān)閉的那個(gè)節(jié)點(diǎn)啟動(dòng),默認(rèn)進(jìn)行 10 次連接嘗試,超時(shí)時(shí)間為 30 秒,如果依然沒有等到,則該節(jié)點(diǎn)啟動(dòng)失敗。

這帶來的一個(gè)問題是,假設(shè)在一個(gè)三節(jié)點(diǎn)的集群當(dāng)中,關(guān)閉的順序?yàn)?node1,node2,node3,如果 node1 因?yàn)楣收蠒簳r(shí)沒法恢復(fù),此時(shí) node2 和 node3 就無法啟動(dòng)。想要解決這個(gè)問題,可以先將 node1 節(jié)點(diǎn)進(jìn)行剔除,命令如下:

rabbitmqctl forget_cluster_node rabbit@node1 --offline

此時(shí)需要加上 -offline 參數(shù),它允許節(jié)點(diǎn)在自身沒有啟動(dòng)的情況下將其他節(jié)點(diǎn)剔除。

7、解除集群

重置當(dāng)前節(jié)點(diǎn):

# 1.停止服務(wù)
rabbitmqctl stop_app
# 2.重置集群狀態(tài)
rabbitmqctl reset
# 3.重啟服務(wù)
rabbitmqctl start_app

重新加入集群:

# 1.停止服務(wù)
rabbitmqctl stop_app
# 2.重置狀態(tài)
rabbitmqctl reset
# 3.節(jié)點(diǎn)加入
rabbitmqctl join_cluster rabbit@node1
# 4.重啟服務(wù)
rabbitmqctl start_app

完成后重新檢查 RabbitMQ 集群狀態(tài):

rabbitmqctl cluster_status

除了在當(dāng)前節(jié)點(diǎn)重置集群外,還可在集群其他正常節(jié)點(diǎn)將節(jié)點(diǎn)踢出集群

rabbitmqctl forget_cluster_node rabbit@node3

8、變更節(jié)點(diǎn)類型

我們可以將節(jié)點(diǎn)的類型從RAM更改為Disk,反之亦然。假設(shè)我們想要反轉(zhuǎn)rabbit@node2和rabbit@node1的類型,將前者從RAM節(jié)點(diǎn)轉(zhuǎn)換為磁盤節(jié)點(diǎn),而后者從磁盤節(jié)點(diǎn)轉(zhuǎn)換為RAM節(jié)點(diǎn)。為此,我們可以使用change_cluster_node_type命令。必須首先停止節(jié)點(diǎn)。

# 1.停止服務(wù)
rabbitmqctl stop_app
# 2.變更類型 ram disc
rabbitmqctl change_cluster_node_type disc
# 3.重啟服務(wù)
rabbitmqctl start_app

9、清除 RabbitMQ 節(jié)點(diǎn)配置

# 如果遇到不能正常退出直接kill進(jìn)程
systemctl stop rabbitmq-server
# 查看進(jìn)程
ps aux|grep rabbitmq
# 清除節(jié)點(diǎn)rabbitmq配置
rm -rf /var/lib/rabbitmq/mnesia

到此這篇關(guān)于深入淺析RabbitMQ鏡像集群原理的文章就介紹到這了,更多相關(guān)RabbitMQ鏡像集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • docker部署rabbitmq集群的實(shí)現(xiàn)方法
  • 一篇文章帶你從入門到精通:RabbitMQ
  • Docker集群的創(chuàng)建與管理實(shí)例詳解

標(biāo)簽:臺(tái)州 武威 汕頭 濟(jì)源 廣東 泰安 安徽 濟(jì)寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入淺析RabbitMQ鏡像集群原理》,本文關(guān)鍵詞  深入,淺析,RabbitMQ,鏡像,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入淺析RabbitMQ鏡像集群原理》相關(guān)的同類信息!
  • 本頁收集關(guān)于深入淺析RabbitMQ鏡像集群原理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    视频一区二区中文字幕| 91国偷自产一区二区开放时间 | 国产69精品久久777的优势| 色88888久久久久久影院野外 | 538在线一区二区精品国产| 中文字幕av资源一区| 日本亚洲欧美天堂免费| 97se亚洲国产综合在线| 国产亚洲成年网址在线观看| 美女视频黄频大全不卡视频在线播放 | 日本伊人色综合网| 欧美亚洲高清一区二区三区不卡| 国产精品三级av| 精品一区二区三区日韩| 日韩一区二区三区四区| 亚洲大型综合色站| 欧美性受xxxx黑人xyx性爽| 一区免费观看视频| 成人开心网精品视频| 久久免费午夜影院| 精品影院一区二区久久久| 日韩亚洲欧美高清| 日韩av二区在线播放| 91精品一区二区三区在线观看| 一二三四区精品视频| 91久久香蕉国产日韩欧美9色| 亚洲天堂免费看| 99久久精品一区| 一区二区高清在线| 欧美在线制服丝袜| 日韩精品乱码免费| 日韩精品一区二区三区在线播放| 日韩国产欧美三级| 日韩欧美一二三区| 国产又黄又大久久| 日本一区二区三区视频视频| 成人免费va视频| 专区另类欧美日韩| 欧美日韩午夜精品| 肉丝袜脚交视频一区二区| 日韩一区二区中文字幕| 国产一区二区0| 亚洲乱码国产乱码精品精小说 | 亚洲一级在线观看| 欧美人狂配大交3d怪物一区| 免费精品视频在线| 欧美激情一区在线观看| 欧洲精品视频在线观看| 日本成人在线一区| 国产精品久久久久aaaa| 欧美日韩专区在线| 韩国视频一区二区| 亚洲激情六月丁香| 欧美一二三四在线| 99久久久国产精品免费蜜臀| 午夜久久久久久| 欧美高清一级片在线观看| 在线视频国内一区二区| 国精产品一区一区三区mba桃花 | 国产一区二区精品久久| 最好看的中文字幕久久| 91精品国产综合久久精品app | 北条麻妃一区二区三区| 亚洲成人福利片| 中文字幕不卡在线| 91精品福利在线一区二区三区| 国产一区二区电影| 亚洲成人在线免费| 欧美高清在线一区| 精品免费国产二区三区| 欧美性做爰猛烈叫床潮| 丁香天五香天堂综合| 奇米影视7777精品一区二区| 亚洲麻豆国产自偷在线| 亚洲精品在线观| 欧美群妇大交群中文字幕| 成人一二三区视频| 精品系列免费在线观看| 午夜精品爽啪视频| 亚洲日本丝袜连裤袜办公室| 久久久久免费观看| 欧美丰满高潮xxxx喷水动漫| 色综合久久中文综合久久97| 国产成人精品一区二区三区四区| 日韩不卡一区二区| 亚洲不卡av一区二区三区| 1区2区3区欧美| 国产精品不卡在线| 国产午夜亚洲精品理论片色戒| 欧美一二三区在线| 欧美精品亚洲一区二区在线播放| 色综合久久精品| 波多野结衣在线一区| 国产91精品精华液一区二区三区 | 蜜臀91精品一区二区三区| 一区二区国产视频| 一区二区三区四区视频精品免费| 亚洲欧美自拍偷拍| 国产精品成人午夜| 亚洲色大成网站www久久九九| 中文字幕在线不卡一区二区三区| 欧美激情中文字幕| 日本一区二区三区四区在线视频 | 国产日韩影视精品| 337p日本欧洲亚洲大胆色噜噜| 日韩无一区二区| 日韩一区二区高清| 欧美大片一区二区| 精品国产亚洲在线| 久久久精品日韩欧美| 欧美激情综合网| 中文字幕日韩一区| 亚洲一区影音先锋| 日韩精品国产精品| 国产一区二区在线观看免费| 成人一二三区视频| 色综合 综合色| 欧美高清精品3d| 日韩欧美激情一区| 国产日产欧美精品一区二区三区| 国产精品蜜臀av| 亚洲第一电影网| 激情综合色综合久久综合| 国产精品18久久久久久久网站| 北条麻妃国产九九精品视频| 欧美在线观看禁18| 日韩美一区二区三区| 亚洲国产精品ⅴa在线观看| 亚洲精品国产精品乱码不99| 视频一区二区欧美| 国产99久久久国产精品免费看 | 91在线你懂得| 91精品国产综合久久久久久| 国产天堂亚洲国产碰碰| 樱花草国产18久久久久| 久热成人在线视频| 99久久国产综合精品麻豆| 欧美精品久久99久久在免费线 | 国产成人丝袜美腿| 欧美综合一区二区| 精品国产制服丝袜高跟| 一区二区三区在线免费视频 | 6080日韩午夜伦伦午夜伦| 久久婷婷成人综合色| 一区二区欧美视频| 国产精品一区二区视频| 欧美视频在线观看一区| 国产欧美一区二区在线| 性欧美疯狂xxxxbbbb| 丁香五精品蜜臀久久久久99网站 | 国产在线视频一区二区| 欧美伊人久久久久久久久影院| 久久久亚洲精品一区二区三区| 亚洲综合在线五月| 成人在线综合网| 欧美sm美女调教| 亚洲国产精品一区二区www| 高清shemale亚洲人妖| 日韩一级成人av| 亚洲精品成a人| 国产成+人+日韩+欧美+亚洲| 日韩一区国产二区欧美三区| 亚洲婷婷国产精品电影人久久| 国产自产v一区二区三区c| 欧美美女网站色| 亚洲精品免费看| 99久久精品免费看国产免费软件| 久久这里只精品最新地址| 婷婷丁香激情综合| 欧美午夜精品久久久久久超碰| 国产精品护士白丝一区av| 久久成人免费网| 欧美一级日韩免费不卡| 首页国产欧美久久| 欧美日韩高清一区二区不卡| 日韩毛片在线免费观看| 成人动漫av在线| 中文在线一区二区 | 国产成人精品亚洲777人妖| 日韩一区二区三区精品视频| 午夜精品久久久久久久久久 | 从欧美一区二区三区| 精品日韩在线一区| 韩国一区二区在线观看| 精品久久一二三区| 国模一区二区三区白浆| 精品三级在线观看| 国产一区在线不卡| 久久久国产精华| 国产福利精品导航| 国产精品毛片无遮挡高清| 成人高清视频在线观看| 日韩毛片精品高清免费| 一本到高清视频免费精品| 一区二区三区四区中文字幕| 精品视频在线免费| 日韩av在线免费观看不卡| 日韩一区二区免费高清| 国产麻豆精品一区二区| 中文成人综合网|