配置Haproxy
1.解壓Haproxy到d:\haproxy
2.置haproxy.cfg文件
global log 127.0.0.1 local0 maxconn 1500 daemon defaults log 127.0.0.1 local3 mode http option httplog option dontlognull option redispatch retries 3 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen private_monitoring :18100 #監聽端口 mode http option httplog stats enable stats uri /stats stats refresh 5s
3.建一個run.bat,內容如下: haproxy.exe -f haproxy.cfg -d 。其中, -d會在窗口運行, -D則是后台程序,只能在任務管理器中
4.運行 haproxy -f haproxy.cfg.
5.檢測啟動是否成功。
Haproxy配置文件選項參數詳解
global
log 127.0.0.1 local0 info
#全局的日志配置,使用本機的syslog來記錄log,請使用/dev/log,其中日志級別是[err warning info debug].local0 是日志設備(/etc/syslog/conf中所定義),
#必須為如下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
maxconn 65536 #最大連接數
ulimit-n 131087 #必須是maxconn的兩倍以上
chroot /usr/local/haproxy #適用於chroot環境,為了安全
uid 99 #haproxy運行的用戶和組
gid 99
daemon #后台運行
nbproc 4 #設置4個並發進程,在做debug時建議設置為1
pidfile /usr/local/haproxy/logs/haproxy.pid #PID文件所在地
option nolinger #在連接關閉時立即清理連接,減少處於FIN_WAIT1狀態的連接
#debug
#quiet
defaults
log global
mode http #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
option httplog #啟用http請求log
option dontlognull
option http-server-close
option abortonclose #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接
option allbackups #但設置了backup的時候,默認第一個backup會優先,設置option allbackups后所有備份服務器權重一樣
option forwardfor #如果后端服務器需要獲得客戶端的真實IP需要配置次參數,將可以從Http Header中獲得客戶端IP
option redispatch #當serverId對應的服務器掛掉后,強制定向到其他健康的服務器
stats uri /admin/status #監控haproxy狀態的頁面,可以使用http://IP/admin/status查看
stats auth admin:admin@123 #登錄監控頁面的用戶名密碼
stats refresh 60s #監控頁面的刷新時間
retries 3 #三次連接失敗就認為是服務器不可用,也可以通過后面設置
maxconn 65536 #默認的最大連接數
contimeout 5000 #連接超時
clitimeout 50000 #客戶端超時
srvtimeout 50000 #服務器超時
frontend web_nginx #定義前端服務器,相當於F5里的VIP的概念
mode http
maxconn 65536
bind 192.168.32.30:80 #設定vip的監聽端口
bind-process 4 #針對多核處理,啟用處理器數量
acl php_nginx path_end .php #判斷文件后綴名是不是.php,如果是返回true
acl html_nginx path_end .html #判斷文件后綴名是不是.html,如果是返回true
use_backend php_backend if php_nginx #當滿足php_nginx策略時使用php_backend的backend
use_backend html_backend if html_nginx #當滿足html_nginx策略時使用html_backend的backend
backend php_backend
mode http
fullconn 4096 #設置最大連接
balance roundrobin #負載均衡的方式,roundrobin平均方式
option httpchk HEAD /check.php HTTP/1.0
#心跳檢查Haproxy會判斷你的后端web的根上存在check.txt沒有,以此作為haproxy-status的監控狀態依據,將它#掉即可;
#如果是生產環境,你可將check.php改為index.jsp或index.php即可。
#一般的健康檢查可以采用HEAD方法來做,而不是才采用GET方法,用於HEAD方法沒有數據返回,僅檢查Response的HEAD是不是200。相對來說,更快,而且更簡單
server node1 192.168.32.31:80 check inter 2s minconn 64 maxconn 2048 slowstart 10s weight 100
server node2 192.168.32.32:80 check inter 2s minconn 64 maxconn 2048 slowstart 10s weight 100
#服務器定義/ip/check inter啟用健康檢查,檢測心跳頻率/minconn最小連接數/maxconn最大連接數/slowstart至全速緩沖時間/weight
backend html_backend
mode http
fullconn 4096
balance roundrobin
cookie SERVERID #允許插入serverid到cookie中,serverid后面可以定義
option httpchk HEAD /check.html HTTP/1.0
server node2 192.168.32.32:80 cookie 2 check inter 2s rise 3 fall 3 weight 100
server node3 192.168.32.33:80 cookie 3 check inter 2s rise 3 fall 3 weight 100
#服務器定義,cookie 1表示serverid為1,check inter 2s 是檢測心跳頻率
#rise 3是3次正確認為服務器可用,fall 3是3次失敗認為服務器不可用,weight代表權重