RabbitMQ管理与集群

RabbitMQ管理与集群

Vhost虚拟机

创建vhost:rabbitmqctl add_vhost {vhost}
所有vhost:rabbitmqctl list_vhosts [vhostinfoitem…]
删除vhost:rabbitmqctl delete_vhost {vhost}

权限

授权权限:rabbitmqctl set_permissions [-p vhost] {user}{conf}{write}{read}
vhost:授权用户访问指定的vhost
user:可以访问指定vhost的用户名
conf:一个用于匹配用户在哪些资源上拥有可配置权限的正则表达式
write:一个用于匹配用户在哪些资源上拥有可写权限的正则表达式
read:一个用于匹配用户在哪些资源上拥有可读权限的正则表达式
收回权限:rabbitmqctl clear_permissions [-p vhost] {username}
虚拟主机权限列表:rabbitmqctl list_permissions [-p vhost]
用户权限列表:rabbitmqctl list_user_permissions {username}

用户管理

创建用户:rabbitmqctl add_user {username} {password}
修改密码:rabbitmqctl change_password {username} {password}
清除密码:rabbitmqctl clear_password {username}
验证用户:rabbitmqctl authenticate_user {username} {password}
删除用户:rabbitmqctl delete_user {username}
用户列表:rabbitmqctl list_users
角色分配:rabbitmqctl set_user_tags {username} {tag…}
角色分5种类型:

  1. none:无任何角色,新创建的用户默认角色为none
  2. management:可以访问web管理页面
  3. policymaker:包含management的所有权限,并可以管理策略(Policy)和参数(Parameter)
  4. monitoring:包含management的所有权限,并可以看到所有连接、信道及节点相关信息
  5. administartor:包含minitoring的所有权限,并可以管理用户、虚拟主机、权限、策略、参数等

Web管理端

  1. 启动:
    rabbitmq-server -detached
    service rabbitmq-server start
  2. 停止:
    rabbitmqctl stop
    service rabbitmq-server stop
  3. 查看状态:
    rabbitmqctl status
    service rabbitmq-server status

服务端状态管理

查看队列列表

rabbitmqctl list_queues[-p vhost][queueinfoitem…]
name:队列名称
durable:队列会否持久化
auto_delete:队列是否自动删除
arguments:队列参数
policy:应用到队列上的策略名称
pid:队列关联的Erlang进程ID
owner_pid:处理排他队列连接的进程ID
exclusive:队列是否排他

查看交换器列表

rabbitmqctl list_exchanges [-p vhost][exchangeinfoitem…]
name:交换器名称
type:交换器类型
durable:交换器是否持久化
auto_delete:交换器是否自动删除
internal:是否是内置交换器
arguments:交换器的参数
policy:交换器的策略

查看绑定关系列表

rabbitmqctl list_bindings [-p] [bindinginfoitem…]
source_name:绑定中消息来源的名称
source_kind:绑定中消息来源的类别
destination_name:绑定中消息目的地的名称
destination_kind:绑定种消息目的地的种类
routing_key:绑定的路由键
argumenets:绑定的参数

查看连接信息列表

rabbitmqctl list_connections [connectioninfoitem …]
pid:与连接相关的进程ID
name:连接名称
port:服务器端口
host:服务器主机名
peer_port:服务器对端端口。当一个客户端与服务器连接时,这个客户端的端口就是peer_port
peer_host:服务器对端主机名称,或IP,或未启用
ssl:是否启用SSL
state:连接状态,包括starting\tuning\opening\running\flow\blocking\blocked\closing\closed
channels:连接中的信道个数
protocol:使用的AMQP协议版本
user:与连接相关的用户名
vhost:与连接相关的vhost名称
timeout:连接超时/协商的心跳间隔,单位s

查看信道列表

rabbitmqctl list_channels [channelinfoitem…]
pid:与连接相关的进程ID
connection:信道所属连接的进程ID
name:信道名称
number:信道的序号
user:与连接相关的用户名
vhost:与连接相关的vhost名称
transactional:信道是否处于事务模式
confirm:信道是否处于 publisher confirm模式
consumer_count:信道中的消费者个数
messages_unacknowledged:已投递但是还未被ack的消息个数
messages_uncommitted:已接收但是还未提交事务的消息个数
acks_uncommitted:已ack收到但是还未提交事务的消息个数
messages_unconfirmed:已发送但是还未确认的消息个数
perfetch_count:新消费者的Qos个数限制,0表示无上限
global_prefetch_count:整个信道的Qos个数限制

查看消费者列表

rabbitmqctl list_consumers [-p vhost]
vhost:与连接相关的vhost名称

Http API接口管理

描述整个系统的各种信息:/api/overview;
集群的名称:/api/cluster-name;
集群中节点的信息:/api/nodes;
所有的连接信息:/api/connections;
所有信道的信息:/api/channels;
所有的消费者信息:/api/consumers;
所有交换器信息:/api/exchanges;
列出所有的队列信息:/api/queues;
列出所有绑定关系的信息:/api/bindings;
列出所有vhost的信息:/api/vhosts;
列出所有的用户信息:/api/usres;

RabbitMQ集群

集群那些事儿

为什么需要集群?

使客户端在节点崩溃的情况下依然可以运行,避免单节点故障,提高可用性;
线性扩展也可以提高吞吐量。

有了集群就可以保证消息万无一失吗?

当某个节点崩溃时,节点上所有队列的消息都会丢失。默认情况不会将队列的消息在集群中进行复制存储。

队列在集群中是如何存在的?

队列默认不会在集群中复制,其他节点只会保存队列所处的节点和元数据,消息传递给队列的所有者节点。

交换器在集群中是如何存在的?

交换器会进行复制,因为交换器本质上是一个类似于HashMap的映射表,并不需要存储数据。

集群中节点有什么要求?

集群中的节点分为内存节点磁盘节点两种,RabbitMQ要求集群中至少存在一个磁盘节点。
内存节点是为了保证MQ的性能,但如果将所有的消息、队列、交换器、绑定关系、用户、权限等都保存在内存中,则可能在服务重启的清下丢失这些重要配置,以及消息。

集群配置

  1. 设置hosts
    vi /etc/hosts
  2. 设置RabbitMQ的Cookie,集群内节点的cookie值要求相同
    vi /var/lib/rabbitmq/.erlang.cookie
  3. 配置集群
    ①启动节点;
    ② 以一个节点为基准,将其他节点加入到基准节点的集群中:
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster rabbit@node1 --ram
    rabbitmqctl start_app
    ③ 查看集群状态:rabbitmqctl cluster_status
    ④ RabbitMQ节点数据文件存放目录:/var/lib/rabbitmq/mnesia/

集群管理

#将节点加入指定集群中
rabbitmqctl join_cluster {cluster_node} [–ram]
#显示集群的状态
rabbitmqctl cluster_status
#修改集群节点类型
rabbitmqctl change_cluster_node_type {disc|ram}
#将节点从集群中删除
rabbitmqctl forget_cluster_node rabbit@node2
#设置集群名称
rabbitmqctl set_cluster_name {name}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值