HAproxy實現反向代理、負載均衡叢集以及web動靜分離
一、HAproxy簡介
HAproxy是高效能的代理伺服器,其可以提供Lay4、Lay7代理,具有Healthcheck,負載均衡,訪問控制特性,完全可以支援數以萬計的併發連線,效能卓越。而且HAproxy的執行模式使得它可以很簡單安全的整合進當前的架構中,同時可以保護後臺的web伺服器不被暴露到網路上。
二、實驗環境及配置
1.環境
系統環境:centos6.4-i386
haproxy:1.4.22-3-i686
安裝:yum-yinstallhaproxy
2.配置檔案
global #全域性段 log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon defaults #預設配置(全域性有效) mode http # 基於那種模式工作(http 、tcp、health) log global #定義日誌 option httplog #詳細記錄http日誌 option dontlognull #不記錄健康檢查的日誌資訊 option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch #ServerID對應的伺服器宕機後,強制定向到其他執行正常的伺服器 retries 3 #三次連線服務失敗認為服務不可用 timeout http-request 10s #回覆報文超時時間 timeout queue 1m #排超隊超時時間 timeout connect 10s #連線超時時間 timeout client 1m #客戶端超時時間 timeout server 1m #伺服器端超時時間 timeout http-keep-alive 10s #長連線超時時間 timeout check 10s #健康檢測超時時間 maxconn 3000 #最大連線數 frontend webserver #前端配置 backend appservers #後端伺服器 listen stats #listen段(可以單獨使用,相當於frontend+backend)
三、反向代理
全域性配置和預設配置同上
frontend webserver #定義前端服務 bind *:80 default_backend appserver backend appserver#定義後端服務 server yxm23 172.16.15.23:80 check #服務名 IP:PORT 健康檢測
使用listen段實現反向代理
listen webserver bind *:80 server yxm23 172.16.15.23:80 check
定義兩組服務(listen和frontend、backend混合使用)bind埠不能相同
訪問:172.16.15.18:8080安裝haproxy伺服器的IP
frontend webserver bind *:80 default_backend appserver backend appserver server yxm23 172.16.15.23:80 check listen staticserver bind *:8080 server yxm14 172.16.15.14:80 check
四、提供狀態頁面
listen stats bind *:8088(定義任意埠) stats enable #啟動狀態頁面 預設路徑http://172.16.15.18:8080/haproxy?stats stats hide-version #隱藏版本號(B(backend) D(defaults) L(listen)) stats realm Haproxy\ yxm #提供認證(要訪問需要提供使用者密碼)B D L stats auth yxm:yxm #認證使用者名稱密碼 B D L stats admin if TRUE #提供管理功能(前提是需要先通過認證)L B stats url /hyxm 修改預設路徑 D L B
五、實現負載均衡
1.排程演算法
roundrobin:加權輪調
static-rr:輪調,靜態排程演算法
sourceuri
hash-type:map-based靜態
hash-type:consistent動態
2.動態排程演算法支援的特性
<1>權重在服務執行時調整
<2>支援慢速啟動
靜態排程演算法實現負載均衡
frontend webserver bind *:80 default_backend appservers backend appservers server yxm23 172.16.15.23:80 check #後端兩臺服務 server yxm14 172.16.15.14:80 check
動態排程演算法實現負載均衡
backend appservers balance source #排程演算法 (source、 uri:適用於快取伺服器) hash-type consistent #雜湊型別,一致性雜湊演算法 server yxm23 172.16.15.23:80 check weight 2 #預設服務,服務宕掉後,後續服務啟動,服務修復後重新奪回服務 server yxm14 172.16.15.14:80 check weight 3 #
六、使用ACL實web動靜分離
1.ACL語法解析
ACL(fronedlistenbackend)使用範圍
語法acl<aclname><criterior>[flags][operator]<value>
aclacl名稱標準標誌位操作符值
標誌位:-i:忽略字元大小寫
值型別:ranges:範圍、數字1024:65535#埠1024到65535
operators:ge、eq、lt、le、gt
strings字串
regularexpression正則表示式
IPaddressesandnetworksIP地址或者網路地址
Criterior:標準
dst<IP>、dst_port、src、src_port
path:訪問路徑
path_beg:路徑以#####開頭
eg:aclstaticpath_end.html以.html結尾
path_end:路徑以#####結尾
path_reg:匹配正則表示式(與字串匹配相比速度較慢)
Url、url_beg、url_end
hdr_beg(host):主機名以#####開頭
2.web動靜分離
frontend webserver bind *:80 acl static path_beg -i /static /p_w_picpaths /javascript /stylesheets acl static path_end -i .jpg .png .jpeg .gif .swf .css .js use_backend staticserve if static default_backend appservers backend static banlance roundrobin server yxm14 172.16.15.14:80 check weight 1 maxconn 2000#後端伺服器 server yxm18 127.0.0.1 check weight 1 backup #本地主機作為備用主機 backend appservers banlance roundrobin server yxm23 172.16.15.23:80 check weight 1 maxconn 1000#後端伺服器 server yxm18 127.0.0.1 check weight 1 backup #本地主機作為備用主機
轉載於:https://blog.51cto.com/dreamwolf/1303972