1. 程式人生 > >RabbitMQ cluster

RabbitMQ cluster

rabbitmq cluster

環境準備

主機版本

Linux control-ha-3 4.4.0-45-generic #66-Ubuntu SMP Wed Oct19 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Erlang版本號

Erlang/OTP 18 [erts-7.3] [source] [64-bit][async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.3 (abortwith ^G)

rabbitmq版本

Version: 3.5.7-1

Depends: adduser, erlang-nox (>= 1:13.b.3) | esl-erlang,logrotate, init-system-helpers (>= 1.18~)

安裝erlang

# apt-get installerlang

常用命令

1 查看所有隊列信息

# rabbitmqctl list_queues

2 關閉應用

# rabbitmqctl stop_app

3 啟動應用,和上述關閉命令配合使用,達到清空隊列的目的

# rabbitmqctl start_app

4 清除所有隊列

# rabbitmqctl reset

5 更多用法及參數,可以執行如下命令查看

# rabbitmqctl

6 首先關閉

# rabbitmqctlstop_app

7 還原:

# rabbitmqctlreset

8 啟動:

# rabbitmqctlstart_app

9 添加用戶:

# rabbitmqctladd_user dftc [email protected]

10 設置權限:

# rabbitmqctlset_permissions -p / dftc ".*" ".*" ".*"

11 查看用戶:

# rabbitmqctllist_users

control1, control 2, control 3以及其相關配置

搭載了RabbitMQ服務的Ubuntu服務器。

1. Control1具體網絡配置如下:

Ip address

192.168.163.141

net mask

255.255.255.0

gateway

192.168.163.2

Dns

114.114.114.114

2. Control2具體網絡配置如下:

Ip address

192.168.163.142

net mask

255.255.255.0

gateway

192.168.163.2

Dns

114.114.114.114

3. Control3具體網絡配置如下:

Ip address

192.168.163.143

net mask

255.255.255.0

gateway

192.168.163.2

Dns

114.114.114.114

RabbitMQ單節點配置流程

1. 配置3臺臺可以接入公網的CentOS,然後在各機器中按序執行一下命令:

# apt-getinstall erlang -y

# wgethttps://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_5/rabbitmq-server_3.6.5-1_all.deb

# rabbitmq-server

# rabbitmq-pluginsenable rabbitmq_management

2. 在每個節點配置/etc/hosts中最後增加下面內容:

#vi /etc/hosts

192.168.163.141 control1

192.168.163.142 control2

192.168.163.143 control3

輸入erl確認erlang已經正確安裝

當出現以上信息時表示安裝完成。然後輸入’halt().’退出即可。

然後在配置Erlang環境變量,vi /etc/profile文件,增加下面的環境變量:

#seterlang environment

exportPATH=$PATH:/opt/erlang/bin

3. 重啟三臺機器

#reboot

4. 構建起erlang的集群環境

Rabbitmq的集群是依賴於erlang的集群來工作的。Erlang的集群中各節點是通過一個magic cookie來實現的,這個cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,所以必須保證各節點cookie保持一致,否則節點之間就無法通信。

使用以下命令將Control1中的/var/lib/rabbitmq/.erlang.cookie 復制到其他節點。在Control1節點運行以下命令:

# scp /var/lib/rabbitmq/.erlang.cookie [email protected]: /var/lib/rabbitmq/.erlang.cookie

# scp /var/lib/rabbitmq/.erlang.cookie [email protected]: /var/lib/rabbitmq/.erlang.cookie

由於文件是400的權限,所以在Control2以及Control3節點運行以下命令:

保證權限屬主屬組完全一致

# chmod 400/var/lib/rabbitmq/.erlang.cookie

# chown rabbitmq.rabbitmq/var/lib/rabbitmq/.erlang.cookie

完成後運行rabbitmqctl stop 然後 rabbitmq-server 重啟服務

# rabbitmqctl stop

# /sbin/service rabbitmq-server restart

Control1節點增加用戶,並且為用戶賦予權限

# rabbitmqctl add_user dftc [email protected](測試環境使用[email protected]

# rabbitmqctl set_user_tags dftc administrator

# rabbitmqctl set_permissions -p / dftc ‘.*‘‘.*‘ ‘.*‘

通過http://192.168.163.141:15672 用戶名為:dftc 密碼為:[email protected](測試環境使用[email protected])連入第一臺配置成功的RabbitMQ服務器。其他節點暫不配置

Iptables打開對應端口,尤其註意436925672,沒有打開的時候,添加集群會報錯並提示打開

#rabbitmq cluster

-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT

RabbitMQ集群搭建

1. RabbitMQ相關的配置

使用 -detached 參數,在各節點中運行以下命令:

# rabbitmqctl stop

# rabbitmq-server –detached

組成集群,在control2control3中分別運行以下命令:

# rabbitmqctl stop_app

# rabbitmqctl join_cluster [email protected](跟據實際主機名確定)

# rabbitmqctl start_app

可選步驟:在已經可用的Control1web頁面,配置

技術分享

註:紅框內的內容在沒配置之前是沒有的。


本文出自 “NB小菜鳥” 博客,謝絕轉載!

RabbitMQ cluster