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 dftcp@ss

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 dftcp@ss(測試環境使用queuep@ss

#  rabbitmqctl set_user_tags dftc administrator

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

 

通過http://192.168.163.141:15672 用戶名爲:dftc 密碼爲:dftcp@ss(測試環境使用queuep@ss)連入第一臺配置成功的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 --ramrabbit@rabbitmq-control1(跟據實際主機名確定)

#  rabbitmqctl start_app

 

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

spacer.gif

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

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章