码迷,mamicode.com
首页 > 其他好文 > 详细

RabbitMQ集群简介

时间:2018-01-21 20:38:40      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:分享图片   hosts   img   数据   ram   关闭   failure   允许   主机名   

一个RabbitMQ消息代理是一个由一个或多个Erlang节点组成的逻辑组,其中的每个节点都共享users, virtual hosts, queues, exchanges, bindings, and runtime parameters。我们把这些相关节点组成的集合作为一个cluster(集群)。

What is Replicated?

所有数据需要在集群中的所有节点被复制。默认情况下,数据同一个数据只存在于其中一个节点上。为了在集群的节点之间复制数据,请高可用。

Hostname Resolution Requirements

RabbitMQ节点之间用域名名称,可以是简单的域名名称也可以用全限定的。因此,集群中的所有成员的hostnames(主机名)必须能够被解析。

技术分享图片

Cluster Formation

创建集群的方式有很多种:

  • 在配置文件中声明
  • 基于DNS发现
  • 各种插件
  • 通过rabbitmqctl手动创建

所有的RabbitMQ消息代理在启动以后都是作为单个结点运行的。这些结点可以被加到集群中

Failure Handling

RabbitMQ运行个别节点失败。必要的话,结点可以被启动和停止。

推荐运行在LAN(局域网)中

Disk and RAM Nodes

A node can be a disk node or a RAM node

90%的情况下你需要的的是disk node;而RAM node是为了提升集群的性能而使用的一种特殊情况。

由于RAM node只在内存中存储其内部数据库,因此它启动的时候必须从一个对等的节点那里同步这些信息,这也就意味着一个集群中至少要包含一个disk node。

结点之间如何相互认证:the Erlang Cookie

RabbitMQ结点用cookie来决定是否它们之间允许互相通信。两个结点之间要想相互通信,它们必须拥有相同的secret,这个secret被称为Erlang Cookie。这个cookie仅仅只是一个字符串,通常它被存储在本例文件中,这个文件只能被其所有者访问。集群中的每个结点必须有相同的cookie。如果这个文件不存在,那么当RabbitMQ服务器启动的时候Erlang VM将自动创建一个文件,其值是随机生成的。

Connecting to Clusters from Clients

一个客户端可以正常连接到集群中的任意结点。如果那个结点失败的话,集群中的剩余结点仍然可以提供服务,当然客户端应该也注意到连接以及关闭,并且能够重新连接到集群中的其它成员。一般而言,不建议将结点的主机名或者IP地址引入到应用程序中,因为这样会导致程序不够灵活,并且万一集群的结点配置变了的话应用程序也必须随之修改。代替的,推荐用一种更加抽象的方式:这种方式可能是一个动态的DNS服务。

 

参考  http://www.rabbitmq.com/clustering.html

 

RabbitMQ集群简介

标签:分享图片   hosts   img   数据   ram   关闭   failure   允许   主机名   

原文地址:https://www.cnblogs.com/cjsblog/p/8325182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!