Haproxy是目前比較流行的一種集羣調度工具 nginx
Haproxy 與LVS、Nginx的比較 web
LVS性能最好,可是搭建相對複雜
算法
Nginx的upstream模塊支持集羣功能,可是對集羣節點健康檢查功能不強,性能沒有Haproxy好vim
HTTP請求服務器
經過URL訪問網站使用的協議是HTTP協議,此類請求通常稱爲HTTP請求。併發
HTTP請求的方式爲GET方式和POST方式。負載均衡
正常的狀態碼爲2xx、3xx;異常的狀態碼爲4xx、5xxide
集羣的特性 :高性能、高可用工具
負載均衡經常使用調度算法
性能
RR(Round Robin):輪詢調度
LC(Least Connections):最小鏈接數
SH(Source Hashing):基於來源訪問調度
實驗拓撲圖
一臺haproxy服務器,二臺nginx服務器(或Apache服務器),搭建兩個不一樣的網站(方便測試羣集),一臺客戶機上網測試。
實驗過程
1、在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、主服務器的設置
在前邊的基礎上,按如下步驟作
1.安裝keepalived
2.修改keepalived配置文件
vim /etc/keepalived/keepalived.conf
上邊這些內容在配置文件必須添加或修改,下邊這些內容能夠根據自身狀況而定
配置完成後,重啓服務
注意:防火牆開啓224.0.0.18端口,這是keepalived的組播地址。
2、從服務器配置
安裝haproxy服務,及修改配置文件(方法同上)
安裝keepalived服務(方法同上)
修改keepalived配置文件
只需修改router_id、state、priority參數便可,其餘保持一致就能夠了。
4.重啓keepalived服務,設置防火牆規則
3、客戶機進行訪問,訪問虛擬IP:192.168.1.100
能夠關掉主服務器,測試同樣能夠訪問網站,這樣就實現了Haproxy高可用的特性。