RabbitMQ先容

打印 上一主题 下一主题

主题 969|帖子 969|积分 2907

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        RabbitMQ是一款在全球范围内使用非常广泛的开源消息队列中心件。它轻量级,易摆设,并支持多种协议。它基于erlang开发,天生拥有高并发的本领。
一.RabbitMQ干系术语


1.生产者
        生产消息的进程或服务
2.消耗者
        汲取消息的进程或服务
3.队列
        RabbitMQ是消息队列中心件,而真正存储信息数据的就是队列,队列可以有许多。
4.互换器
        雷同于网络设备互换机,它可以根据不同的关键字,将消息发送到不同的队列
5.假造主机
        假造主机雷同于Apache的假造主机,如果没有假造机,当RabbitMQ中的数据越来越巨大,队列越来越多,随之而来的是令人头痛的管理问题,比如队列,互换器命名辩论,它们相互影响等等。假造主机能解决这些问题,而不需要我们摆设多个RabbitMQ来负责不同的业务。
        假造主机提供了资源的逻辑分组和分隔,每一个假造主机本质上是mini版的RabbitMQ服务器,它们有自己的毗连,队列,绑定,互换器,更重要的是有效自己的权限机制,这有点雷同服务器好运行在服务器上的假造机一样。
二.Rabbitmq常用命令

1.假造机管理

列出所有假造机——rabbitmqctl list_vhosts
创建假造主机——rabbitmqctl add_vhost 主机名
删除假造主机——rabbitmqctl delete_vhost 主机名
2.用户管理

列出用户——rabbitmqctl list_users
创建用户——rabbitmqctl add_user 用户名 暗码
更改用户暗码——rabbitmqctl change_password 用户名 新暗码
删除用户——rabbitmqctl delete_user 用户名
扫除用户暗码——rabbitmqctl clear_password 用户名
3.tags角色先容

(1)超等管理员(administrator):guest
        可登录管理控制台(启用management plugin的环境下),可查看所有的信息,而且可以对用户,策略(policy)举行操纵。
(2)监控者(monitoring)
        可登录管理控制台(启用 managem plugin的环境下),同时可以查看rabbitmq节点的干系信息(进程数,内存使用环境,磁盘使用环境等)
(3)策略制定者(policymaker)
        可登录管理控制台(启用management plugin的环境下),同时可以对policy举行管理。但无法查看节点的干系信息。
(4)普通管理者(management)
        仅可登录管理控制台(启动management plugin的环境下),无法看到节点信息,也无法对策略举行管理。
(5)其他
        无法登录管理控制台,通常就是普通的生产者和消耗者
赋予用户角色——rabbitmqctl set_user_tags 用户名  角色
给特定假造机的用户赋权——rabbitmqctl set_permissions -p 假造主机名 用户名 权限
例如:[root@localhost ~]# rabbitmqctl set_permissions -p fll user1 '.*' '.*' '.*'
        针对fll假造主机给user1用户设置所有的配置、读写queue和exchange的权限。默认是没有任何权限的。
说明:用户权限指的是用户对exchange(互换器),queue(队列)的操纵权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操纵。例如: 将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限。
rabbitmqctl list_user_permissions <username>
#列出某用户的权限,即该用户对哪个假造主机有权限
rabbitmqctl list_permissions -p <vhostname>
#列出指定假造主机下所有效户的权限,即哪些用户对该假造主机有权限
rabbitmqctl clear_permissions -p <vhostname> <user>
#扫除某用户在指定假造机上的授权
4.插件管理

查看插件列表——rabbit-plugins list
安装插件——rabbit-plugins enable 插件名
卸载插件——rabbit-plugins disable 插件名 
5.限定

设置假造主机的最大毗连数
rabbitmqctl set_vhost_limits -p vhost_name '{"max-connections": 256}'
不允许客户端毗连假造主机 
rabbitmqctl set_vhost_limits -p vhost_name '{"max-connections": 0}'
不限定毗连数
rabbitmqctl set_vhost_limits -p vhost_name '{"max-connections": -1}'
限定假造主机里最大的队列数
abbitmqctl set_vhost_limits -p vhost_name '{"max-queues": 1024}'
不限定队列数
rabbitmqctl set_vhost_limits -p vhost_name '{"max-queues": -1}'
6.其他

列出所有的互换器
rabbitmqctl list_exchanges
列出所有的绑定,即把exchange和queue按照路由规则绑定起来
rabbitmqctl list_bindings
分别查看当前系统种存在的Exchange和Exchange上绑定的Queue信息。
rabbitmqctl list_queues
查看运行信息
rabbitmqctl status
三.RabbitMQ集群

        RabbitMQ本身是基于Erlang编写的,Erlang天生支持分布式(通过同步Erlang集群各节点的cookie来实现),因此不需要像Kafka那样通过ZooKeeper来实现分布式集群。
