RabbitMQ集群集成KeepAlived組件實(shí)操
1. 前言
Hello,大家好。通過(guò)上述幾個(gè)小節(jié)的介紹,我們已經(jīng)對(duì)如何使用 RabbitMQ 去優(yōu)化常見(jiàn)的傳統(tǒng)功能已經(jīng)有了一個(gè)大概的思路,但是,我們只了解這些內(nèi)容是遠(yuǎn)遠(yuǎn)不夠的。
不知道同學(xué)們還記不記得 KeepAlived 組件,他是幫助搭建 RabbitMQ 集群的工具組件,在前面的小節(jié)中,我們只是對(duì) KeepAlived 組件的基礎(chǔ)定義和基礎(chǔ)屬性做了介紹,并沒(méi)有實(shí)際去操作它。
本小節(jié)會(huì)為同學(xué)們介紹,如何在 RabbitMQ 集群中,去集成我們 KeepAlived 組件,包括將 KeepAlived 組件集成到 RabbitMQ 集群中的集成步驟等內(nèi)容,學(xué)習(xí)本節(jié)內(nèi)容的前提是,同學(xué)們已經(jīng)對(duì) RabbitMQ 集群有了初步的認(rèn)識(shí)。
本節(jié)主要內(nèi)容:
-
KeepAlived 基礎(chǔ)概念回顧;
-
集成 KeepAlived 組件步驟概述。
2.KeepAlived 基礎(chǔ)內(nèi)容回顧
2.1 KeepAlived 基礎(chǔ)概念回顧
在 KeepAlived 組件基礎(chǔ)屬性介紹這一小節(jié)中,我們采用人們?cè)谏钪械臓顟B(tài)為例,為各位同學(xué)介紹了 KeepAlived 組件的基礎(chǔ)概念。
KeepAlived 由 Keep 和 Alived 兩個(gè)單詞組成,Keep 翻譯過(guò)來(lái)具有保持的含義,而 Alived 翻譯過(guò)來(lái)具有或者的含義,我們把這兩個(gè)含義組合起來(lái),就是保持活著的意思。
在 KeepAlived 中,這一’活著’的狀態(tài)指的就是計(jì)算機(jī)服務(wù)集群中的,一種可以持續(xù)提供服務(wù)狀態(tài)的一種保障狀態(tài),當(dāng)我們?cè)诩褐信渲昧?KeepAlived 時(shí),我們就可以將我們的集群服務(wù)狀態(tài)稱(chēng)之為‘活著’。
從專(zhuān)業(yè)角度來(lái)講,KeepAlived 組件其實(shí)就是一種可以提供計(jì)算機(jī)服務(wù)集群間的服務(wù)狀態(tài)不間斷運(yùn)行的一種輔助軟件,或者叫做工具組件。 通過(guò)在集群中引入 KeepAlived 組件,再結(jié)合一定的配置,可以保證集群持續(xù)穩(wěn)定的對(duì)外提供服務(wù),不受外界環(huán)境的影響。(特殊因素除外)。
KeepAlived 組件本身還提供了一些其他的功能,比如,對(duì)不同集群間的服務(wù)狀態(tài)的監(jiān)控,對(duì)不同集群間的服務(wù)狀態(tài)的一個(gè)心跳檢測(cè)機(jī)制,提供對(duì)集群服務(wù)負(fù)載均衡的支持等功能,我們可以根據(jù)實(shí)際需要,去整合 KeepAlived 組件與集群。
2.2 KeepAlived 基礎(chǔ)屬性回顧
我們?cè)?KeepAlived 組件基礎(chǔ)屬性介紹小節(jié)中,我們對(duì) KeepAlived 組件常用的幾個(gè)基礎(chǔ)屬性做了詳細(xì)介紹,這些基礎(chǔ)屬性是:router_id 屬性、interval 屬性、state 屬性、interface 屬性、virtual_router_id 屬性,以及 virtual ipaddress 配置項(xiàng)。
我們簡(jiǎn)單來(lái)回顧一下這些基礎(chǔ)配置屬性的作用。
router_id 屬性,主要作用是用來(lái)聲明我們當(dāng)前 RabbitMQ 集群節(jié)點(diǎn)的名稱(chēng),這個(gè)名稱(chēng)我們可以自由指定,該屬性的默認(rèn)值是我們的 hostname ,也就是當(dāng)前集群節(jié)點(diǎn)的主機(jī)名稱(chēng)。
interval 屬性,主要用來(lái)對(duì)集群的運(yùn)行狀態(tài)進(jìn)行檢測(cè)的一個(gè)時(shí)間間隔,默認(rèn)值為兩秒。
state 屬性,主要作用是用來(lái)聲明集群當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)模式,共有主節(jié)點(diǎn)和從節(jié)點(diǎn)兩種模式。
interface 屬性,其主要作用是用來(lái)聲明當(dāng)前節(jié)點(diǎn)所在服務(wù)器的網(wǎng)卡的名稱(chēng),這一配置是 KeepAlived 組件要求必須要配置的屬性,其沒(méi)有默認(rèn)值。
virtual_router_id 屬性,其主要作用是用來(lái)聲明當(dāng)前節(jié)點(diǎn)虛擬路由的 id 號(hào)。
virtual ipaddress 配置項(xiàng),該配置項(xiàng)的主要作用就是定義我們集群對(duì)外暴露的虛擬的 ip 地址。
在對(duì) KeepAlived 組件的基礎(chǔ)內(nèi)容作了簡(jiǎn)單回顧之后,下面讓我們來(lái)看一下如何將 KeepAlived 組件集成到我們的 RabbitMQ 集群中去。
Tips: 我們對(duì) KeepAlived 的部分基礎(chǔ)內(nèi)容作了簡(jiǎn)單的回顧,如果有不清楚的同學(xué),可以返回到《KeepAlived組件基礎(chǔ)屬性介紹》小節(jié)中復(fù)習(xí)。
3 集成 KeepAlived 組件步驟概述
在本套課程中,我們已經(jīng)將 RabbitMQ 中幾乎所有的集群模式都進(jìn)行了基礎(chǔ)地了解,所以,在將 KeepAlived 組件集成到 RabbitMQ 集群中之前,假定同學(xué)們已經(jīng)在自己的機(jī)器上,已經(jīng)搭建好了任意一種模式的 RabbitMQ 集群, 如果沒(méi)有完成任意一種模式 RabbitMQ 集群的搭建,那么是不能繼續(xù)將 KeepAlived 組件集成到集群中去的。
對(duì)于任意一種 RabbitMQ 集群模式而言,RabbitMQ 官方都為我們的集群搭建過(guò)程提供了很好地支持,同時(shí),也為 KeepAlived 組件的集成提供了清晰地集成步驟,下面就讓我們看一下如何將 KeepAlived 組件集成到我們的 RabbitMQ 集群中吧。
在下述集成 KeepAlived 組件過(guò)程中,我們默認(rèn)采用 Linux 服務(wù)器的 CentOS 7 版本,同學(xué)們注意。
第一步 安裝 KeepAlived 組件
在集成 KeepAlived 組件之前,我們需要在自己的機(jī)器上下載并安裝 KeepAlived 組件,可以通過(guò)以下命令實(shí)現(xiàn):
wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz
下載完成之后,我們會(huì)得到一個(gè)壓縮包,接著,我們需要將該壓縮包進(jìn)行解壓,解壓命令如下:
tar -zxvf keepalived-1.2.18.tar.gz
接著,我們需要安裝 KeepAlived 組件,安裝命令如下:
// 進(jìn)入到 KeepAlived 安裝目錄下
cd keepalived-1.2.18/ && ./configure
// 編譯并安裝 KeepAlived
make && make install
經(jīng)過(guò)上述安裝命令之后,如果沒(méi)有提示任何錯(cuò)誤,則表明 KeepAlived 組件已經(jīng)安裝成功了。
Tips: 如果在安裝 KeepAlived 過(guò)程中,提示缺少安全套件,無(wú)法進(jìn)行安裝,那就表明我們?nèi)鄙?ssl 安全協(xié)議,我們只需要將這個(gè)安全協(xié)議安裝上去就可以了: yum install -y openssl openssl-devel
第二步 配置 KeepAlived 組件
在安裝完成 KeepAlived 組件之后,我們需要對(duì) KeepAlived 組件進(jìn)行 RabbitMQ 集群相關(guān)的配置,這個(gè)配置文件默認(rèn)在以下路徑:
/etc/keepalived/keepalived.conf
如果你的路徑下沒(méi)有這個(gè)配置文件,那就只能自己創(chuàng)建一個(gè)同名的配置文件了。
keepalived.conf 配置文件中的配置較多,由于篇幅原因,這里不再一一介紹,同學(xué)們可以在對(duì)之前介紹的基礎(chǔ)屬性有所了解之后,從 KeepAlived 官方下載一個(gè)完整的配置文件即可。
在將官方的配置文件下載好之后,根據(jù)官方注釋?zhuān)瑢⑴渲梦募信c RabbitMQ 集群相關(guān)的屬性的值,全部修改為自己機(jī)器的真實(shí)數(shù)據(jù)就行了。
Tips: keepalived.conf 這個(gè)配置文件,需要我們部署到所有的 RabbitMQ 集群節(jié)點(diǎn)中,并通過(guò)這個(gè)配置文件,來(lái)聲明哪一個(gè)幾點(diǎn)是集群主節(jié)點(diǎn),哪些節(jié)點(diǎn)是集群的從節(jié)點(diǎn)。
第三步 啟動(dòng) KeepAlived 組件
在將所有 RabbitMQ 集群節(jié)點(diǎn)的 KeepAlived 組件全部配置好之后,最后,我們就需要啟動(dòng) KeepAlived 組件,啟動(dòng)命令如下所示:
service keepalived start
輸入上述命令之后,我們需要查看 KeepAlived 組件的啟動(dòng)狀態(tài),查看命令如下:
ps -ef | grep keepalived
執(zhí)行上述命令之后,如果可以看到 KeepAlived 組件的線程信息,說(shuō)明 KeepAlived 組件已經(jīng)成功啟動(dòng),且已經(jīng)對(duì) RabbitMQ 集群開(kāi)始了監(jiān)聽(tīng)。
我們可以通過(guò)設(shè)置的虛擬 IP 地址來(lái)訪問(wèn)我們的 RabbitMQ 集群,以測(cè)試 RabbitMQ 的可用性。
Tips: 在啟動(dòng) KeepAlived 組件之前,我們需要先確保 HaProxy 組件服務(wù)處于運(yùn)行狀態(tài),因?yàn)樗麄儍蓚€(gè)組件是互相依賴(lài)的,這一點(diǎn)在下一小節(jié)中會(huì)做介紹。
4. 小結(jié)

本小節(jié)為同學(xué)們介紹了 KeepAlived 整合 RabbitMQ 集群的相關(guān)內(nèi)容,包括 KeepAlived 組件基礎(chǔ)內(nèi)容的回顧、KeepAlived 組件的安裝與配置,以及 KeepAlived 組件服務(wù)的啟動(dòng)。本小節(jié)所介紹的整合內(nèi)容均為基礎(chǔ)整合內(nèi)容,考慮到本門(mén)課程的定位,太難理解的內(nèi)容并沒(méi)有為大家介紹,如有興趣,同學(xué)們可以私下查閱資料了解。