Rabbitmq 運維

Rabbitmq 運維

1、安裝:

  1. 安裝ncurses
wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz
tar zxf ncurses-6.1.tar.gz
cd ncurses-6.1
./configure
make
make install
  1. 安裝openssl
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2p.tar.gz
mkdir /usr/local/openssl
tar zxf openssl-1.0.2p.tar.gz
cd openssl-1.0.2p/
./config --prefix=/usr/local/openssl
#新版本openssl默認編譯出來的libcrypto.a是沒有加-fPIC參數的,當重定位被引用的代碼段數據對象時出錯。
#修改openssl源碼的Makefile
#參考:https://blog.csdn.net/erlib/article/details/20995947
#在CFLAG= 添加 -fPIC
make
sudo make install
  1. 安裝erlang環境
#下載erlang:http://www.erlang.org/downloads/19.3
#安裝指南:http://erlang.org/doc/installation_guide/INSTALL.html

wget http://erlang.org/download/otp_src_19.3.tar.gz
tar zxf otp_src_19.3.tar.gz 
cd otp_src_19.3/
sudo mkdir /usr/local/erlang
./configure --prefix=/usr/local/erlang/ --with-ssl=/usr/local/openssl
make
sudo make install
  1. 安裝rabbitmq
# rabbitmq下載地址:http://www.rabbitmq.com/releases/rabbitmq-server/
# 下載須要安裝的版本:
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.12/rabbitmq-server-generic-unix-3.6.12.tar.xz
tar xJf rabbitmq-server-generic-unix-3.6.12.tar.xz
sudo mv rabbitmq_server-3.6.12 /usr/local/
sudo ln -s /usr/local/rabbitmq_server-3.6.12 /usr/local/rabbitmq

配置環境變量:html

$ cat /etc/profile
export ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:$PATH
export RABBITMQ_HOME=/usr/local/rabbitmq
export PATH=$RABBITMQ_HOME/sbin:$PATH

2、管理

1. 虛擬主機管理

  1. 查看現有的虛擬主機
# 查看現有的虛擬主機
    $ rabbitmqctl list_vhosts
    # 查看是否使用了trace功能
    $ rabbitmqctl list_vhosts name tracing
  1. 添加一個虛擬主機
$ rabbitmqctl add_vhost myvhost
  1. 刪除一個虛擬主機
$ rabbitmqctl delete_vhost myvhost
  1. 查看虛擬機權限
$ rabbitmqctl list_permissions -p myvhost
  1. 虛擬機權限授予
rabbitmqctl set_permissions -p vhost  root ".*" ".*" ".*"
格式:rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read} 
    vhost:授予用戶訪問權限的vhost的名稱
    user:能夠訪問指定vhost的用戶名
    conf:用於匹配用戶在哪些資源是擁有可配置權限的正則表達式(隊列和交換機的建立及刪除之類)
    write:用於匹配用戶在哪些資源是擁有可寫權限的正則表達式(發佈消息)
    read:用於匹配用戶在哪些資源是擁有可讀權限的正則表達式(讀取消息和清空隊列)

2.用戶權限管理

  1. 查看用戶的權限
$ rabbitmqctl list_user_permissions root
  1. 建立用戶並設置密碼
$ rabbitmqctl add_user root root
  1. 更改密碼
$ rabbitmqctl change_password root 123456
  1. 清除密碼
$ rabbitmqctl clear_password root
  1. 查看現有用戶
$ rabbitmqctl list_users
  1. 設置用戶角色
$ rabbitmqctl  set_user_tags root administrator
    用戶角色類型:
    none: 無任何角色,新建立的用戶角色默認爲none
    management:能夠訪問web管理界面
    policymaker:包含management的全部權限,並可能夠管理策略和參數
    monitoring:包含management的全部權限,能夠看到全部鏈接、信道及節點相關信息
    administrator: 最高權限
  1. 驗證用戶是否能登錄成功
$ rabbitmqctl authenticate_user root 123456
  1. 刪除用戶
$ rabbitmqctl delete_user root

3. WEB端管理

  1. 查看可用插件:
$ rabbitmq-plugins list
  1. 啓用web管理插件
$ rabbitmq-plugins enable rabbitmq_management
  1. 建立一個具備管理員身份的用戶
$ rabbitmqctl add_user monitor monitor
$ rabbitmqctl set_user_tags monitor administrator
  1. 登錄管理界面node

    http://serverip:15672web

  2. 關閉插件
$ rabbitmq-plugins disable rabbitmq_management

4. 應用管理

  1. 啓動
$ rabbitmq-server -detached
  1. 中止服務
