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

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