1. 程式人生 > >RabbitMQ集群部署

RabbitMQ集群部署

設置 mce 一個 安裝 檢查 open glibc 添加用戶 chang

環境:

ip z主機名 c操作系統
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 openssl-devel xmlto perl wget

二、防火墻、主機與ip間的映射。

  1. 關閉或設置防火墻

    systemctl stop firewalld.service

    systemctl disable firewalld.service

    firewall-cmd --state

  2. 建立主機和ip間的映射關系

    vi /etc/hosts

      10.0.0.1 test1

      10.0.0.2 test2

      10.0.0.3 test3

三、安裝erlang,因為RabbitMQ基於erlang開發。

  1. 安裝erlang

    cd /data/tmp

    tar -xvzf otp_src_18.3.tar.gz -C /usr/local/

    cd /usr/local/otp_src_18.3

    ./configure --prefix=/usr/local/erlang

    make &&make install

  2. 配置環境變量

    vim /etc/profile

      #set erlang environment
      ERL_HOME=/usr/local/erlang
      PATH=$ERL_HOME/bin:$PATH
      export ERL_HOME PATH

    source /etc/profile

  3. 測試,如果進入erlang的shell則表示成功

    erl

四、安裝RabbitMQ(以下為test1部署,同理部署test2、test3)。

  1. 下載解壓

    cd /data/tmp

    tar -xvzf rabbitmq-server-generic-unix-3.5.4.tar.gz -C /data/local/rabbitmq-server

    cd /data/local

    mv rabbitmq-server-3.5.4 rabbitmq-server

  2. 配置環境變量

    vim /etc/profile

      # rabbitmq evironment configration
      export PATH=$PATH:/data/local/rabbitmq-server/sbin

    source /etc/profile

  3. 啟動RabbitMQ server (如提示找不到命令,請檢查環境變量路徑是否正確)

    rabbitmq-server -detached

    rabbitmqctl status/stop/list_users ## 查看狀態、停止服務、列出角色命令

    rabbitmqctl cluster_status 查看當前節點集群狀態

      Cluster status of node rabbit@test1 ...
      [{nodes,[{disc,[rabbit@test1]}]},
      {running_nodes,[rabbit@test1]},
      {cluster_name,<<"rabbit@test1">>},
      {partitions,[]}]

  4. 配置web頁面插件

    rabbitmq-plugins enable rabbitmq_management

  5. 訪問管理頁面測試 10.0.0.1:15672 (此時沒有登錄用戶)

  6. 添加管理員賬號

    rabbitmqctl add_user admin 123.abc ## 添加用戶,後面兩個參數是用戶名和密碼.
    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" ## 添加權限
    rabbitmqctl set_user_tags admin administrator ## 修改用戶角色

  7. 登錄測試,刪除guest用戶,安裝完成。

四、配置MQ集群。

  1. 設置節點間認證cookie(將test1上的拷貝到其他兩臺)

    scp /root/.erlang.cookie 10.0.0.2:/root/

    scp /root/.erlang.cookie 10.0.0.2:/root/

  2. 加入到test1的集群(分別在test2、test3上操作)

    rabbitmqctl stop_app # 先停掉節點,否則join_cluster會清除該節點所有資源和數據

    rabbitmqctl join_cluster rabbit@test1 # 加入集群

    rabbitmqctl start_app # 啟動節點

    rabbitmqctl cluster_status # 查看集群狀態,test2、test3都執行完集群應該有三個節點

  3. 測試(停掉其中一臺,看集群狀態的變化)

五、退出集群(當某臺機器不需要再存在於集群中時,test3為例)。

  1. rabbitmqctl stop_app ## 停掉需要提出的節點

  2. rabbitmqctl reset ## 踢出集群

  3. rabbitmqctl start_app ## 啟動集群

  4. rabbitmqctl cluster_status ## 查看該機器當前集群狀態

五、重要提示。

  (1)、當整個集群down掉時,最後一個down機的節點必須第一個啟動到在線狀態,如果不是這樣,節點會等待30s等最後的磁盤節點恢復狀態,然後失敗。如果最後下線的節點不能上線,可以通過forget_cluster_node 指令來踢出集群。

  (2)、如果所有的節點不受控制的同時宕機,比如掉電,會進入所有的節點都會認為其他節點比自己宕機的要晚,即自己先宕機,這種情況下可以使用force_boot指令來啟動一個節點。

六、其他

  1. 關於用戶

    新增用戶:rabbitmqctl add_user username password

    刪除用戶:rabbitmqctl delete_user username

    修改密碼:rabbitmqctl change_password Username Newpassword

    查看當前用戶列表:rabbitmqctl list_users

  2. 關於角色(五類系統角色)

    a. 角色分類

      administrator 超級管理員:可查看所有的信息,可以對用戶,策略進行操作。
      monitoring 監控者:可登陸管理控制臺查看rabbitmq節點的相關信息(進程數、內存、磁盤使用情況等)。
      policymaker 策略制定者:可登陸管理控制臺對policy進行管理。但無法查看節點的相關信息。
      management 普通管理者:僅可登陸管理控制臺,無法看到節點信息,也無法對策略進行管理。
      其他用戶:無法登陸管理控制臺,通常就是普通的生產者和消費者。

    b. 相關命令

      修改用戶角色:rabbitmqctl set_user_tags username administrator
      也可以賦予多個角色:rabbitmqctl set_user_tags username administrator monitoring

  3. 關於權限(用戶權限指的是用戶對exchange,queue的操作權限)

    a. 權限分類

      配置權限:配置權限會影響到exchange,queue的聲明和刪除。
      讀寫權限:讀寫權限影響到從queue裏取消息,向exchange發送消息以及queue和exchange的綁定(bind)操作。

    b. 相關命令

      設置用戶權限:使用戶admin具有在vhost1這個/virtual host中所有資源的配置、寫、讀權限
        rabbitmqctl set_permissions -p /vhost1 user_admin ‘.*‘ ‘.*‘ ‘.*‘
      查看(指定hostpath)所有用戶的權限信息
        rabbitmqctl list_permissions -p /vhost1
      查看指定用戶的權限信息
        rabbitmqctl list_user_permissions User
      清除用戶的權限信息
        rabbitmqctl clear_permissions -p /vhost1 User

RabbitMQ集群部署