首页 > 其他 > 详细

RabbitMQ——常用命令

时间:2021-02-24 23:17:22      阅读:53      评论:0      收藏:0      [点我收藏+]

 

节点管理

  • 启动节点
systemctl start rabbitmq-server
  • 停止节点
systemctl stop rabbitmq-server
  • 重启节点
systemctl restart rabbitmq-server
  • 修改节点类型
rabbitmqctl stop_app

rabbitmqctl change_cluster_node_type dist   --磁盘节点
或
rabbitmqctl change_cluster_node_type ram    --内存节点

rabbitmqctl start_app
  • 查看节点状态
rabbitmqctl status
  •  清除节点原数据
rabbitmqctl reset

 

集群管理

  • 加入集群
#机器B 加入rabbit@master节点
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@master
rabbitmqctl start_app

#机器C 加入rabbit@master节点
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@master
rabbitmqctl start_app

注:此处要加入至的 rabbit@master 节点,不需要执行 rabbitmqctl stop_app 命令。

  • 停止rabbitmq应用
rabbitmqctl stop_app
  • 启动rabbitmq应用
rabbitmqctl start_app
  • 查看集群状态
rabbitmqctl cluster_status
  • 从集群中移除节点
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
或者
rabbitmqctl forget_cluster_node rabbit@rabbit-1 #支持远程删除节点(在处理无响应节点时,这个很有用)
  • 集群重启顺序
集群重启的顺序是固定的,并且是相反的。 如下所述:

启动顺序:磁盘节点 => 内存节点

关闭顺序:内存节点 => 磁盘节点

最后关闭必须是磁盘节点,不然可能回造成集群启动失败、数据丢失等异常情况。

没有一个直接的命令可以关闭整个集群,需要逐一进行关闭。但是需要保证在重启时,最后关闭的节点最先被启动。

如果第一个启动的不是最后关闭的节点,那么这个节点会等待最后关闭的那个节点启动,默认进行 10 次连接尝试,超时时间为 30 秒,如果依然没有等到,则该节点启动失败。

节点在停止和重新启动时经历的过程:

停止节点选择一个集群成员(将仅考虑磁盘节点)以在重新启动后与之同步。重新启动后,默认情况下,该节点将尝试与集群对方联系10次,每次响应超时为30秒。
如果对端在该时间间隔内可用,则该节点将成功启动,同步对端的信息并继续运行。如果对等方不可用,则重新启动的节点将放弃并自愿停止。

当节点在关闭过程中没有集群节点在线时,它将在不尝试与任何已知对端同步的情况下启动。它将等待对端重新加入它。

因此,当整个群集关闭时,最后一个关闭的节点是在关闭时唯一没有任何正在运行的对等节点的节点。该节点可以启动而无需先联系任何对等节点。
由于节点将尝试与已知对等方联系最多5分钟(默认情况下),因此可以在该时间段内以任何顺序重新启动节点。在这种情况下,他们将成功地彼此重新加入。

可以使用两种配置设置来调整此时间窗口:

# wait for 60 seconds instead of 30
mnesia_table_loading_retry_timeout = 60000

# retry 15 times instead of 10
mnesia_table_loading_retry_limit = 15

  通过调整这些设置并调整必须返回已知对等方的时间窗口,可以解决可能需要超过5分钟才能完成的群集范围内的重新部署方案。                                                                                                                          升级期间,有时最后一个要停止的节点必须是升级后要启动的第一个节点。该节点将被指定执行集群范围的架构迁移,其他节点可以在它们重新加入时从中进行同步并应用。

  在某些情况下,无法恢复最后一个脱机节点。您可以使用forget_cluster_node

  另外,可以在节点上使用force_boot rabbitmqctl命令使其引导,而无需尝试与任何对等节点同步(就像它们最后一次关闭一样)。仅当最后一个要关闭的节点或一组节点永远不会重新联机时,才通常需要这样做。

 

用户管理

  • 创建虚拟主机(vhost)
rabbitmqctl add_vhost zat

RabbitMQ 通过虚拟主机(vhost)来分发消息。拥有自己独立的权限控制,不同的vhost之间是隔离的,单独的。

  • 创建用户并授权
rabbitmqctl add_user 用户名 密码
  • 设置为管理员
rabbitmqctl set_user_tags 用户名 administrator
  • 授权远程访问权限
rabbitmqctl set_permissions -p zat 用户名 ".*" ".*" ".*"
  • 修改用户密码
rabbitmqctl change_password 用户名 密码
  •  删除来宾用户
rabbitmqctl delete_user guest
  • 查看用户
rabbitmqctl list_users
  • 查看用户权限
rabbitmqctl list_user_permissions username

 

镜像队列

  • 设置策略
rabbitmqctl set_policy -p zat ha-allqueue "^" {"ha-mode":"all"}

命令說明:针对指定vhost(zat)下的queue进行设置为镜像队列,即队列会被复制到集群各个节点,各个集群节点交换机、队列、队列内容都保持一致。

  • 同步队列
rabbitmqctl sync_queue {queue_name}

注:前提是镜像队列,队列中的数据将会在整个集群的相应节点(取决于设置的策略)上复制存储。

  • 取消队列的同步属性
rabbitmqctl cancel_sync_queue {queue_name}

 

其它

  • 启用管理台插件
rabbitmq-plugins enable rabbitmq_management
  • 数据目录
/var/lib/rabbitmq/mensia/rabbit@localhost

 

RabbitMQ——常用命令

原文:https://www.cnblogs.com/caoweixiong/p/14371114.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!