一 Haproxy簡介javascript
1、HAProxy簡介
HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速而且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點一般又須要會話保持或七層處理。HAProxy運行在時下的硬件上,徹底能夠支持數以萬計的併發鏈接。而且它的運行模式使得它能夠很簡單安全的整合進您當前的架構中, 同時能夠保護你的web服務器不被暴露到網絡上。
HAProxy實現了一種事件驅動、單一進程模型,此模型支持很是大的併發鏈接數。多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,不多能處理數千併發鏈接。事件驅動模型由於在有更好的資源和時間管理的用戶端(User-Space) 實現全部這些任務,因此沒有這些問題。此模型的弊端是,在多核系統上,這些程序一般擴展性較差。這就是爲何他們必須進行優化以 使每一個CPU時間片(Cycle)作更多的工做。
————百度百科
Big O: 評判數據結構複雜度
O(1):
O(logN): 紅黑樹
O(n)
O(n^2)
O(2^n)
haproxy: 彈性二叉樹
數據結構:
Remote Desktop Protocol
Windows: 3389
HAProxy是免費、極速且可靠的用於爲TCP和基於HTTP應用程序提供高可用、負載均衡和代理服務的解決方案,尤爲適用於高負載且須要持久鏈接或7層處理機制的web站點。
HAProxy目前主要有兩個版本:
1.4——提供較好的彈性:衍生於1.2版本,並提供了額外的新特性,其中大多數是期待已久的。
客戶端側的長鏈接(client-side keep-alive)
TCP加速(TCP speedups)
響應池(response buffering)
RDP協議
基於源的粘性(source-based stickiness)
更好的統計數據接口(a much better stats interfaces)
更詳細的健康狀態檢測機制(more verbose health checks)
基於流量的健康評估機制(traffic-based health)
支持HTTP認證
服務器管理命令行接口(server management from the CLI)
基於ACL的持久性(ACL-based persistence)
日誌分析器
1.3——內容交換和超強負載:衍生於1.2版本,並提供了額外的新特性。
內容交換(content switching):基於任何請求標準挑選服務器池;
ACL:編寫內容交換規則;
負載均衡算法(load-balancing algorithms):更多的算法支持;
內容探測(content inspection):阻止非受權協議;
透明代理(transparent proxy):在Linux系統上容許使用客戶端IP直接連入服務器;
內核TCP拼接(kernel TCP splicing):無copy方式在客戶端和服務端之間轉發數據以實現數G級別的數據速率;
分層設計(layered design):分別實現套接字、TCP、HTTP處理以提供更好的健壯性、更快的處理機制及便捷的演進能力;
快速、公平調度器(fast and fair scheduler):爲某些任務指定優先級可實現理好的QoS;
會話速率限制(session rate limiting):適用於託管環境;
支持的平臺及OS:
x8六、x86_6四、Alpha、SPARC、MIPS及PARISC平臺上的Linux 2.4;
x8六、x86_6四、ARM (ixp425)及PPC64平臺上的Linux2.6;
UltraSPARC 2和3上的Sloaris 8/9;
Opteron和UltraSPARC平臺上的Solaris 10;
x86平臺上的FreeBSD 4.1-8;
i386, amd64, macppc, alpha, sparc64和VAX平臺上的OpenBSD 3.1-current;
若要得到最高性能,須要在Linux 2.6或打了epoll補丁的Linux 2.4上運行haproxy 1.2.5以上的版本。haproxy 1.1l默認使用的polling系統爲select(),其處理的文件數達數千個時性能便會急劇降低。1.2和1.3版本默認的爲poll(),在有些操做系統上可會也會有性能方面的問題,但在Solaris上表現至關不錯。HAProxy 1.3在Linux 2.6及打了epoll補丁的Linux 2.4上默認使用epoll,在FreeBSD上使用kqueue,這兩種機制在任何負載上都能提供恆定的性能表現。
在較新版本的Linux 2.6(>=2.6.27.19)上,HAProxy還可以使用splice()系統調用在接口間無複製地轉發任何數據,這甚至能夠達到10Gbps的性能。
基於以上事實,在x86或x86_64平臺上,要獲取最好性能的負載均衡器,建議按順序考慮如下方案。
Linux 2.6.32及以後版本上運行HAProxy 1.4;
打了epoll補丁的Linux 2.4上運行HAProxy 1.4;
FreeBSD上運行HAProxy 1.4;
Solaris 10上運行HAProxy 1.4;
性能
HAProxy藉助於OS上幾種常見的技術來實現性能的最大化。
單進程、事件驅動模型顯著下降了上下文切換的開銷及內存佔用。
O(1)事件檢查器(event checker)容許其在高併發鏈接中對任何鏈接的任何事件實現即時探測。
在任何可用的狀況下,單緩衝(single buffering)機制能以不復制任何數據的方式完成讀寫操做,這會節約大量的CPU時鐘週期及內存帶寬;
藉助於Linux 2.6 (>= 2.6.27.19)上的splice()系統調用,HAProxy能夠實現零複製轉發(Zero-copy forwarding),在Linux 3.5及以上的OS中還能夠實現零複製啓動(zero-starting);
內存分配器在固定大小的內存池中可實現即時內存分配,這可以顯著減小建立一個會話的時長;
樹型存儲:側重於使用做者多年前開發的彈性二叉樹,實現了以O(log(N))的低開銷來保持計時器命令、保持運行隊列命令及管理輪詢及最少鏈接隊列;
優化的HTTP首部分析:優化的首部分析功能避免了在HTTP首部分析過程當中重讀任何內存區域;
精心地下降了昂貴的系統調用,大部分工做都在用戶空間完成,如時間讀取、緩衝聚合及文件描述符的啓用和禁用等;
全部的這些細微之處的優化實現了在中等規模負載之上依然有着至關低的CPU負載,甚至於在很是高的負載場景中,5%的用戶空間佔用率和95%的系統空間佔用率也是很是廣泛的現象,這意味着HAProxy進程消耗比系統空間消耗低20倍以上。所以,對OS進行性能調優是很是重要的。即便用戶空間的佔用率提升一倍,其CPU佔用率也僅爲10%,這也解釋了爲什麼7層處理對性能影響有限這一現象。由此,在高端系統上HAProxy的7層性能可輕易超過硬件負載均衡設備。
在生產環境中,在7層處理上使用HAProxy做爲昂貴的高端硬件負載均衡設備故障故障時的緊急解決方案也時長可見。硬件負載均衡設備在「報文」級別處理請求,這在支持跨報文請求(request across multiple packets)有着較高的難度,而且它們不緩衝任何數據,所以有着較長的響應時間。對應地,軟件負載均衡設備使用TCP緩衝,可創建極長的請求,且有着較大的響應時間。
能夠從三個因素來評估負載均衡器的性能:
會話率
會話併發能力
數據率
二. Haproxy 安裝配置css
haproxy 配置主要分爲兩大部分,4個虛擬節點
[global]:全局配置段,進程級別與進程管理及安全相關及性能調整相關的參數。
[proxy]
- defaults:配置默認參數,這些參數能夠被用到frontend,backend,Listen段
- frontend:接受請求的前端虛擬節點,定義一些和客戶端請求相關的參數,可使用use_backend調用backend節點集羣
- backend:後端服務集羣的配置,定義一些和後端真正提供服務的主機相關的一些參數
- listen:frontend和backend的結合體,不能使用use_backend 調用backend節點集羣
1. 下載並編譯安裝
shell>wget -c http://www.haproxy.org/download/1.6/src/haproxy-1.6.9.tar.gz -P /usr/local/src/
shell>cd /usr/local/src
shell>tar xfv haproxy-1.6.9.tar.gz
shell>mkdir /usr/local/haproxy
shell>cd haproxy-1.6.9
shell>vim README
#執行make的時候參數介紹:TARGET,ARCH,PREFIX
TARGET:內核版本控制
- linux22 for Linux 2.2
- linux24 for Linux 2.4 and above (default)
- linux24e for Linux 2.4 with support for a working epoll (> 0.21)
- linux26 for Linux 2.6 and above
- linux2628 for Linux 2.6.28, 3.x, and above (enables splice and tproxy)
html
ARCH:cpu架構前端
i386,i486,i586,i686,x86_64java
shell>yum install gcc openssl-devel pcre-devel zlib-devel -y # 安裝依賴包mysql
shell>make TARGET=linux26 ARCH=x86_x64 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy # 須要根據本身的操做系統環境自行修改
shell>make install PREFIX=/usr/local/haproxy
2. 提供配置文件
默認源碼安裝haproxy不提供配置文件,但在其解壓目錄examples下會提供相關haproxy的實例配置,但有的版本的源碼haproxy實例配置不是很全面,最笨的
辦法是使用yum安裝rpm包格式的haproxy,而後複製其配置文件件做爲參考,而後再將其卸載。此處提供一個簡單框架的haproxy配置模板實例,詳細的配置請參考官網
http://cbonte.github.io/haproxy-dconv/1.6/configuration.html
shell>cp -ra /usr/local/src/haproxy-1.6.9/examples /usr/local/haproxy ## 複製解壓目錄下的examples目錄到安裝目錄下,之後可能會用到
shell>mkdir /usr/local/haproxy/conf
haproxy配置文件及簡單參數說明:
########################[全局配置]##########################
global
# 日誌輸出配置,全部日誌都記錄在本機,經過local3輸出
log 127.0.0.1 local3
# 設定每一個haproxy進程所接受的最大併發鏈接數,須要參考ulimit -n
maxconn 4096
# ulimit 文件描述符數量
#ulimit-n 819200
#chroot /usr/share/haproxy
# 運行haproxy用戶
user haproxy
# 運行haproxy用戶組
group haproxy
# 之後臺形式運行haproxy
daemon
# 設置進程數量
nbproc 1
# 設置haproxy進程的pid文件路徑
pidfile /usr/local/haproxy/var/haproxy.pid
# haproxy 調試級別,建議只在開啓單進程的時候調試
#debug
#quiet
####################[默認配置]################################
defaults
# 日誌使用全局配置
log global
# haproxy工做模式{tcp|http|health},tcp4層,http7層,health只返回OK
mode http
# 日誌類別,採用httplog
option httplog
# 不記錄請求報文包體數據爲空的請求到日誌,好比健康檢查,減小寫磁盤IO
option dontlognull
# 三次鏈接失敗就認爲服務器不可達,也能夠經過後面設置
retries 3
# 容許在發往服務器的請求首部中插入「X-Forwarded-For」首部,用於後端主機記錄真實請求的客戶端ip
option forwardfor except 127.0.0.0/8
# 每次請求完畢後主動關閉http通道,haproxy不支持keep-alive,只能經過模擬實現
option httpclose
# 當server id對應的服務器掛掉後,強制定向到其餘健康的後端服務器,之後將不支持
option redispatch
# 當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接
option abortonclose
# 默認的最大鏈接數
maxconn 4096
# 鏈接超時
timeout connect 5000ms
# 客戶端請求超時
timeout client 30000ms
# 服務端響應超時
timeout server 30000ms
# 心跳檢測超時
timeout check 2000
# 持久鏈接超時時間
timeout http-keep-alive 10s
# http請求超時時間
timeout http-request 10s
# 默認隊列超時時間
timeout queue 1m
# 設置默認負載均衡算法{roundrobin|source|leastconn...}
balance roundrobin
###########################[統計頁面]############################
listen admin_stats
# 設置統計頁面監聽的套接字,listen虛擬節點爲frontend和backend的專有通道
bind 0.0.0.0:10800
# 設置統計頁面工做模式
mode http
# 啓用狀態頁面功能
stats enable
# 採用http日誌格式
option httplog
# 是否開啓錯誤日誌並記錄
#log 127.0.0.1 local err
# 設置訪問統計頁面的最大鏈接數
maxconn 10
# 設置統計頁面的自動刷新時間
stats refresh 30s
# 訪問統計頁面的url
stats uri /stats
# 登陸統計頁面時的提示信息
stats realm DongPing\ Haproxy
# 設置統計頁面的用戶認證,能夠設置多個用戶名
stats auth admin:admin
# 隱藏統計頁面上Haproxy的版本信息
stats hide-version
# 設置haproxy管理頁面能夠執行一些特權動做,好比下線後端主機
stats admin if TRUE
##########################[設置haproxy 錯誤頁面]##########################
errorfile 403 /usr/local/haproxy/errorfiles/403.http
errorfile 500 /usr/local/haproxy/errorfiles/500.http
errorfile 502 /usr/local/haproxy/errorfiles/502.http
errorfile 503 /usr/local/haproxy/errorfiles/503.http
errorfile 504 /usr/local/haproxy/errorfiles/504.http
#########################[Frontend 前端配置]##############################
frontend http-proxy
# 定義使用的套接字
bind *:80
# 抓取請求報文首部字段爲Host,Referer的值到haproxy日誌中
capture request header Host len 20
capture request header Referer len 60
capture request header User-agent len 60
capture request header X-Forward-For len 60
# 定義一個acl規則,匹配以/{static|images|javascript|stylesheets}開頭的靜態資源
acl url_static path_beg -i /static /images /javascript /stylesheets
# 定義一個acl規則,匹配以\.{jpg|jpeg|gif|png|css|js}結尾的靜態資源
acl url_static path_end -i .jpg .jpeg .gif .png .css .js
# 若是被url_static這條acl規則匹配由後端集羣static_servers進行分發
use_backend static_servers if url_static
# 定義請求不匹配全部規則時默認轉發到的後端主機
default_backend dynamic_servers
##########################[backend 後端配置]###########################################
# 定義一組動態資源主機
backend dynamic_servers
# 定義haproxy工做模式
mode http
# 定義負載均衡算法
balance roundrobin
# 健康檢查
option httpchk /check.jsp HTTP/1.0
# 使用基於cookie粘性的負載均衡算法
cookie SERVERID insert indirect nocache
# 定義鏈接後端主機的一些策略
# server name ip:port /表示後端一臺主機,name必須給出
# cookie name /設置插入的cookie信息
# check inter 2000 /使用check關鍵字表示對後端主機檢測,inter 2000表示檢測時間間隔爲2s
# weight /表示權重
# rise /表示檢測兩次正確,則認爲服務器可用(服務從故障到正常)
# fall /表示檢測三次失敗,則認爲服務器不可用(服務器從正常到故障)
# backup /表示備用主機
server webapp_01 192.168.3.84:8080 cookie srv1 weight 2 check inter 2000 rise 2 fall 3
server webapp_02 192.168.3.84:8081 cookie srv2 weight 2 check inter 2000 rise 2 fall 3
# 定義一個sorryserver,當全部後端主機不可訪問時,請求調度到此主機上
server webapp_3 192.168.3.83:8080 backup check inter 2000 rise 2 fall 3
# 定義一組靜態資源主機
backend static_servers
mode http
option httpchk /check.html
balance roundrobin
server static_01 192.168.3.84:80 check inter 2000 fall 3
server static_02 192.168.3.84:81 check inter 2000 fall 3
#######################[tcp配置]#########################################
listen mysql
bind 0.0.0.0:3306
balance leastconn
mode tcp
log global
option tcplog
maxconn 4096
#log 127.0.0.1 local0 debug
server dbsrv_01 192.168.3.84:3306 weight 1 check port 3306 inter 2000 rise 1 fall 2 maxconn 300
server dbsrv_02 192.168.3.84:3307 weight 1 check port 3307 inter 2000 rise 1 fall 2 maxconn 300
說明:複製上面內容,並根據具體環境修改後保存到conf下,並命名爲haproxy.cfglinux
3.提供錯誤頁面,若是不把錯誤頁面放到配置文件定義的目錄裏,啓動haproxy將報錯git
shell>cd /usr/local/haproxygithub
shell>cp -ra examples/errorfiles .web
4.提供運行haproxy進程的用戶和組
shell>userdd -r -s /sbin/nologin haproxy
三.提供haproxy日誌,默認haproxy沒有提供本身的日誌文件,經過配置能夠把haproxy日誌經過rsyslog輸出到指定文件
1.須要在haproxy配置文件添加日誌輸出,只需添加如下命令便可 vim conf/haproxy.cfg
2.修改rsyslog相關配置,使其能接受haproxy產生的日誌
# 查看下rsyslog主配置
圖一
圖二
圖三
從圖一能夠看到經過兩個變量就能夠開啓udp日誌接受
從圖二能夠看到name.none的意思爲不記錄來自name的日誌到指定文件
從圖三能夠看到主配置文件容許在rsyslog.d 建立配置文件
因此能夠在/etc/rsyslog.d/ 建立haproxy本身的配置,方便之後的修改和管理
shell>vim /etc/rsyslog.d/haproxy.conf
1).複製圖一中(/etc/rsyslog.conf)的三行到 /etc/rsyslog.d/haproxy.conf,修改以下
注意:日誌輸出的文件路徑很重要,必定要讓運行haproxy進程的用戶對此文件有寫權限,不然日誌不會生效
2).修改 SYSLOGD_OPTIONS 參數的值
shell>vim /etc/sysconfig/rsyslog
#SYSLOGD_OPTIONS="-c 5" # 原來的配置註銷
# -c 2 使用兼容模式,默認是-c 5
# -r 開啓遠程日誌
# -m 0 標記時間戳。單位是分鐘,爲0時,表示禁用該功能
SYSLOGD_OPTIONS="-c 2 -r -m 0" # 修改後的配置
3).修改rsyslog的主配置文件使其不記錄haproxy的日誌到/var/log/messages,若是不修改會記錄兩份同樣的haproxy日誌
shell>vim /etc/rsyslog.conf
只需在箭頭處追加haproxy配置文件中定義的日誌來源爲local3.none(具體爲local幾須要根據haproxy配置的相對應)
4).重啓日誌服務,使其重讀配置文件
shell>/etc/init.d/rsyslog restart
四.啓動haproxy
1 #!/bin/bash 2 # 3 # haproxy 4 # 5 # chkconfig: 35 85 15 6 # description: HAProxy is a free, very fast and reliable solution \ 7 # offering high availability, load balancing, and \ 8 # proxying for TCP and HTTP-based applications 9 # processname: haproxy 10 # config: /etc/haproxy.cfg 11 # pidfile: /var/run/haproxy.pid 12 13 # Source function library. 14 . /etc/rc.d/init.d/functions 15 16 # Source networking configuration. 17 . /etc/sysconfig/network 18 19 # Check that networking is up. 20 [ "$NETWORKING" = "no" ] && exit 0 21 22 config="/usr/local/haproxy/conf/haproxy.cfg" 23 exec="/usr/local/haproxy/sbin/haproxy" 24 prog=$(basename $exec) 25 26 [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog 27 28 lockfile=/var/lock/subsys/haproxy 29 30 check() { 31 $exec -c -V -f $config 32 } 33 34 start() { 35 $exec -c -q -f $config 36 if [ $? -ne 0 ]; then 37 echo "Errors in configuration file, check with $prog check." 38 return 1 39 fi 40 41 echo -n $"Starting $prog: " 42 # start it up here, usually something like "daemon $exec" 43 daemon $exec -D -f $config -p /var/run/$prog.pid 44 retval=$? 45 echo 46 [ $retval -eq 0 ] && touch $lockfile 47 return $retval 48 } 49 50 stop() { 51 echo -n $"Stopping $prog: " 52 # stop it here, often "killproc $prog" 53 killproc $prog 54 retval=$? 55 echo 56 [ $retval -eq 0 ] && rm -f $lockfile 57 return $retval 58 } 59 60 restart() { 61 $exec -c -q -f $config 62 if [ $? -ne 0 ]; then 63 echo "Errors in configuration file, check with $prog check." 64 return 1 65 fi 66 stop 67 start 68 } 69 70 reload() { 71 $exec -c -q -f $config 72 if [ $? -ne 0 ]; then 73 echo "Errors in configuration file, check with $prog check." 74 return 1 75 fi 76 echo -n $"Reloading $prog: " 77 $exec -D -f $config -p /var/run/$prog.pid -sf $(cat /var/run/$prog.pid) 78 retval=$? 79 echo 80 return $retval 81 } 82 83 force_reload() { 84 restart 85 } 86 87 fdr_status() { 88 status $prog 89 } 90 91 case "$1" in 92 start|stop|restart|reload) 93 $1 94 ;; 95 force-reload) 96 force_reload 97 ;; 98 checkconfig) 99 check 100 ;; 101 status) 102 fdr_status 103 ;; 104 condrestart|try-restart) 105 [ ! -f $lockfile ] || restart 106 ;; 107 *) 108 echo $"Usage: $0 {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}" 109 exit 2 110 esac
shell>chkconfig --level 35 haproxy on ## 加入開機自啓動
shell>/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy
注意:假如沒有配置後端主機,haproxy啓動的時候會警告,但不影響haproxy使用
說明 重啓haproxy命令
shell>/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy -st `pidof haproxy`
五.測試
shell>curl -I localhost:10800
shell>netstat -lntup | grep -i "haproxy"
六.日誌
shell>tailf /var/log/haproxy.log
1.使用capture request header 命令抓取後的haproxy輸出日誌
說明:{}中的字符串即爲capture後的結果,使用|分開,請求報文首部沒有此抓取的首部則留空
2.沒有使用capture request head 命令的haproxy輸出日誌
註釋掉capture
shell>/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -c #語法檢測
shell>/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -st `pidof haproxy`
shell>curl -I localhost:80
七.監控統計管理頁面,haproxy的統計頁能夠實現強大的管理功能,最經常使用的就是軟下線後端主機
訪問 http://192.168.3.83:10080/stats
至此,haproxy簡單的安裝部署就先介紹到這裏。後續具體使用請參考接下來的博客,小餓小困喝點香飄飄奶茶~~
1 global 2 maxconn 10000 3 chroot /usr/local/haproxy 4 uid 500 5 gid 500 6 daemon 7 quiet 8 nbproc 1 9 pidfile /usr/local/haproxy/haproxy.pid 10 stats socket /usr/local/haproxy/haproxy.sock mode 666 level admin 11 stats timeout 2m 12 ################################默認設置##################################### 13 14 defaults 15 log global 16 log 127.0.0.1 local3 info 17 mode http 18 option httplog 19 # option dontlognull 20 option redispatch 21 option abortonclose 22 stats refresh 30 23 retries 3 24 25 balance roundrobin 26 # balance source 27 # balance leastconn 28 29 maxconn 5000 30 contimeout 5000 31 clitimeout 50000 32 srvtimeout 50000 33 timeout check 2000 34 errorfile 403 /usr/local/haproxy/html/errorpage/403.html 35 errorfile 401 /usr/local/haproxy/html/errorpage/403.html 36 37 option httpclose 38 option forceclose 39 option http-server-close 40 option forwardfor except 127.0.0.1 header Client-RealIP 41 42 ###################################ACL及backend設置################################### 43 44 frontend http-in 45 46 bind *:80 47 ## 頁面引用設定,同源網站可引用 48 rspadd X-Frame-Options:\ SAMEORIGIN 49 50 # 定義acl 訪問控制 51 acl manage_gydf hdr_beg(host) -i manage.gydf.com.cn 52 acl api_gydf hdr_beg(host) -i api.gydf.com.cn 53 acl image_gydf hdr_beg(host) -i image.gydf.com.cn 54 acl zgc_gydf hdr_beg(host) -i zgc.gydf.com.cn 55 acl msg_sbj hdr_beg(host) -i msg.shibaoj.com 56 acl sso hdr_beg(host) -i sso.huaxinhengchang.com 57 # acl hdapi hdr_beg(host) -i hdapi.huaxinhengchang.com 58 acl dpms hdr_beg(host) -i dpms.huaxinhengchang.com 59 acl area hdr_beg(host) -i area.huaxinhengchang.com 60 acl vp hdr_beg(host) -i vp.huaxinhengchang.com 61 acl pifa hdr_beg(host) -i pifa.dongpi.com 62 acl app hdr_beg(host) -i app.dongpi.com 63 acl xpifa hdr_beg(host) -i xpifa.dongpi.com 64 acl druid_Directory path_beg -i /druid/ 65 acl goodsSearch path_beg -i /search/demo/ 66 acl goodsSearch_html path_end -i goodsSearch.htm 67 #acl dpms_ip src 121.69.31.48/30 121.69.26.88/30 211.103.246.200/29 211.103.246.202/32 192.168.95.0/24 118.26.132.192/27 111.203.253.224/28 68 acl dpms_ip src 192.168.95.0/24 182.50.125.96/27 124.205.174.18/30 118.187.32.248/32 69 # acl hdapi_ip src 192.168.95.0/24 121.69.31.50/32 70 #acl goodsSearch_ip src 121.69.31.48/30 192.168.95.0/24 71 acl goodsSearch_ip src 182.50.125.96/27 192.168.95.0/24 124.205.174.18/30 118.187.32.248/32 72 block if druid_Directory 73 block if dpms !dpms_ip 74 # block if hdapi !hdapi_ip 75 block if goodsSearch goodsSearch_html !goodsSearch_ip 76 77 use_backend manage.gydf.com.cn if manage_gydf || image_gydf 78 use_backend api.gydf.com.cn if api_gydf 79 use_backend zgc.gydf.com.cn:80 if zgc_gydf 80 use_backend msg.shibaoj.com:80 if msg_sbj 81 use_backend sso.huaxinhengchang.com if sso 82 use_backend dpms.huaxinhengchang.com if dpms 83 use_backend area.huaxinhengchang.com if area 84 use_backend vp.huaxinhengchang.com if vp 85 # use_backend pifa.dongpi.com if pifa 86 # use_backend app.dongpi.com if app 87 # use_backend xpifa80.dongpi.com if xpifa 88 default_backend sso.huaxinhengchang.com 89 90 frontend https-in 91 bind *:443 92 mode tcp 93 acl https_gydf dst 192.168.95.180/32 94 acl https_sbj dst 192.168.95.184/32 95 96 use_backend zgc.gydf.com.cn:443 if https_gydf 97 use_backend msg.shibaoj.com:443 if https_sbj 98 default_backend zgc.gydf.com.cn:443 99 100 ##############################sso.dongpi.com域名負載################################### 101 backend sso.huaxinhengchang.com 102 mode http 103 balance leastconn 104 cookie SERVERID 105 option httpchk GET /test/cdo.jsp 106 option httpclose 107 option forwardfor 108 server BUS-15 192.168.95.15:80 cookie BUS-15 check inter 5000 fall 3 rise 2 weight 1 109 server BUS-16 192.168.95.16:80 cookie BUS-16 check inter 5000 fall 3 rise 2 weight 1 110 111 #########################dpms.dongpi.com域名負載################################### 112 backend dpms.huaxinhengchang.com 113 mode http 114 balance leastconn 115 option httpchk GET /test/cdo.jsp 116 option httpclose 117 option forwardfor 118 server BUS-15 192.168.95.15:80 cookie 1 check inter 5000 fall 3 rise 2 weight 1 119 server BUS-16 192.168.95.16:80 cookie 2 check inter 5000 fall 3 rise 2 weight 1 120 121 #########################area.dongpi.com域名負載################################### 122 backend area.huaxinhengchang.com 123 mode http 124 balance leastconn 125 option httpchk GET /test/cdo.jsp 126 option httpclose 127 option forwardfor 128 server BUS-15 192.168.95.15:80 cookie 1 check inter 5000 fall 3 rise 2 weight 1 129 server BUS-16 192.168.95.16:80 cookie 2 check inter 5000 fall 3 rise 2 weight 1 130 131 #########################vp.dongpi.com域名負載################################### 132 backend vp.huaxinhengchang.com 133 mode http 134 balance leastconn 135 option httpchk GET /test/cdo.jsp 136 option httpclose 137 option forwardfor 138 server BUS-15 192.168.95.15:80 cookie 1 check inter 5000 fall 3 rise 2 weight 1 139 server BUS-16 192.168.95.16:80 cookie 2 check inter 5000 fall 3 rise 2 weight 1 140 141 #########################pifa.dongpi.com域名負載################################### 142 #backend pifa.dongpi.com 143 # mode http 144 # balance leastconn 145 # option httpchk GET /errorpage/404.html 146 # option httpclose 147 # option forwardfor 148 # server BUS-164 192.168.95.164:80 cookie BUS-15 check inter 5000 fall 3 rise 2 weight 1 149 # server BUS-165 192.168.95.165:80 cookie BUS-16 check inter 5000 fall 3 rise 2 weight 1 150 # 151 #########################xpifa.dongpi.com 80域名負載################################### 152 #backend xpifa80.dongpi.com 153 # mode http 154 # balance leastconn 155 # option httpchk GET /errorpage/404.html 156 # option httpclose 157 # option forwardfor 158 # server BUS-164 192.168.95.164:80 cookie BUS-15 check inter 5000 fall 3 rise 2 weight 1 159 # server BUS-165 192.168.95.165:80 cookie BUS-16 check inter 5000 fall 3 rise 2 weight 1 160 161 #########################xpifa.dongpi.com 443域名負載################################### 162 #backend xpifa.dongpi.com 163 # mode tcp 164 # balance roundrobin 165 # option ssl-hello-chk 166 # server BUS-164 192.168.95.164:443 167 # server BUS-165 192.168.95.165:443 168 169 #########################manage.gydf.com.cn 80域名負載################################### 170 backend manage.gydf.com.cn 171 mode http 172 balance leastconn 173 option httpchk GET /chkrs_alive.jsp 174 option httpclose 175 option forwardfor 176 server SBJ-164 192.168.95.164:80 cookie SBJ-164 check inter 5000 fall 3 rise 2 weight 1 177 server SBJ-165 192.168.95.165:80 cookie SBJ-165 check inter 5000 fall 3 rise 2 weight 1 178 179 #########################api.gydf.com.cn 80域名負載################################### 180 backend api.gydf.com.cn 181 mode http 182 balance leastconn 183 option httpchk GET /chkrs_alive.jsp 184 option httpclose 185 option forwardfor 186 server SBJ-164 192.168.95.164:80 cookie SBJ-164 check inter 5000 fall 3 rise 2 weight 1 187 server SBJ-165 192.168.95.165:80 cookie SBJ-165 check inter 5000 fall 3 rise 2 weight 1 188 189 #########################zgc.gydf.com.cn 80域名負載################################### 190 backend zgc.gydf.com.cn:80 191 mode http 192 balance leastconn 193 option httpchk GET /chkrs_alive.jsp 194 option httpclose 195 option forwardfor 196 server SBJ-164 192.168.95.164:80 cookie SBJ-164 check inter 5000 fall 3 rise 2 weight 1 197 server SBJ-165 192.168.95.165:80 cookie SBJ-165 check inter 5000 fall 3 rise 2 weight 1 198 199 #########################zgc.gydf.com.cn 443域名負載################################### 200 backend zgc.gydf.com.cn:443 201 mode tcp 202 balance roundrobin 203 option ssl-hello-chk 204 stick-table type ip size 200k expire 30m 205 stick on src 206 server SBJ-164 192.168.95.164:443 207 server SBJ-165 192.168.95.165:443 208 209 #########################msg.shibaoj.com 80域名負載################################### 210 backend msg.shibaoj.com:80 211 mode http 212 balance source 213 option httpchk GET /chkrs_alive.jsp 214 option httpclose 215 option forwardfor 216 server WS-80 192.168.95.80:80 cookie WS-80 check inter 5000 fall 3 rise 2 weight 1 217 server WS-84 192.168.95.84:80 cookie WS-84 check inter 5000 fall 3 rise 2 weight 1 218 219 #########################msg.shibaoj.com 443域名負載################################### 220 backend msg.shibaoj.com:443 221 mode tcp 222 balance leastconn 223 option ssl-hello-chk 224 stick-table type ip size 200k expire 30m 225 stick on src 226 server WS-80 192.168.95.80:443 227 server WS-84 192.168.95.84:443 228 229 230 #########################app.dongpi.com域名負載################################### 231 #backend app.dongpi.com 232 # mode http 233 # balance leastconn 234 # option httpchk GET /errorpage/404.html 235 # option httpclose 236 # option forwardfor 237 # server BUS-164 192.168.95.164:80 cookie BUS-15 check inter 5000 fall 3 rise 2 weight 1 238 # server BUS-165 192.168.95.165:80 cookie BUS-16 check inter 5000 fall 3 rise 2 weight 1 239 240 ################################監控頁面的設置########################################## 241 listen status 242 bind *:8888 #監聽端口 243 stats enable 244 stats uri /status #監控頁面的url 245 stats auth admin:admin123 #監控頁面的用戶和密碼admin,能夠設置多個用戶名 246 stats realm Haproxy\ statistic #監控頁面的提示信息 247 stats admin if TRUE #手工啓用/禁用,後端服務器(haproxy-1.4.9之後版本) 248 stats hide-version #隱藏統計頁面上的haproxy版本信息