RabbitMQ集群

本文介绍了RabbitMQ集群的搭建过程,强调了集群对于可靠性和性能的重要性。队列元数据只存在于一个节点,其他元数据分布于所有节点。确保集群正常运行,至少需要一个磁盘节点。集群间通信依赖于erlang-cookie的一致性。文章还提到了镜像队列的概念,用于提高高可用性,并给出了创建镜像队列的参数设置。
摘要由CSDN通过智能技术生成

RabbitMQ消息队列的作为一个消息通知的系统,对于可靠性和性能是非常关键,所以集群也是提升可靠性和性能的一种手段。但是我这里只是会写上基础的RabbitMQ的集群搭建,其实也就是方便我以后能够把命令记回来而已。当然我也会尝试在官网上获得一些关于RabbitMQ集群的官方信息在这里贴出 方便我回忆。

RabbitMQ内部元数据:

  • 队列元数据 : 队列名称和他们的属性信息。
  • 交换器元数据 : 交换器名称 和 交换器类型、属性。
  • 绑定元数据 : 一张简单的表格展示了如何将消息路由到队列。
  • vhost元数据: 为vhost内部队列、交换器和绑定提供命名空间和安全熟悉。

以上的数据除了队列元数据,其他数据均存在所有的节点当中,同时必须至少有一个磁盘节点,其余都可以是内存节点。也就是说磁盘节点是存储着以上的数据在磁盘当中,这些会影响消息的路由,所以当磁盘节点挂了之后,虽然不会影响消息路由但是你已经不能创建队列、创建交换器、添加用户、添加绑定、更改用户权限甚至不能添加或者删除群集节点。所以一般保险起见我们都会选择创建两个磁盘节点从而达到高可用的要求。

但是什么队列不是存在每一个节点当中呢?因为队列的消息也非常频繁的,所以每次你发消息需要分发到这么多个节点当中,这个对性能上有比较大的损耗,所以一般情况下,队列只会存在第一个节点当中,但是整个RabbitMQ cluster都可以访问这个队列,因为路由的信息是存在所有的节点当中,每个节点也晓得如何去获得节点的队列的。当然也队列也可以存在多个节点当中,这种叫做镜像队列。对了如果可能你会问如果队列存在单独的节点当中,如果那个节点挂了怎么办,能怎么办那就挂了呗,那就创建一个新的队列,如果那个队列是一个持久队列,你将不能在其他节点中创建相同的队列,因为每个节点都知道那个节点是持久的节点,需要等待那个节点起来了才能正常使用。所以才有镜像队列这一东西,镜像队列可以有效的解决这个问题,但是镜像队列也不是那么好搞蒂·····

别废话上命令上代码,来点有营养的。

怎么才能链接多台服务器呢,erlang是通过一个叫做erlang-cookie的东西来做认证的,文件里是一堆字符串,所有的节点服务器必须erlang一致才能连接,这个是关于这个erlang-cookie的精简版 详细版我贴出官网的。

RabbitMQ nodes and CLI tools (e.g. rabbitmqctl) use a cookie to determine whether they are allowed to communicate with each other. For two nodes to be able to communicate they must have the same shared secret called the Erlang cookie. The cookie is just a string of alphanumeric characters. It can be as long or short as you like. Every cluster node must have the same cookie.

Erlang VM will automatically create a random cookie file when the RabbitMQ server starts up. The easiest way to proceed is to allow one node to create the file, and then copy it to all the other nodes in the cluster.

On Unix systems, the cookie will be typically located in /var/lib/rabbitmq/.erlang.cookie or $HOME/.erlang.cookie.

On Windows, the locations are C:\Users\Current User.erlang.cookie (%HOMEDRIVE% + %HOMEPATH%.erlang.cookie) or C:\Documents and Settings\Current User.erlang.cookie, and C:\Windows.erlang.cookie for RabbitMQ Windows service. If Windows service is used, the cookie should be placed in both places.

As an alternative, you can insert the option “-setcookie cookie” in the erl call in the rabbitmq-server and rabbitmqctl scripts.

When the cookie is misconfigured (for example, not identical), RabbitMQ will log errors such as “Connection attempt from disallowed no

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值