1. 程式人生 > >rabbitmq叢集運維一點總結

rabbitmq叢集運維一點總結

說明:以下操作都以三節點叢集為例,機器名標記為機器A、機器B、機器C,如果為雙節點忽略機器C,如果為各多節點則與機器C操作相同

一、rabbitmq叢集必要條件

1.1、繫結實體ip,即ip a所能查詢到的繫結到網絡卡上的ip,以下是繫結方法:

1 #編輯配置路徑 /etc/rabbitmq/rabbitmq-env.conf
2 NODE_IP_ADDRESS=172.16.136.133

 

 1.2. 配置域名對映到實體ip
    #配置檔案1所在路徑 /etc/rabbitmq/rabbitmq.config (如果是叢集,每臺機器都需要修改這個繫結本機實體ip)
    #其中
[email protected]
是建立叢集時所配置的引數,@後面的引數為主機名,示例中為master [ {rabbit, [ {cluster_nodes, {[
'[email protected]'], disc}}, {cluster_partition_handling, ignore}, {default_user, <<"guest">>}, {default_pass, <<"guest">>}, {tcp_listen_options, [binary, {packet, raw}, {reuseaddr,
true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]} ]}, {kernel, [ {inet_dist_listen_max, 44001}, {inet_dist_listen_min, 44001} ]} ].
    #配置檔案2 所在路徑 /etc/hosts (如果是叢集,每臺機器都需要修改這個繫結本機實體ip,而且hosts檔案的對映不得重複,如果重複linux系統為以最下面一條記錄為準)
    
172.16.136.133 master 172.16.136.134 venus 172.16.136.135 venus2

二、啟動停止

2.1 停止

    #機器A
    service rabbitmq-server stop
    epmd -kill
    #機器B
    service rabbitmq-server stop
    epmd -kill
    #機器C
    service rabbitmq-server stop
    epmd -kill

2.2 啟動

    #機器A
    service rabbitmq-server  start
    #機器B
    service rabbitmq-server start
    #機器C
    service rabbitmq-server  start

三、重建叢集

3.1 首先使用2.1方法停止所有機器

3.2 移除rabbitmq配置記錄與儲存檔案

    #配置檔案位於 /var/lib/rabbitmq/mensia
    mv /var/lib/rabbitmq/mensia /var/lib/rabbitmq/mensia.bak

3.3接著 按2.2方法啟動所有機器

3.4 停止被加入叢集節點app

 比如A、B、C三臺機器,將B和C加入到A中去,需要執行以下命令    
    #機器B
    rabbitmqctl stop_app
    #機器C
    rabbitmqctl stop_app

3.5 建立叢集

注意此處master為唯一沒有執行rabbitmqctl stop_app的機器

1     #機器B
2     rabbitmqctl join_cluster [email protected]
3     #機器C
4     rabbitmqctl join_cluster [email protected]

3.6 啟動叢集

1     #機器B
2     rabbitmqctl start_app
3     #機器C
4     rabbitmqctl start_app

3.7 檢查叢集狀態

在任意一臺機器上執行rabbitmqctl cluster_status命令即可檢查,如下則叢集正常:

3.8 新增叢集配置 (見第四)

四 、新增叢集配置

4.1 建立使用者

 

例子中建立了兩個使用者

新增使用者add_user,設定角色set_user_tags,新增rabbitmq虛擬主機add_vhost,設定訪問許可權set_permissions,以下是詳細用法

 

1         # 建立第一個使用者
2         /usr/sbin/rabbitmqctl add_user 使用者名稱 密碼
3         /usr/sbin/rabbitmqctl set_user_tags 使用者名稱 administrator
4         /usr/sbin/rabbitmqctl set_permissions -p /  使用者名稱 ".*" ".*" ".*"
5         # 建立第二個使用者
6         /usr/sbin/rabbitmqctl add_user 使用者名稱2 密碼
7         /usr/sbin/rabbitmqctl set_user_tags 使用者名稱2 management 
8         /usr/sbin/rabbitmqctl add_vhost sip_ext 
9         /usr/sbin/rabbitmqctl set_permissions -p sip_ext 使用者名稱2 '.*' '.*' '.*' 
備註:RabbitMQ 虛擬主機,RabbitMQ 通過虛擬主機(vhost)來分發訊息。擁有自己獨立的許可權控制,不同的vhost之間是隔離的,單獨的。

許可權控制的基本單位:vhost。

使用者只能訪問與之繫結的vhost。

vhost是AMQP中唯一無法通過協議來建立的基元。只能通過rabbitmqctl工具來建立。

4.2 開啟15672網頁管理端,訪問mq

 

/usr/sbin/rabbitmq-plugins enable rabbitmq_management

4.3 在底部匯入.json字尾的配置檔案即可