ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

rabbitmq的内存节点和磁盘节点

2021-09-28 10:34:03  阅读:157  来源: 互联网

标签:rabbitmq rabbitmqctl 集群 内存 && 磁盘 节点


RabbitMQ集群里有内存节点与磁盘节点之分。

所谓内存节点,就是将元数据(metadata)都放在内存里,磁盘节点就是放在磁盘上。(内存节点将全部的队列,交换器,绑定关系,用户,权限,和vhost的元数据信息保存在内存中。)

如果RabbitMQ是单节点运行,默认就是磁盘节点。

在RabbitMQ集群里,至少有一个磁盘节点,它用来持久保存元数据。
新的节点加入集群后,会从磁盘节点上拷贝数据。但是,集群里也不必要每个节点都是磁盘节点,这主要是性能问题。例如,压力大的RPC服务,每秒都要创建和销毁数百个队列,如果集群里都是磁盘节点,意味着队列定义在每个节点上,都要写入磁盘才算成功,这样就会非常慢。

如果集群里只有一个磁盘节点,这个节点挂了,会发生什么?此时消息路由机制仍可正常进行(可以正常投递和消费消息),但是不能做如下事:

  • create queues
  • create exchanges
  • create bindings
  • add users
  • change permissions
  • add or remove cluster nodes

所以,考虑到高可用性,推荐在集群里保持2个磁盘节点,这样一个挂了,另一个还可正常工作。但上述最后一点,往集群里增加或删除节点,要求2个磁盘节点同时在线。

创建内存节点

基于这篇文章来进行:https://www.cnblogs.com/sanduzxcvbnm/p/13912980.html

绑定集群

重置myrabbit1节点
$ docker exec -it myrabbit1 /bin/bash
$ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl start_app

加入myrabbit2节点到集群中
$ docker exec -it myrabbit2 /bin/bash
$ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbit@rabbit1 && rabbitmqctl start_app

    加入myrabbit3节点到集群中

$ docker exec -it myrabbit3 /bin/bash
$ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbit@rabbit1 && rabbitmqctl start_app
主要参数:
--ram 表示设置为内存节点,忽略此参数默认为磁盘节点

标签:rabbitmq,rabbitmqctl,集群,内存,&&,磁盘,节点
来源: https://www.cnblogs.com/sanduzxcvbnm/p/15346710.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有