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,[]}]}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值