RabbitMQ集群集成HaProxy組件實操
1. 前言
Hello,大家好。在上一小節中,我們將 KeepAlived 組件與我們的 RabbitMQ 集群進行了整合,使我們的 RabbitMQ 集群得到了 KeepAlived 組件的支撐,但是,只有 KeepAlived 組件是不夠的,我們還需要 HaProxy 組件。
不知道同學們還記不記得 HaProxy 組件,他是保障 RabbitMQ 集群高可用持續運行下去的輔助工具,在前面的小節中,我們只是對 HaProxy 組件的基礎定義和基礎屬性做了介紹,并沒有實際去操作它。
本小節會為同學們介紹,如何在 RabbitMQ 集群中,去集成我們 HaProxy 組件,包括將 HaProxy 組件集成到 RabbitMQ 集群中的集成步驟等內容,學習本節內容的前提是,同學們已經對 RabbitMQ 集群以及 KeepAlived 組件有了初步的認識和一定的操作基礎。
本節主要內容:
-
HaProxy 基礎概念回顧;
-
集成 HaProxy 組件步驟概述。
2.HaProxy 基礎內容回顧
2.1 HaProxy 基礎概念回顧
HaProxy 組件,但從字面意義上來講,是由兩個單詞所組成,分別是 Ha ,以及 Proxy 。其中,Ha 指的是 High Availability 簡稱,取的是兩個單詞的首字符,即 HA ,中文含義就是我們常說的高可用。
而 proxy 就比較簡單了,proxy 翻譯過來具有代理的含義,代理我們可以理解為我們平常生活中的第三方辦事機構,就是我們自己的事情交給第三方去做,等第三方完成我們交代的任務后,會給我們一個通知,HaProxy 中的 proxy 就是這個意思。
通過字面意思,我們可以知道,HaProxy 就是一種高可用的代理工具。那么這個代理工具對于 RabbitMQ 集群來說,又表示什么含義呢?
HaProxy 就是一種為集群提供高可用支持與服務的,一種高可用代理工具,其可以管理集群間的通信方式,可以對集群進行健康檢查,甚至也可以對集群進行全方位的監控,說白了,HaProxy 就是一種輔助集群實現高可用、對集群進行監控、對集群進行健康檢查的一種組件或軟件。
我們可以在 HaProxy 中,通過配置不同地代理模式,來實現對集群的監控和集群間的健康檢查。
在對 HaProxy 的基礎概念有一個簡單地回顧之后,我們再來簡單回顧一下 HaProxy 中的基礎屬性,這些屬性是整合 RabbitMQ 集群中的基礎。
2.2 HaProxy 基礎屬性回顧
我們在 HaProxy 組件基礎屬性介紹小節中,我們對 HaProxy 組件常用的幾個基礎屬性做了詳細介紹,這些基礎屬性是:mode 屬性、retries 屬性、maxconn 屬性、clitimeout 屬性、servtimeout 屬性,以及 states uri 屬性。
我們簡單來回顧一下這些基礎配置屬性的作用。
mode 屬性,其主要作用是用來聲明我們當前 RabbitMQ 集群節點中,HaProxy 所采用的代理模式。
retries 屬性,其主要作用是用來聲明,RabbitMQ 集群中,HaProxy 在集群間通信的一個嘗試次數。
maxconn 屬性,其主要作用是用來聲明,當前節點中所允許接入到 HaProxy 中的最大連接數。
clitimeout 屬性,其主要作用是用來聲明,當前節點中客戶端的一個空閑時間,單位為秒。
servtimeout 屬性,其主要作用是用來聲明,當前節點所在服務器的一個連接超時時間,單位也為秒。
states uri 屬性,其主要用來聲明,在 HaProxy 組件中提供的集群監控 web 管控臺的一個地址。
在對 HaProxy 組件的基礎內容作了簡單回顧之后,下面讓我們來看一下如何將 HaProxy 組件整合到我們的 RabbitMQ 集群中去。
Tips: 我們對 HaProxy 的部分基礎內容作了簡單的回顧,如果有不清楚的同學,可以回到《 HaProxy 組件基礎屬性介紹》小節中復習。
3 集成 HaProxy 組件步驟概述
和 KeepAlived 組件集成到 RabbitMQ 集群中那樣,在將 HaProxy 組件集成到 RabbitMQ 集群中之前,我們假定同學們已經在自己的機器上,已經搭建好了任意一種模式的 RabbitMQ 集群, 如果沒有完成任意一種模式 RabbitMQ 集群的搭建,那么是不能繼續將 HaProxy 組件集成到集群中去的。
對于任意一種 HaProxy 集群模式而言,RabbitMQ 官方都為我們的集群搭建過程提供了很好地支持,同時,也為 HaProxy 組件的集成提供了清晰地集成步驟,下面就讓我們看一下如何將 HaProxy 組件集成到我們的 RabbitMQ 集群中吧。
在將 HaProxy 組件整合到 RabbitMQ 集群之前,同學們一定要保證 KeepAlived 組件已經整合到了 RabbitMQ 集群中,否則,我們只集成 HaProxy 組件,無法完全發揮它的作用。
在下述集成 HaProxy 組件過程中,我們默認采用 Linux 服務器的 CentOS 7 版本,同學們注意。
第一步 安裝 HaProxy 組件
在集成 HaProxy 組件之前,我們需要在自己的機器上下載并安裝 HaProxy 組件,可以通過以下命令實現:
wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.5.tar.gz
下載完成之后,我們會得到一個壓縮包,接著,我們需要將該壓縮包進行解壓,解壓命令如下:
tar -zxvf haproxy-1.6.5.tar.gz
接著,我們需要在 HaProxy 組件安裝目錄下,執行以下命令:
make TARGET=linux31
make install
經過上述安裝命令之后,如果沒有提示任何錯誤,則表明 HaProxy 組件已經安裝成功了。
Tips: 如果在安裝 HaProxy 過程中,提示缺少 gcc 編譯環境,這就表明我們的機器上沒有安裝 gcc 編譯環境,HaProxy 組件無法繼續進行安裝,我們只需要將 gcc 編譯環境安裝上去就可以了: yum install gcc 。
第二步 配置 HaProxy 組件
在安裝完成 HaProxy 組件之后,我們需要對 HaProxy 組件進行 RabbitMQ 集群相關的配置,這個配置文件默認是沒有的,需要我們在一下路徑中創建:
/etc/haproxy/
在上述路徑中,我們可以使用 Linux 系統的 touch 命令,來將 HaProxy 組件的配置文件創建出來,其配置文件名稱必須為 haproxy.cfg 。
和 KeepAlived 的配置文件類似,haproxy.cfg 配置文件中的配置較多,由于篇幅原因,這里不再一一介紹,同學們可以在對之前介紹的基礎屬性有所了解之后,從 HaProxy 官方下載一個完整的配置文件即可。
在將官方的配置文件下載好之后,根據官方注釋,將配置文件中與 RabbitMQ 集群相關的屬性的值,全部修改為自己機器的真實數據就行了。
Tips: haproxy.cfg 這個配置文件,需要我們部署到所有的 RabbitMQ 集群節點中,并通過這個配置文件,來聲明我們對集群監控所采用的代理模式,以及 HaProxy web 管控臺的 uri 地址。
第三步 啟動 HaProxy 組件
在將所有 RabbitMQ 集群節點的 HaProxy 組件全部配置好之后,最后,我們就需要啟動 HaProxy 組件,HaProxy 組件的啟動命令和 KeepAlived 組件的啟動命令不同,啟動命令吐下所示:
你的 HaProxy 安裝路徑/sbin/haproxy -f /etc/haproxy/haproxy.cfg
可以看到,在啟動 HaProxy 組件時,需要通過位于 HaProxy 組件安裝目錄下 sbin 目錄中的 haproxy 程序去啟動,并且,在啟動時,還需要通過 -f 參數來指名我們 HaProxy 配置文件 haproxy.cfg 的位置,這樣,我們的 HaProxy 組件才能正常啟動。
輸入上述命令之后,我們也需要查看 HaProxy 組件的啟動狀態,查看命令如下:
ps -ef | grep haproxy
執行上述命令之后,如果可以看到 HaProxy 組件的線程信息,說明 HaProxy 組件已經成功啟動,且對我們的 RabbitMQ 集群已經進行了高可用支撐。
我們也可以通過訪問我們在 HaProxy 配置文件中所聲明的 HaProxy Web 管控臺的地址,來查看 HaProxy 有沒有正常工作,HaProxy Web 管控臺的地址如下圖所示:

Tips: 1.我們在配置 HaProxy 的配置文件 haproxy.cfg 時,出于方便考慮,我們可以直接從 HaProxy 官方下載一份配置文件,然后直接放到相應的路徑即可;
2. HaProxy 與 KeepAlived 組件是相輔相成的,按照 RabbitMQ 官網所要求的順序,我們應該首先將 HaProxy 組件與 RabbitMQ 集群進行整合,然后再是 KeepAlived 組件,這個順序同學們不要搞反了。
4. 小結

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