2. HAProxy的配置
HAProxy配置中分成五部分內容,當然這些組件不是必選的,可以根據需要選擇部分作爲配置。
global:參數是進程級的,通常和操作系統(OS)相關。這些參數一般只設置一次,如果配置無誤,就不需要再次配置進行修改
defaults:配置默認參數的,這些參數可以被利用配置到frontend,backend,listen組件
frontend:接收請求的前端虛擬節點,Frontend可以根據規則直接指定具體使用後端的 backend(可動態選擇)。
backend:後端服務集羣的配置,是真實的服務器,一個Backend對應一個或者多個實體服務器。
listen:Frontend和Backend的組合體。
下面是HAProxy的一些常用的配置,這個配置是用來說明HAProxy的一些常用功能的配置,具體詳細配置請查看安裝目錄下的doc目錄下的文檔文件,或者到” http://cn.haproxy.org/”
下載中文配置說明文檔
配置文件例子:
global
#全局的日誌配置 其中日誌級別是[err warning info debug]
#local0 是日誌設備,必須爲如下24種標準syslog設備的一種:
#kern user mail daemon auth syslog lpr news
#uucp cron auth2 ftp ntp audit alert cron2
#local0 local1 local2 local3 local4 local5 local6 local7
#但是之前在/etc/syslog.conf文件中定義的是local0所以
#這裏也是用local0
log 127.0.0.1 local0 info #[err warning info debug]
#最大連接數
maxconn 4096
#用戶
user admin
#組
group admin
#使HAProxy進程進入後臺運行。這是推薦的運行模式
daemon
#創建4個進程進入deamon模式運行。此參數要求將運行模式設置爲"daemon"
nbproc 4
#將所有進程的pid寫入文件啓動進程的用戶必須有權限訪問此文件。
pidfile /home/admin/haproxy/logs/haproxy.pid
defaults
#默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
mode http
#採用http日誌格式
option httplog
#三次連接失敗就認爲是服務器不可用,也可以通過後面設置
retries 3
如果cookie寫入了serverId而客戶端不會刷新cookie,
#當serverId對應的服務器掛掉後,強制定向到其他健康的服務器
option redispatch
#當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接
option abortonclose
#默認的最大連接數
maxconn 4096
#連接超時
contimeout 5000
#客戶端超時
clitimeout 30000
#服務器超時
srvtimeout 30000
#=心跳檢測超時
timeout check 2000
#注:一些參數值爲時間,比如說timeout。時間值通常單位爲毫秒(ms),但是也可以通過加#後綴,來使用其他的單位。
#- us : microseconds. 1 microsecond = 1/1000000 second
#- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default.
#- s : seconds. 1s = 1000ms
#- m : minutes. 1m = 60s = 60000ms
#- h : hours. 1h = 60m = 3600s = 3600000ms
#- d : days. 1d = 24h = 1440m = 86400s = 86400000ms
########統計頁面配置############
listen admin_stats
#監聽端口
bind 0.0.0.0:1080
#http的7層模式
mode http
#日誌設置
log 127.0.0.1 local0 err #[err warning info debug]
#統計頁面自動刷新時間
stats refresh 30s
#統計頁面url
stats uri /admin?stats
#統計頁面密碼框上提示文本
stats realm Gemini\ Haproxy
#統計頁面用戶名和密碼設置
stats auth admin:admin
stats auth admin1:admin1
#隱藏統計頁面上HAProxy的版本信息
stats hide-version
#######網站檢測listen定義############
listen site_status
bind 0.0.0.0:1081
mode http
log 127.0.0.1 local0 err #[err warning info debug]
#網站健康檢測URL,用來檢測HAProxy管理的網站是否可以用,正常返回200,不正常返回500
monitor-uri /site_status
#定義網站down時的策略
#當掛在負載均衡上的指定backend的中有效機器數小於1臺時返回true
acl site_dead nbsrv(denali_server) lt 1
acl site_dead nbsrv(tm_server) lt 1
acl site_dead nbsrv(mms_server) lt 1
#當滿足策略的時候返回500
monitor fail if site_dead
#如果192.168.0.252或者192.168.0.31這兩天機器掛了
#認爲網站掛了,這時候返回500,判斷標準是如果mode是
#http返回200認爲是正常的,如果mode是tcp認爲端口暢通是好的
monitor-net 192.168.0.252/31
########frontend配置############
frontend http_80_in
#監聽端口
bind 0.0.0.0:80
#http的7層模式
mode http
#應用全局的日誌配置
log global
#啓用http的log
option httplog
#每次請求完畢後主動關閉http通道,HA-Proxy不支持keep-alive模式
option httpclose
#如果後端服務器需要獲得客戶端的真實IP需要配置次參數,將可以從Http Header中
#獲得客戶端IP
option forwardfor