1.元数据

        RabbitMQ内部有各种底子构件,包括队列、互换器、绑定、假造主机等,他们组成了AMQP协议消息通讯的底子,而这些构件以元数据的情势存在
2.内存节点与磁盘节点

         在集群中的每个节点,要么是内存节点,要么是磁盘节点,如果是内存节点,会将所有的元数据信息仅存储到内存中,而磁盘节点则不但会将所有元数据存储到内存上, 还会将其持久化到磁盘。所以在搭建集群的时候,为了保证数据的安全性和性能,最好是两种节点都要有
四.摆设RabbitMQ集群

1.规划 

主机名

Ip

节点类型

centos01

192.168.10.101

磁盘节点

Centos02

192.168.10.102

内存节点

Centos03

192.168.10.103

内存节点

 2.底子环境及配置

(1)修改三台主机的主机名
  1. hostnamectl set-hostname mq01
  2. hostnamectl set-hostname mq02
  3. hostnamectl set-hostname mq03
复制代码
(2)编辑三台机器的hosts文件
  1. 192.168.10.101        mq01
  2. 192.168.10.102        mq02
  3. 192.168.10.103        mq03
复制代码
(3)关闭防火墙和selinux
  1. setenforce 0
  2. systemctl stop firewalld
  3. systemctl disable firewalld
复制代码
(4)安装erlang
        因为RabbitMQ服务器是用erlang语言编写的,linux自身的yum仓库中并没有erlang,所以要引入外部仓库,这里以阿里仓库为例:
  1. rm -rf /etc/yum.repos.d/*
  2. curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  3. curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
  4. yum clean all
复制代码
        仓库引入完成后,就可以用yum命令下载erlang和rabbitmq-server了
  1. yum install -y erlang        rabbirmq-server
复制代码
        安装完成后就可以启动这三台机器了
  1. [root@localhost ~]# systemctl start rabbitmq-server        
  2. [root@localhost ~]# systemctl enable rabbitmq-server        
  3. [root@localhost ~]# ps aux |grep rabbit                                        ## 查看rabbit进程
  4. [root@localhost ~]# netstat -lntp                                                ## 查看监听端口
复制代码
(5)为三台机器安装management插件
  1. rabbitmq-plugins enable rabbitmq-management
复制代码
        插件安装完成后要重启服务,RabbitMQ 需要重新加载配置并加载新安装的插件。 
(6)同步Cookie
在mq01大将mq01的cookie文件同步到mq02和mq03;然后重启三台主机
  1. scp /var/lib/rabbitmq/.erlang.cookie root@mq02:/var/lib/rabbitmq/
  2. scp /var/lib/rabbitmq/.erlang.cookie root@mq03:/var/lib/rabbitmq/
复制代码
在RabbitMQ集群中,.erlang.cookie文件黑白常重要的,它包罗了用于节点之间认证和通讯的加密密钥。当你将 .erlang.cookie 文件从 mq01 同步到 mq02 和 mq03 后,这些节点必须重新启动,以确保它们能够使用新的 .erlang.cookie 文件举行正确的认证和通讯。具体缘故原由包括:

  • 认证和安全性: RabbitMQ 使用 .erlang.cookie 文件来验证节点之间的身份。如果节点间的 .erlang.cookie 文件不同等,节点可能会拒绝相互的毗连或通讯。重新启动节点可以确保它们加载新的 .erlang.cookie 文件,避免这种问题。
  • 状态和毗连问题: 在RabbitMQ集群中,节点之间的毗连和状态是基于安全认证的。如果 .erlang.cookie 文件不同等,节点可能无法正确建立毗连或保持集群状态的同等性。重新启动节点有助于确保它们在同步后能够重新建立正确的毗连和状态。
  • 应用配置和重启策略: 在大多数环境下,RabbitMQ 要求在更改关键配置(如 .erlang.cookie 文件)后重新启动节点。这种重启策略确保了配置的变更能够正确应用到运行时环境中。
(8)分配节点 
 centos01为磁盘节点,centos02和centos03为内存节点
 centos02和centos03上都执行:
        制止rabbitmq
  1. [root@localhost ~]# rabbitmqctl stop_app  
复制代码
备注:表示制止RabbitMQ的应用,但是Erlang节点还在运行。在管理RabbitMQ应用时需要制止rabbitmq,但是又要使用erlang对rabbitmq举行管理。
        将centos02作为内存节点毗连到centos01
  1. [root@localhost ~]# rabbitmqctl join_cluster --ram rabbit@mq01
复制代码
        开启rabbitmq
  1. [root@localhost ~]# rabbitmqctl start_app
复制代码
        查看集群状态
  1. [root@localhost ~]# rabbitmqctl cluster_status
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表