RabbitMQ集群配置文件概述
1. 前言
Hello,大家好。通过之前两个小节的学习,我们已经对 RabbitMQ 中的四大集群模式有了一个基础的了解,包括集群模式的概念,以及基本的使用或部署流程等内容。但是,对于 RabbitMQ 集群来说,我们只了解了这些基础内容显然是不够的,还需要我们来进一步了解集群的配置文件。
在本小节中,我们会对 RabbitMQ 集群配置文件中的一些基础的集群配置属性,以及配置 RabbitMQ 集群需要用到的一些基础命令做一些基础性的介绍,同学们现阶段只需要了解这些基础的集群配置文件中的属性即可。
本节主要内容:
- RabbitMQ 基础集群属性概述;
- RabbitMQ 集群基础命令概述。
2. RabbitMQ 基础集群属性概述
2.1 RabbitMQ 配置文件
通过上述两个小节的学习,我们都知道了,在 RabbitMQ 中存在着四种主流的集群模式,我们可以根据不同的业务场景去设置以及使用不同的集群模式,这完全取决于我们自己。
对于不同地 RabbitMQ 集群搭建模式来说,RabbitMQ 官网为我们提供了不同地集群配置文件,这些集群配置文件可以帮助我们更好地来对具体的集群场景进行搭建和控制,但是这些特定的集群文件中的配置属性对我们同学来说有点太过陌生了,所以,本节不会对这些特定的集群配置文件中的集群配置属性进行介绍,有兴趣的同学课下可以自行查阅资料了解。
在本套课程中,我们使用的 RabbitMQ 为 3.8.X 版本,在这一系列版本中,在我们安装好 RabbitMQ 之后,RabbitMQ 并不会自带一个 RabbitMQ 的配置文件,需要我们手动进行创建并声明,我们可以前往 RabbitMQ 的 Github 中去获取名为 rabbitmq.conf.example 的配置文件。
在获取到名为 rabbitmq.conf.example 的配置文件之后,我们需要去除 .example 后缀,使文件名为 rabbitmq.conf ,这个文件就是我们真正地 RabbitMQ 的配置文件了。
而无论我们配置四种集群搭建模式中的哪一种集群搭建方式,我们都会对 rabbitmq.conf 文件进行配置,只有对rabbitmq.conf 文件配置好之后,我们最后才会对特定的集群配置文件进行配置,这个顺序不要搞反了。
rabbitmq.conf 配置文件中不仅仅只有对 RabbitMQ 集群搭建模式的配置属性,还有一些对 RabbitMQ 的基础内容进行配置的一些配置属性,总之,rabbitmq.conf 配置文件基本上涵盖了在 RabbitMQ 中所有你可以看到的配置内容,所以这个配置文件会很长,基本上我们要想对 RabbitMQ 进行一些配置,就必须要用到这个文件。
下面就让我们来看一下在 rabbitmq.conf 配置文件中都有哪些基础的集群配置属性吧。
2.2 RabbitMQ 集群基础配置属性
在 rabbitmq.conf 配置文件中,集群的配置属性所在的位置并不是固定的一块区域,而是分散开的,同学们可以直接在 rabbitmq.conf 配置文件中通过配置属性关键词来进行搜索。
listeners.tcp.default 属性
该属性属于 listeners 系列参数下,主要作用就是设置不同 RabbitMQ 节点的默认服务端口,通过 tcp.default 的形式来声明,此属性的默认值为 5672 ,即集群节点的默认服务端口是 5672 端口。
cluster_name 属性
该属性属于 cluster 系列参数下,主要作用就是设置不同 RabbitMQ 节点的节点名称,该属性的默认值是 RabbitMQ 自动生成的,但是在不同的 RabbitMQ 版本中,该属性也会出现空值的现象,这也是正常的一种现象,如果需要配置集群的时候,我们再专门去指定就好了。
cluster_keepalive_interval 属性
该属性属于 cluster 系列参数下,主要作用就是通过集成 KeepAlive 组件,来对不同 RabbitMQ 节点间的一个检测时间进行约束,即检测不同 RabbitMQ 节点间是否正常通信的间隔时间,该属性的默认值为 10000 毫秒,我们可以根据实际情况进行制定。
disk_free_limit 属性
该属性属于 disk 系列参数下,其主要作用就是设置不同的 RabbitMQ 节点的硬盘最低存储阈值,若我们的硬盘容量小于这一阈值,则该节点的 RabbitMQ Server 就不会再存储消息了,该属性的默认值为硬盘总量的 10% 。
vm_memory_high_watermark 属性
该属性属于 vm_memory 系列参数下,其主要作用就是设置不同的 RabbitMQ 节点所在服务器的内存的一个最低存储阈值,若该节点所在服务器的内存小于这一阈值,则该节点的 RabbitMQ Server 会自动开启接收消息的频率控制,防止出现内存溢出异常。
一般配置该属性时,我们会经常用到 vm_memory_high_watermark.relative 这一关键属性,来声明这一阈值,该属性的默认值为 0.4 ,即 RabbitMQ 节点所在服务器内存的 40% 。
3. RabbitMQ 集群基础命令概述
在介绍完基础的集群配置属性之后,让我们最后来看一些配置 RabbitMQ 集群需要用到的一些基础命令。
rabbitmqctl status 命令
该命令用于查看 RabbitMQ 节点的运行状态,运行该命令之后,RabbitMQ 会返回给我们一个比较长的信息,我们可以通过观察这些信息,来推测我们的 RabbitMQ 节点是否在正常运行。
rabbitmq-plugins enable rabbitmq_management 命令
该命令较长,其主要作用就是开启 RabbitMQ 自带的插件管理功能,即开启 rabbitmq_management 插件,来管理在不同的集群搭建模式中,需要用到的一些插件。
rabbitmq-server -detached 命令
该命令用于以集群的方式,来启动我们的 RabbitMQ Server ,我们需要分别在不同的 RabbitMQ Server 节点中运行该命令,以将所有的 RabbitMQ Server 全部进行启动。
rabbitmqctl stop_app 命令
该命令用于停止当前的 RabbitMQ 节点,在配置集群加入时,我们应该首先执行该命令,为后续集群的加入做准备。
这个命令通常会配合 rabbitmqctl reset 命令一起使用,reset 命令表示重置该 RabbitMQ 节点的运行状态。
rabbitmqctl join_cluster rabbit@node-1 命令
该命令用于加入 RabbitMQ 节点,其中,rabbit@node-1 表示当前 RabbitMQ 节点需要加入的目标节点的节点名称,我们需要分别在所有的 RabbitMQ 节点中来配置不同的节点都要互相加入,执行该命令的前提是我们已经执行了 stop_app 和 reset 命令。
rabbitmqctl start_app 命令
该命令的作用与 stop_app 命令正好相反,我们在加入好不同的 RabbitMQ 节点之后,就可以执行该命令了。
Tips: 配置 RabbitMQ 集群的先后顺序就是上述介绍基础命令的顺序,在配置集群时,集群配置顺序一定不能乱,如果有一步是乱的,那么集群都不会被配置成功,这点同学们要注意。
4. 小结
本小节为同学们详细介绍了 RabbitMQ 中的配置文件-rabbitmq.conf ,并且介绍了该配置文件中的属性组成,以及一些基础的 RabbitMQ 集群配置属性,最后,考虑到配置集群的完整性,又对配置 RabbitMQ 集群所需的基础配置命令做了相应的介绍。