1.haproxy的基礎
haproxy工作在tcp層和http協定應用層的反向代理軟體,能負載均衡,支援高并發(單程序,事件觸發型io),後端健康檢查,還能單方面斷開tcp發送連接配接,開源的免費。
1.1全局配置
nbproc #啟動的程序數,一般為cpu核心數
1.2代理相關配置
defaults段用于為所有其它配置段提供預設參數
frontend段用于定義一系列監聽的套接字,這些套接字可接受用戶端請求并與之建立連接配接
backend段用于定義一系列“後端”伺服器,代理将會将對應用戶端的請求轉發至這些伺服器
listen段通過關聯“前端”和“後端”定義了一個完整的代理,通常隻對tcp流量有用
下邊說下這backend段用到的一些參數
roundrobin,權重輪詢,動态調整伺服器也能立即生效
static-rr,也是權重輪詢,但是隻能靜态生效,調整伺服器權重不能立即生效
leastconn,根據伺服器請求連接配接數最少,把新的請求發往伺服器
source,定位源位址到指定伺服器,但是這種hash方法在伺服器當機或者權重改變時失效。
uri,這可以使得對同一個uri的請求總是被派發至某特定的伺服器,這種hash方法在伺服器當機或者權重改變時失效
url-param,通過追蹤請求中的使用者辨別進而確定同一個使用者id的請求将被送往同一個特定的伺服器
hdr,根據header做排程,也就是虛拟主機來排程,該算法預設為靜态
rdp-cookie,根據據cookie(name)來鎖定并哈希每一次tcp請求
acl <aclname> <criterion> [flags] [operator] <value> ...
adname,acl名稱,區分大小寫
criterion,測試标準
flages –i 不區分大小寫 别的沒用過
operator,操作符,eq等于 ge大于等于 gt 大于 lt小于 le小于等于
value,整數,正則,字元串,ip位址
測試标準比較多,如下
be_sess_rate,fe_sess_rate,前一個是backend上會話建立速率,後一個frontend會話建立速率
hdr(header) <string> 請求首部中指定内容
method <string>請求方法
path_beg <string>,path_end<string>,前一個是url開頭部分,後一個url結尾部分
hdr_beg <string>,hdr_beg <string>,前一個是請求頭部是否含有比對的字元串,後一個首部中尾部比對字元串
backup:指定伺服器為備用伺服器
check:啟動健康檢查對伺服器,還有一些細緻參數,inter檢查時間間隔,rise伺服器從挂機到正常需要檢查次數,fall從正常運作到挂掉需要檢查次數
cookie:為指定server設定cookie值,使後續請求定義到同一個伺服器
redir:重定向
weight:權重
實作動靜分離的例子,用以上知識能很好了解了,試着逐行去看看能不能看懂