RabbitMQ日常維護管理操作


目錄

1. RabbitMQ之激活Web管理插件
2. RabbitMQ之添加用戶並設置密碼、修改密碼
3. RabbitMQ之添加集群節點
4. RabbitMQ之剔除節點
5. RabbitMQ之集群節點類型切換
6. RabbitMQ之單機多節點配置


1. RabbitMQ之激活Web管理插件

0x01 激活Web管理插件

# rabbitmq-plugins enable rabbitmq_management

查看Web插件啟用的端口

# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      2473/beam.smp   
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      2570/epmd       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      802/sshd        
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      2473/beam.smp   
tcp6       0      0 :::5672                 :::*                    LISTEN      2473/beam.smp   
tcp6       0      0 :::4369                 :::*                    LISTEN      2570/epmd       
tcp6       0      0 :::22
  • 4369 – erlang發現口
  • 5672 –client端通信口
  • 15672 – 管理界面ui端口
  • 25672 – server間內部通信口

瀏覽器訪問 ip:15672 默認登入帳號密碼:guest/guest

0x02 問題解決

guest用戶訪問時,出現如下問題:

HTTP access denied: user 'guest' - User can only log in via localhost。

解決方法:

rabbitmq從3.3.0開始禁止使用guest/guest權限通過除localhost外的訪問。

如果想使用guest/guest通過遠程機器訪問,需要在rabbitmq配置文件中(/etc/rabbitmq/rabbitmq.config)中設置loopback_users為[]。
/etc/rabbitmq/rabbitmq.config文件完整內容如下(注意后面的半角句號),且默認/etc/rabbitmq/rabbitmq.config配置文件沒有,需手動創建:

# tee /etc/rabbitmq/rabbitmq.config <<EOF
[{rabbit, [{loopback_users, []}]}].
EOF

2. RabbitMQ之添加用戶並設置密碼、修改密碼

0x01 添加用戶並設置密碼、修改密碼

# rabbitmqctl add_user admin test

0x02 修改修用戶密碼

# rabbitmqctl change_password admin admina

0x03 清除用戶密碼

# rabbitmqctl clean_passwd admin

0x04 刪除用戶

# rabbitmqctl delete_user admin

0x05 查看用戶

# rabbitmqctl list_users
Listing users ...
user    tags
admin   []
guest   [administrator]

0x06 設置admin 用戶為管理員

# rabbitmqctl set_user_tags admin administrator

0x07 為 root 用戶設置所有所有權限

# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

3. RabbitMQ之添加集群節點

0x01 添加集群節點(在待添加節點機器上執行)

# rabbitmqctl stop_app

# 若需要更換主節點,需先重置master和node
# rabbitmqctl reset

# rabbitmqctl join_cluster rabbit@rbtmq_node1
Clustering node rabbit@rbtmq_master with rabbit@rbtmq_node1

# rabbitmqctl start_app

# rabbitmqctl cluster_status
Cluster status of node rabbit@rbtmq_master ...
[{nodes,[{disc,[rabbit@rbtmq_master,rabbit@rbtmq_node1]}]},
 {running_nodes,[rabbit@rbtmq_node1,rabbit@rbtmq_master]},
 {cluster_name,<<"rabbit@rbtmq_master">>},
 {partitions,[]},
 {alarms,[{rabbit@rbtmq_node1,[]},{rabbit@rbtmq_master,[]}]}]

集群加入節點時可以指定節點類型,RabbitMQ有兩種節點類型:內存類型(ram)和磁盤類型(disc)。若要在節點加入集群時,直接指定節點類型,可輸入如下命令:

# rabbitmqctl join_cluster rabbit@rbtmq_node1 --ram

4. RabbitMQ之剔除節點

0x01 方法一:待剔除節點離線后剔除

  1. 先停止待剔除節點的 RabbitMQ 服務 (待剔除節點上運行)
# rabbitmqctl stop_app
  1. 清除節點狀態(待剔除節點上運行)
# rabbitmqctl reset

0x02 方法二:待剔除節點在線剔除

  1. 在主節點上剔除待剔除節點 (主節點上運行)
# rabbitmqctl forget_cluster_node rabbit@node1

5. RabbitMQ之集群節點類型切換

# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rbtmq_node1 ...

# rabbitmqctl change_cluster_node_type ram
Turning rabbit@rbtmq_node1 into a ram node

# rabbitmqctl start_app
Starting node rabbit@rbtmq_node1 ...
 completed with 3 plugins.

# rabbitmqctl cluster_status
Cluster status of node rabbit@rbtmq_node1 ...
[{nodes,[{disc,[rabbit@rbtmq_master]},{ram,[rabbit@rbtmq_node1]}]},
 {running_nodes,[rabbit@rbtmq_master,rabbit@rbtmq_node1]},
 {cluster_name,<<"rabbit@rbtmq_master">>},
 {partitions,[]},
 {alarms,[{rabbit@rbtmq_master,[]},{rabbit@rbtmq_node1,[]}]}]

6. rabbitmq之單機多節點配置

在一台機器上部署多個 RabbitMQ 服務節點,需要確保每個節點都有獨立的名稱、數據存儲位置、端口號(包括插件的端口號)等。我們在主機名稱為 node1 的機器上創建一個由 rabbit1@node1、rabbit2@node1 和 rabbit3@node1 這三個節點組成 RabbitMQ 集群。

# RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port, 15672}]" rabbitmq-server -detached

# RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit2 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port, 15673}]" rabbitmq-server -detached

# RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit3 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port, 15674}]" rabbitmq-server -detached
# 停止 rabbit2 的 Erlang 虛擬機
# rabbitmqctl -n rabbit2@rbtmq_node2 stop_app

# 重置 rabbit2
# rabbitmqctl -n rabbit2@rbtmq_node2 reset

# rabbit2 加入 rabbit1集群
# rabbitmqctl -n rabbit2@rbtmq_node2 join_cluster rabbit1@rbtmq_node2

# 啟動 rabbit2 的 Erlang 虛擬機
# rabbitmqctl -n rabbit2@rbtmq_node2 start_app

# 查看集群狀態
# rabbitmqctl -n rabbit1@rbtmq_node2 cluster_status
Cluster status of node rabbit1@rbtmq_node2 ...
[{nodes,[{disc,[rabbit1@rbtmq_node2,rabbit2@rbtmq_node2]}]},
 {running_nodes,[rabbit1@rbtmq_node2]},
 {cluster_name,<<"rabbit1@rbtmq_node2">>},
 {partitions,[]},
 {alarms,[{rabbit1@rbtmq_node2,[]}]}]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM