Rabbitmq映象集群部署

2021-08-21 14:41:20 字數 3658 閱讀 7002

位址  : 

環境:兩台伺服器作為兩個節點,把node-003加入node-002

192.168.95.129  node-002

192.168.95.130  node-003

1. 配置環境host,兩個節點的host都需要包含每個節點的資訊,資訊要一致。下面是在node-002中的操作。node-003中也需要做相同一樣的操作(把hostname改為 node-003,多個節點同理)

a.  [root@node-002 sbin]# vi /etc/hosts

192.168.95.129 node-002

192.168.95.130 node-003

b.   儲存a後:

[root@node-002 sbin]# vi /etc/hostname

node-002

c.  儲存b

[root@node-002 sbin]# vi /etc/sysconfig/network

networking=yes

hostname=node-002

d.  儲存c

[root@node-002 sbin]# service network restart

e. 重啟伺服器使host修改生效, 查詢hostname是否已修改

[root@node-002 sbin]# reboot

[root@node-002 sbin]# hostname

node-002

2.  因為rabbitmq集群是基於erlang同步的,所以先配置使各個節點 中 .erlang.cookie檔案一致。

[root@node-002 sbin]# find / -name .erlang.cookie

/root/.erlang.cookie

[root@node-002 sbin]# scp /root/.erlang.cookie root@node-003:/root

3.  [root@node-002 sbin]# cd /opt/rabbitmq_server-3.7.7/sbin

[root@node-002 sbin]# ./rabbitmq-server -detached

[root@node-002 sbin]# ps aux|grep rabbitmq

4. 切換到node-003伺服器,  確定下兩台伺服器互相能否ping通,ping node-002

//預設是磁碟節點,如果是記憶體節點的話,需要加--ram引數【./rabbitmqctl join_cluster --ram rabbit@node-002】

5.  因為兩台伺服器host已經改掉了,已經部署localhost了,所以需要加上對應的使用者,先前的username使用者已經登入不上

控制台了。新增乙個admin使用者如下:【node-003也可以直接用這個使用者訪問】

[root@node-002 sbin]#  ./rabbitmqctl -n rabbit@node-002 add_user admin 123456

adding user "admin" ...

[root@node-002 sbin]# ./rabbitmqctl -n rabbit@node-002 set_user_tags admin administrator

setting tags for user "admin" to [administrator] ...

[root@node-002 sbin]#  ./rabbitmqctl -n rabbit@node-002 set_permissions -p / admin '.*' '.*' '.*'

setting permissions for user "admin" in vhost "/" ...

[root@node-002 sbin]# ./rabbitmq-plugins enable rabbitmq_management

6.  通過    ,輸入 admin  123456 即可登入。

普通模式:預設模式,以兩個節點(rabbit01、rabbit02)為例來進行說明。對於queue來說,訊息實體只存在於其中乙個節點rabbit01(或者rabbit02),rabbit01和rabbit02兩個節點僅有相同的元資料,即佇列的結構。當訊息進入rabbit01節點的queue後,consumer從rabbit02節點消費時,rabbitmq會臨時在rabbit01、rabbit02間進行訊息傳輸,把a中的訊息實體取出並經過b傳送給consumer。所以consumer應盡量連線每乙個節點,從中取訊息。即對於同乙個邏輯佇列,要在多個節點建立物理queue。否則無論consumer連rabbit01或rabbit02,出口總在rabbit01,會產生瓶頸。當rabbit01節點故障後,rabbit02節點無法取到rabbit01節點中還未消費的訊息實體。如果做了訊息持久化,那麼得等rabbit01節點恢復,然後才可被消費;如果沒有持久化的話,就會產生訊息丟失的現象。

首先映象模式要依賴policy模組,這個模組是做什麼用的呢?

policy中文來說是政策,策略的意思,那麼他就是要設定,那些exchanges或者queue的資料需要複製,同步,如何複製同步?對就是做這些的。

1. 直接用管控臺新增策略如下:

引數解釋:

name: 為策略名稱  ,我命名為  winy-ha

pattern: 為匹配符,只有乙個^代表匹配所有,^zlh為匹配名稱為zlh的exchanges或者queue,這裡我設定為匹配全部

priority:配置了多個策略時候的優先順序,值越大,優先順序越高。(單個策略配置意義不大)

注意:沒有指定優先順序的訊息會將優先順序以0對待。 對於超過優先順序佇列所定最大優先順序的訊息,優先順序以最大優先順序對待

definition: 為匹配型別,他分為3種模式:all-所有(所有的queue),exctly-部分(需配置ha-params引數,此引數為int型別比如3,眾多集群中的隨機3臺機器),nodes-指定(需配置ha-params引數,此引數為陣列型別比如["3rabbit@f","rabbit@g"]這樣指定為f與g這2臺機器。)

2. 測試一下上面策略是否生效

控制台queue tab頁面新增乙個測試用的queue  ,install-test-queue

RabbitMQ集群部署

第一步 獲取rabbitmq映象 docker pull rabbitmq management第二步 啟動mq docker run d hostname rabbit1 name myrabbit1 p 15672 15672 p 5672 5672 e rabbitmq erlang cook...

RabbitMQ集群部署

環境 ip主機名 作業系統 10.0.0.1 test1 centos7.2 10.0.0.2 test2 centos7.2 10.0.0.3 test3 centos7.2 一 安裝依賴環境。yum y install gcc glibc devel make ncurses devel ope...

docker部署RabbitMQ集群

rabbitmq 有三種模式 單機模式,普通集群模式,映象集群模式。單機模式即單獨執行乙個 rabbitmq 例項,而集群模式需要建立多個 rabbitmq例項。1 普通集群模式 概念 預設的集群模式。需要建立多個 rabbitmq 節點。但對於 queue 和訊息來說,只存在於其中乙個節點,其他節...