文章目錄
- 一.案例概述
- 2.1 HTTP請求
- 2.2 負載均衡常用調度算法
- ①RR(Round robin)
- ②LC(least connections)
- ③SH(source hashing)
- 2.3 常見的web群集調度器
- 3.實驗環境
- 二.實驗步驟
- 1.兩臺web網站步驟相同 安裝web服務(nginx,apache)
- ①安裝web網站
- ②在網頁目錄創建網站
- 2.haproxy服務器配置
- ①安裝haproxy
- ②修改配置文件
- 3.測試web集群
- 4.haproxy日志文件
- ①修改haproxy配置文件 將原有日志配置修改
- ②配置rsyslog服務
- 查看日志文件是否生成查看客戶端真實IP
一.案例概述
**proxy是目前比較流行的一種群集調度工具,同類群集調度工具有很多,
如LVS和Nginx。相比較而言,LVS性能最好,但是搭建相對復雜;Nginx的
upstream模塊支持群集功能,但是對群集節點健康檢查功能不強,高并發性能
沒有Haproxy好。Haproxy官方網站是http://www.haproxy.org/。
2.1 HTTP請求
通過URL訪問網站使用的協議是HTTP協議,此類請求一般稱為HTTP/請
求。HTTP請求的方式分為GET方式和POST方式。當使用瀏覽器訪問某一個
URL,會根據請求URL返回狀態碼,通常正常的狀態碼為2XX、3XX(如200、
301),如果出現異常會返回4XX、5XX(如400、500)。
2.2 負載均衡常用調度算法
調度算法有三種
①RR(Round robin)
RR算法是最簡單最常用的一種算法,即輪詢調度。
例如,有三個節點A、B、C,第一個用戶訪問會被指派到節點A,第二個用戶訪
問會被指派到節點B,第三個用戶訪問會被指派到節點C,第四個用戶訪問繼續
指派到節點A,輪詢分配訪問請求實現負載均衡效果。此算法還有一種加權輪詢,
即根據每個節點的權重輪詢分配訪問請求。
②LC(least connections)
LC算法即最小連接數算法,根據后端的節點
連接數大
小動態分配前端請求。例如,有三個節點A、B、C,各節點的連接數分別為A:
4、B:5、C:
6,此時如果有第一個用戶連接請求,會被指派到A上,連接數變為A:5、B:
5、C:6;第二個用戶請求會繼續分配到A上,連接數變為A:6、B:5、C:6;
再有新的請求會分配給B,每次將新的請求指派給連接數最小的客戶端。由于實
際情況下A、B、C的連接數會動態釋放,很難會出現一樣連接數的情況,因此
此算法相比較rr算法有很大改進,是目前用到比較多的一種算法。
③SH(source hashing)
SH即基于來源訪問調度算法,此算法用于一些有
Session會話記錄在服務器端的場景,可以基于來源的IP、Cookie等做群集調
度。例如,使用基于源IP的群集調度算法,有三個節點A、B、C,第一個用戶
第一次訪問被指派到了A,第二個用戶第一次訪問被指派到了B,當第一個用戶
第二次訪問時會被繼續指派到A,第二個用戶第二次訪問時依舊會被指派到B,
只要負載均衡調度器不重啟,第一個用戶訪問都會被指派到A,第二個用戶訪問
都會被指派到B,實現群集的調度。此調度算法好處是實現會話保持,但某些IP
訪問量非常大時會引起負載不均衡,部分節點訪問量超大,影響業務使用。
2.3 常見的web群集調度器
目前,常見的Web群集調度器分為軟件和硬件。軟件通常使用開源的LyS、
Haproxy、Nginx,硬件一般使用比較多的是F5。也有很多人使用國內的一些產
品,如梭子魚、綠盟等
3.實驗環境
haproxy是192.168.10.101
web1網站:192.168.10.102
web2網站:192.168.10.103
實驗前關閉防火墻與selinux機制或者添加防火墻策略
二.實驗步驟
1.兩臺web網站步驟相同 安裝web服務(nginx,apache)
①安裝web網站
②在網頁目錄創建網站
2.haproxy服務器配置
①安裝haproxy
②修改配置文件
Haproxy配置項介紹:
Haproxy配置文件通常分為三個部分,即global、defaults和listen。
global為全局配置,defaults為默認配置,listen為應用組件配置。
這是全局項
log #配置日志文件記錄,local2為日志設備,默認存放到系統日志
maxconn #最大連接數
user #程序用戶
group #程序組
defaults配置項配置默認參數,一般會被應用組件繼承,如果在應用組件
中沒有特別聲明,將按照默認配置參數設置。
listen配置項是配置應用模塊參數
listen webcluster
//定義一個appli4-backup的應用
bind 0.0.0.0:80
//監聽所有網卡的80端口
option httpchk GET /index. html
//通過GET/index.html檢查服務器
建康狀態
balanceroundrobin//負載均衡調度算法使用輪詢算法
serverinst1 192.168.10.101:80checkinter2000fall3 //后端服務
器1,每2秒檢查一次,3次失敗后下線
server inst2 192.168.10.102:80 check inter 2000 fall 3
3.測試web集群
通過代理服務器調度到后端服務器
通過上面的步驟,已經搭建完成Haproxy的Web群集,接下來需要驗證群
集是否工作正常。一個群集一般需要具備兩個特性,第一個是高性能,第二個是
高可用
查詢http日志文件查看是否是代理服務器訪問網站
4.haproxy日志文件
Haproxy的日志默認輸出到系統的syslog中,查看起來不是非常方便,為
了更好地管理Haproxy的日志,在生產環境中一般單獨定義出來
①修改haproxy配置文件 將原有日志配置修改
②配置rsyslog服務
創建rsyslog的haproxy日志文件規則