RabbitMQ集群配置文件概述
1. 前言
Hello,大家好。通過之前兩個小節(jié)的學習,我們已經(jīng)對 RabbitMQ 中的四大集群模式有了一個基礎(chǔ)的了解,包括集群模式的概念,以及基本的使用或部署流程等內(nèi)容。但是,對于 RabbitMQ 集群來說,我們只了解了這些基礎(chǔ)內(nèi)容顯然是不夠的,還需要我們來進一步了解集群的配置文件。
在本小節(jié)中,我們會對 RabbitMQ 集群配置文件中的一些基礎(chǔ)的集群配置屬性,以及配置 RabbitMQ 集群需要用到的一些基礎(chǔ)命令做一些基礎(chǔ)性的介紹,同學們現(xiàn)階段只需要了解這些基礎(chǔ)的集群配置文件中的屬性即可。
本節(jié)主要內(nèi)容:
-
RabbitMQ 基礎(chǔ)集群屬性概述;
-
RabbitMQ 集群基礎(chǔ)命令概述。
2. RabbitMQ 基礎(chǔ)集群屬性概述
2.1 RabbitMQ 配置文件
通過上述兩個小節(jié)的學習,我們都知道了,在 RabbitMQ 中存在著四種主流的集群模式,我們可以根據(jù)不同的業(yè)務(wù)場景去設(shè)置以及使用不同的集群模式,這完全取決于我們自己。
對于不同地 RabbitMQ 集群搭建模式來說,RabbitMQ 官網(wǎng)為我們提供了不同地集群配置文件,這些集群配置文件可以幫助我們更好地來對具體的集群場景進行搭建和控制,但是這些特定的集群文件中的配置屬性對我們同學來說有點太過陌生了,所以,本節(jié)不會對這些特定的集群配置文件中的集群配置屬性進行介紹,有興趣的同學課下可以自行查閱資料了解。
在本套課程中,我們使用的 RabbitMQ 為 3.8.X 版本,在這一系列版本中,在我們安裝好 RabbitMQ 之后,RabbitMQ 并不會自帶一個 RabbitMQ 的配置文件,需要我們手動進行創(chuàng)建并聲明,我們可以前往 RabbitMQ 的 Github 中去獲取名為 rabbitmq.conf.example 的配置文件。
在獲取到名為 rabbitmq.conf.example 的配置文件之后,我們需要去除 .example 后綴,使文件名為 rabbitmq.conf ,這個文件就是我們真正地 RabbitMQ 的配置文件了。
而無論我們配置四種集群搭建模式中的哪一種集群搭建方式,我們都會對 rabbitmq.conf 文件進行配置,只有對rabbitmq.conf 文件配置好之后,我們最后才會對特定的集群配置文件進行配置,這個順序不要搞反了。
rabbitmq.conf 配置文件中不僅僅只有對 RabbitMQ 集群搭建模式的配置屬性,還有一些對 RabbitMQ 的基礎(chǔ)內(nèi)容進行配置的一些配置屬性,總之,rabbitmq.conf 配置文件基本上涵蓋了在 RabbitMQ 中所有你可以看到的配置內(nèi)容,所以這個配置文件會很長,基本上我們要想對 RabbitMQ 進行一些配置,就必須要用到這個文件。
下面就讓我們來看一下在 rabbitmq.conf 配置文件中都有哪些基礎(chǔ)的集群配置屬性吧。
2.2 RabbitMQ 集群基礎(chǔ)配置屬性
在 rabbitmq.conf 配置文件中,集群的配置屬性所在的位置并不是固定的一塊區(qū)域,而是分散開的,同學們可以直接在 rabbitmq.conf 配置文件中通過配置屬性關(guān)鍵詞來進行搜索。
listeners.tcp.default 屬性
該屬性屬于 listeners 系列參數(shù)下,主要作用就是設(shè)置不同 RabbitMQ 節(jié)點的默認服務(wù)端口,通過 tcp.default 的形式來聲明,此屬性的默認值為 5672 ,即集群節(jié)點的默認服務(wù)端口是 5672 端口。
cluster_name 屬性
該屬性屬于 cluster 系列參數(shù)下,主要作用就是設(shè)置不同 RabbitMQ 節(jié)點的節(jié)點名稱,該屬性的默認值是 RabbitMQ 自動生成的,但是在不同的 RabbitMQ 版本中,該屬性也會出現(xiàn)空值的現(xiàn)象,這也是正常的一種現(xiàn)象,如果需要配置集群的時候,我們再專門去指定就好了。
cluster_keepalive_interval 屬性
該屬性屬于 cluster 系列參數(shù)下,主要作用就是通過集成 KeepAlive 組件,來對不同 RabbitMQ 節(jié)點間的一個檢測時間進行約束,即檢測不同 RabbitMQ 節(jié)點間是否正常通信的間隔時間,該屬性的默認值為 10000 毫秒,我們可以根據(jù)實際情況進行制定。
disk_free_limit 屬性
該屬性屬于 disk 系列參數(shù)下,其主要作用就是設(shè)置不同的 RabbitMQ 節(jié)點的硬盤最低存儲閾值,若我們的硬盤容量小于這一閾值,則該節(jié)點的 RabbitMQ Server 就不會再存儲消息了,該屬性的默認值為硬盤總量的 10% 。
vm_memory_high_watermark 屬性
該屬性屬于 vm_memory 系列參數(shù)下,其主要作用就是設(shè)置不同的 RabbitMQ 節(jié)點所在服務(wù)器的內(nèi)存的一個最低存儲閾值,若該節(jié)點所在服務(wù)器的內(nèi)存小于這一閾值,則該節(jié)點的 RabbitMQ Server 會自動開啟接收消息的頻率控制,防止出現(xiàn)內(nèi)存溢出異常。
一般配置該屬性時,我們會經(jīng)常用到 vm_memory_high_watermark.relative 這一關(guān)鍵屬性,來聲明這一閾值,該屬性的默認值為 0.4 ,即 RabbitMQ 節(jié)點所在服務(wù)器內(nèi)存的 40% 。
3. RabbitMQ 集群基礎(chǔ)命令概述
在介紹完基礎(chǔ)的集群配置屬性之后,讓我們最后來看一些配置 RabbitMQ 集群需要用到的一些基礎(chǔ)命令。
rabbitmqctl status 命令
該命令用于查看 RabbitMQ 節(jié)點的運行狀態(tài),運行該命令之后,RabbitMQ 會返回給我們一個比較長的信息,我們可以通過觀察這些信息,來推測我們的 RabbitMQ 節(jié)點是否在正常運行。
rabbitmq-plugins enable rabbitmq_management 命令
該命令較長,其主要作用就是開啟 RabbitMQ 自帶的插件管理功能,即開啟 rabbitmq_management 插件,來管理在不同的集群搭建模式中,需要用到的一些插件。
rabbitmq-server -detached 命令
該命令用于以集群的方式,來啟動我們的 RabbitMQ Server ,我們需要分別在不同的 RabbitMQ Server 節(jié)點中運行該命令,以將所有的 RabbitMQ Server 全部進行啟動。
rabbitmqctl stop_app 命令
該命令用于停止當前的 RabbitMQ 節(jié)點,在配置集群加入時,我們應(yīng)該首先執(zhí)行該命令,為后續(xù)集群的加入做準備。
這個命令通常會配合 rabbitmqctl reset 命令一起使用,reset 命令表示重置該 RabbitMQ 節(jié)點的運行狀態(tài)。
rabbitmqctl join_cluster rabbit@node-1 命令
該命令用于加入 RabbitMQ 節(jié)點,其中,rabbit@node-1 表示當前 RabbitMQ 節(jié)點需要加入的目標節(jié)點的節(jié)點名稱,我們需要分別在所有的 RabbitMQ 節(jié)點中來配置不同的節(jié)點都要互相加入,執(zhí)行該命令的前提是我們已經(jīng)執(zhí)行了 stop_app 和 reset 命令。
rabbitmqctl start_app 命令
該命令的作用與 stop_app 命令正好相反,我們在加入好不同的 RabbitMQ 節(jié)點之后,就可以執(zhí)行該命令了。
Tips: 配置 RabbitMQ 集群的先后順序就是上述介紹基礎(chǔ)命令的順序,在配置集群時,集群配置順序一定不能亂,如果有一步是亂的,那么集群都不會被配置成功,這點同學們要注意。
4. 小結(jié)

本小節(jié)為同學們詳細介紹了 RabbitMQ 中的配置文件-rabbitmq.conf ,并且介紹了該配置文件中的屬性組成,以及一些基礎(chǔ)的 RabbitMQ 集群配置屬性,最后,考慮到配置集群的完整性,又對配置 RabbitMQ 集群所需的基礎(chǔ)配置命令做了相應(yīng)的介紹。