位址 :
環境:兩台伺服器作為兩個節點,把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 和訊息來說,只存在於其中乙個節點,其他節...