RabbitMQ的内存节点和磁盘节点说明
在RabbitMQ集群中有内存节点和磁盘节点之分
内存节点(ram):就是将元数据都放在内存里,内存节点的话,只要服务重启,该节点的所有数据将会丢失
硬盘节点(disc):就是将元数据都放在硬盘里,所以服务重启的话,数据也还是会存在的
在RabbitMQ集群里,至少有一个磁盘节点,它用来持久保存我们的元数据,如果RabbitMQ是单节点运行,则默认就是磁盘节点。但是为了提高性能,其实不需要所有节点都是disc的节点,根据需求分配即可
如果RabbitMQ集群只有一个磁盘节点,然后磁盘节点挂了,会发生什么?
可以正常的投递消息和消费消息,但是不能做以下事:
create queues 创建队列 create exchanges 创建交换器 create bindings 创建绑定关系 add users 创建用户 change permissions 修改用户权限 add or remove cluster nodes 新增或移除RabbitMQ集群节点
所以,考虑到高可用性,推荐在集群里保持2个磁盘节点,这样一个挂了,另一个还可正常工作。但上述最后一点,往集群里增加或删除节点,要求2个磁盘节点同时在线
#加入集群时设置节点为内存节点 rabbitmqctl join_cluster --ram rabbit@rabbit-node1 #通过命令修改节点的类型 rabbitmqctl changeclusternode_type disc | ram