# 中止運行Rabbitmq Erlang虛擬機和Rabbitmq服務應用
$ rabbitmqctl stop
# 中止運行Rabbitmq Erlang虛擬機和Rabbitmq服務應用(阻塞直達Erlang虛擬機進程退出)
$ rabbitmqctl shutdown
  1. 中止Rabbitmq應用(Erlang虛擬機處於運行狀態)
$ rabbitmqctl stop_app
  1. 啓動Rabbitmq應用
$ rabbitmqctl start_app
  1. 重置節點,還原到最初狀態
$ rabbitmqctl reset

5. 服務狀態:

  1. 隊列狀態

格式:rabbitmqctl list_queues [-p vhost] [queueinfoitem ...]正則表達式

$ rabbitmqctl list_queues -p myvhost
  1. 交換機狀態

格式:rabbitmqctl list_exchange [-p vhost] [exchangeinfoitem ...]ubuntu

$ rabbitmqctl list_exchanges -p myvhost name type durable auto_delete internal arguments policy
  1. bind狀態

格式:rabbitmqctl list bindings [-p vhost] [bindinginfoitem ...]安全

$ rabbitmqctl list_bindings -p myvhost -q
  1. 鏈接狀態

格式:rabbitmqctllist_connections [connectioninfoitem ...]bash

$ rabbitmqctl list_connections
  1. 信道狀態

格式: rabbitmqctl list_channels [channelinfoitem ...]cookie

$ rabbitmqctl list_channels
  1. 消費者狀態

格式:rabbitmqctl list_consumers [-p vhost]app

$ rabbitmqctl list_consumers -p myvhost
  1. 服務狀態
# Broker 狀態
$ rabbitmqctl status
# 節點健康檢測
$ rabbitmqctl node_health_check
# 環境變量名稱和值
$ rabbitmqctl environment
# 生成服務狀態報告
$ rabbitmqctl report > report.txt

3、配置

保持默認配置,基本不須要更改:
服務端口的更改。
$ cat etc/rabbitmq/rabbitmq.config 
[
   {
       rabbit,[
           {tcp_listeners,[
                   {"172.16.10.101",5673}
               ]
           }
       ]
   }
].

4、集羣

Rabbitmq集羣中的全部節點都會備份全部元數據信息,包括:運維

  1. 隊列元數據:隊列的名稱及屬性
  2. 交換器:交換器的名稱及屬性
  3. 綁定關係元數據:交換器與隊列或者交換器與交換器之間的綁定關係;
  4. vhost數據:爲vhost內的隊列、交換器和綁定提供命名空間及安全屬性。

消息不會備份:只會在單節點建立隊列幷包含完整的隊列信息(元數據、狀態和內容 )

1. 集羣搭建

  1. 配置DNS解析
cat /etc/hosts
    172.16.10.101 node1
    172.16.10.102 node2
  1. 在node2上安裝erlang和rabbitmq
      直接把node1上編譯好的拷貝到node2
ubuntu@node1:~$ scp  -r  /usr/local/erlang ubuntu@node2:~/
ubuntu@node1:~$ scp  -r  /usr/local/rabbitmq  ubuntu@node2:~/
ubuntu@node2:~$ sudo mv erlang /usr/local/
ubuntu@node2:~$ sudo mv rabbitmq  /usr/local/
  1. 配置環境變量
$ cat /etc/profile
export ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:$PATH

export RABBITMQ_HOME=/usr/local/rabbitmq
export PATH=$RABBITMQ_HOME/sbin:$PATH
  1. 拷貝node1的cookie文件到node2

編譯安裝的cookie文件在 $HOME/.erlang.cookie

ubuntu@node1:~$ scp  $HOME/.erlang.cookie ubuntu@node2:~/
  1. 啓動node2rabbitmq
ubuntu@node2:~$ rabbitmq-server -detached
ubuntu@node2:~$ rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node2
ubuntu@node2:~$ rabbitmqctl reset
Resetting node rabbit@node2
ubuntu@node2:~$ rabbitmqctl join_cluster rabbit@node1
Clustering node rabbit@node2 with rabbit@node1
ubuntu@node2:~$ rabbitmqctl start_app
Starting node rabbit@node2

2. 集羣管理

  1. 查看集羣狀態
$ rabbitmqctl cluster_status
  1. 修改集羣節點類型
# 須要現中止rabbitmq應用:rabbitmqctl stop_app
    $ rabbitmqctl change_cluster_node_type disc
  1. 將節點從集羣中刪除
$ rabbitmqctl forget_cluster_node rabbit@node2
  1. 斷電後重啓
$ rabbitmqctl force_boot

3. 隊列鏡像

rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
相關文章
相關標籤/搜索