Haproxy是目前比較流行的一種集羣調度工具
Haproxy 與LVS、Nginx的比較
LVS性能最好,但是搭建相對複雜
Nginx的upstream模塊支持集羣功能,但是對集羣節點健康檢查功能不強,性能沒有Haproxy好
HTTP請求
通過URL訪問網站使用的協議是HTTP協議,此類請求一般稱爲HTTP請求。
HTTP請求的方式爲GET方式和POST方式。
正常的狀態碼爲2xx、3xx;異常的狀態碼爲4xx、5xx
集羣的特性 :高性能、高可用
負載均衡常用調度算法
RR(Round Robin):輪詢調度
LC(Least Connections):最小連接數
SH(Source Hashing):基於來源訪問調度
實驗拓撲圖
一臺haproxy服務器,二臺nginx服務器(或Apache服務器),搭建兩個不同的網站(方便測試羣集),一臺客戶機上網測試。
實驗過程
一、在Haproxy服務器上操作
1.編譯安裝Haproxy
2.建立Haproxy的配置文件
3.Haproxy配置項介紹
Haproxy配置文件通常爲三個部分,即global(全局配置)、default(默認配置)和listen(應用組件配置)。
4.創建自啓動腳本
5.在Nginx(Apache)建立網站測試(兩個網站服務器操作一致)
6.客戶端進行驗證
7.Haproxy的日誌
Haproxy的日誌默認是輸出到系統的syslog中,查看起來不是非常方便,爲了更好地管理Haproxy的日誌,我們在生產環境中一般單獨定義出來。
(1)修改Haproxy配置文件中關於日誌配置的選項
配置完成後,重啓Haproxy服務。
(2)修改rsyslog配置
爲了便於管理,將Haproxy相關的配置獨立定義到haproxy.conf,並放到/etc/rsyslog.d/下,rsyslog啓動時會自動加載此目錄下的所有配置文件。
加入下面的內容
這部分配置是將Haproxy的info日誌記錄到/var/log/haproxy/haproxy-info.log下,將notice日誌記錄到/var/log/haproxy/haproxy-notice.log下,其中“& ~"表示當日志寫入到日誌文件後,rsyslog停止處理這個信息。
然後保存配置文件並重啓rsyslog服務,完成rsyslog配置。
(3)測試日誌文件
8.Haproxy的參數優化
參數 | 參數說明 | 優化建議 |
maxconn | 最大連接數 | 推薦使用10240 |
daemon | 守護進程模式 | 建議使用 |
nbproc | 負載均衡的併發進程數 | 建議與當前服務器CPU核數相等或爲其2倍 |
retries | 重試次數 | 此參數主要用於對集羣節點的檢查,如果節點多,且併發量大,設置爲2此或3次;在服務器節點不多的情況下,可以設置5次或6次 |
option http-server-close | 主動關閉http請求選項 | 建議使用,避免由於timeout時間設置過長導致http連接堆積 |
timeout http-keep-alive | 長連接超時時間 | 可以設置爲10s |
timeout http-request | http請求超時時間 | 建議將此時間設置爲5~10s,增加http連接釋放速度 |
timeout client | 客戶端超時時間 | 建議設置爲1min左右就可以了 |
擴展
在上圖中增加了一臺haproxy,用來做備份,在兩臺haproxy上面安裝keepalived,兩臺Haproxy操作步驟一致,只是配置文件有些區別
一、主服務器的設置
在前邊的基礎上,按以下步驟做
1.安裝keepalived
2.修改keepalived配置文件
vim /etc/keepalived/keepalived.conf
上邊這些內容在配置文件必須添加或修改,下邊這些內容可以根據自身情況而定
配置完成後,重啓服務
注意:防火牆開啓224.0.0.18端口,這是keepalived的組播地址。
二、從服務器配置
安裝haproxy服務,及修改配置文件(方法同上)
安裝keepalived服務(方法同上)
修改keepalived配置文件
只需修改router_id、state、priority參數即可,其他保持一致就可以了。
4.重啓keepalived服務,設置防火牆規則
三、客戶機進行訪問,訪問虛擬IP:192.168.1.100
可以關掉主服務器,測試一樣可以訪問網站,這樣就實現了Haproxy高可用的特性。