一、Haproxy的簡介
Haproxy的官網站點:http://haproxy.com/
HAProxy提供高可用性、負載均衡以及基于TCP和HTTP應用的代 理,支援虛拟主機,它是免費、快速并且可靠的一種解決方案。HAProxy特别适用于那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運作在目前的硬體上,完全可以支援數以萬計的并發連接配接。并且它的運作模式使得它可以很簡單安全的整合進您目前的架構中, 同時可以保護你的web伺服器不被暴露到網絡上。
HAProxy實作了一種事件驅動, 單一程序模型,此模型支援非常大的并發連接配接數。多程序或多線程模型受記憶體限制 、系統排程器限制以及無處不在的鎖限制,很少能處理數千并發連接配接。事件驅動模型因為在有更好的資源和時間管理的使用者端(User-Space) 實作所有這些任務,是以沒有這些問題。此模型的弊端是,在多核系統上,這些程式通常擴充性較差。這就是為什麼他們必須進行優化以 使每個CPU時間片(Cycle)做更多的工作。
二、Haproxy的工作模式
大緻的意思就是:可以分為兩部分,
第一部分是網際網路,包括網際網路上衆多的路由裝置、Firewall等;
第二部分是本地的網絡架構,包括Firewall,proxy、Web server,Database等
Haproxy的注釋Local balanceer in proxy mode -- 工作在代理模下是一個負載均衡的功能
通過Haproxy代理後端的Web server群集,如果需要與資料庫互動,有Web server與Database建立連接配接。
三、Haproxy的安裝和配置說明
CentOS 6.5系統中yum源提供的Haproxy的版本為1.5.18,在這裡我們直接用yum安裝
1、安裝haproxy
<code>yum </code><code>install</code> <code>haproxy -y</code>
<code>rpm -ql haproxy </code><code>#可以檢視yum安裝Haproxy生成了哪些檔案</code>
<code>/etc/haproxy</code>
<code>/etc/haproxy/haproxy</code><code>.cfg </code><code>#haproxy的配置檔案</code>
<code>/etc/logrotate</code><code>.d</code><code>/haproxy</code>
<code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/haproxy</code> <code>#haproxy的服務腳本檔案</code>
<code>/etc/sysconfig/haproxy</code>
<code>/usr/bin/halog</code>
<code>/usr/bin/iprange</code>
<code>/usr/sbin/haproxy</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/CHANGELOG</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/LICENSE</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/README</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/acl-content-sw</code><code>.cfg</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/acl</code><code>.fig</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/architecture</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/close-options</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/coding-style</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/configuration</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/content-sw-sample</code><code>.cfg</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/cookie-options</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/cttproxy-src</code><code>.cfg</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/backends-v0</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/backends</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/be-fe-changes</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/binding-possibilities</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/buffer-redesign</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/buffers</code><code>.fig</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/config-language</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/connection-reuse</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/cttproxy-changes</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/entities-v2</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/how-it-works</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/http_load_time</code><code>.url</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/rate-shaping</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/design-thoughts/sess_par_sec</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/gpl</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/haproxy-en</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/haproxy-fr</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/haproxy</code><code>.1</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/haproxy</code><code>.cfg</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/acl</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/body-parsing</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/buffer-operations</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/buffer-ops</code><code>.fig</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/connect-status</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/connection-header</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/connection-scale</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/entities</code><code>.fig</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/entities</code><code>.pdf</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/entities</code><code>.svg</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/entities</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/hashing</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/header-parser-speed</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/header-tree</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/http-cookies</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/http-docs</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/http-parsing</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/naming</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/pattern</code><code>.dia</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/pattern</code><code>.pdf</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/polling-states</code><code>.fig</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/repartition-be-fe-fi</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/sequence</code><code>.fig</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/stats-v2</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/stream-sock-states</code><code>.fig</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/internals/todo</code><code>.cttproxy</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/lgpl</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/proxy-protocol</code><code>.txt</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/queuing</code><code>.fig</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/tarpit</code><code>.cfg</code>
<code>/usr/share/doc/haproxy-1</code><code>.5.18</code><code>/url-switching</code><code>.cfg</code>
<code>/usr/share/haproxy</code>
<code>/usr/share/haproxy/400</code><code>.http </code><code>#400錯誤的狀态碼頁面</code>
<code>/usr/share/haproxy/403</code><code>.http </code><code>#403錯誤的狀态碼頁面</code>
<code>/usr/share/haproxy/408</code><code>.http </code><code>#408錯誤的狀态碼頁面</code>
<code>/usr/share/haproxy/500</code><code>.http </code><code>#500錯誤的狀态碼頁面</code>
<code>/usr/share/haproxy/502</code><code>.http </code><code>#502錯誤的狀态碼頁面</code>
<code>/usr/share/haproxy/503</code><code>.http </code><code>#503錯誤的狀态碼頁面</code>
<code>/usr/share/haproxy/504</code><code>.http </code><code>#504錯誤的狀态碼頁面</code>
<code>/usr/share/haproxy/README</code>
<code>/usr/share/man/man1/halog</code><code>.1.gz </code><code>#可以直接使用man halog檢視指令的使用文法</code>
<code>/usr/share/man/man1/haproxy</code><code>.1.gz </code><code>#可以直接使用man haproxy檢視指令的使用文法</code>
<code>/var/lib/haproxy</code>
2、haproxy的配置檔案說明
<code># cd /etc/haproxy/</code>
<code># cp haproxy.cfg haproxy.cfg.bak</code>
<code># vim haproxy.cfg</code>
<code>**********************************************************************</code>
<code>#---------------------------------------------------------------------</code>
<code># Example configuration for a possible web application. See the</code>
<code># full configuration options online.</code>
<code>#</code>
<code># http://haproxy.1wt.eu/download/1.4/doc/configuration.txt</code>
<code> </code>
<code># Global settings </code>
<code>global </code><code>#全局配置檔案</code>
<code> </code><code># to have these messages end up in /var/log/haproxy.log you will</code>
<code> </code><code># need to: #配置日志</code>
<code> </code><code>#</code>
<code> </code><code># 1) configure syslog to accept network log events. This is done</code>
<code> </code><code># by adding the '-r' option to the SYSLOGD_OPTIONS in</code>
<code> </code><code># /etc/sysconfig/syslog #修改syslog配置檔案</code>
<code> </code><code># 2) configure local2 events to go to the /var/log/haproxy.log</code>
<code> </code><code># file. A line like the following can be added to</code>
<code> </code><code># /etc/sysconfig/syslog #定義日志裝置</code>
<code> </code><code># local2.* /var/log/haproxy.log</code>
<code> </code><code>log 127.0.0.1 local2 </code><code>#日志配置,所有的日志都記錄本地,通過local2輸出</code>
<code> </code><code>chroot </code><code>/var/lib/haproxy</code> <code>#改變haproxy的工作目錄</code>
<code> </code><code>pidfile </code><code>/var/run/haproxy</code><code>.pid </code><code>#指定pid檔案的路徑</code>
<code> </code><code>maxconn 4000 </code><code>#最大連接配接數的設定</code>
<code> </code><code>user haproxy </code><code>#指定運作服務的使用者</code>
<code> </code><code>group haproxy </code><code>#指定運作服務的使用者組</code>
<code> </code><code>daemon</code>
<code> </code><code># turn on stats unix socket</code>
<code> </code><code>stats socket </code><code>/var/lib/haproxy/stats</code>
<code># common defaults that all the 'listen' and 'backend' sections will</code>
<code># use if not designated in their block</code>
<code>defaults</code>
<code> </code>
<code> </code><code>mode http </code><code>#預設使用協定,可以為{http|tcp|health} http:是七層協定 tcp:是四層 health:隻傳回OK</code>
<code> </code><code>log global </code><code>#全局日志記錄</code>
<code> </code><code>option httplog </code><code>#詳細記錄http日志</code>
<code> </code><code>option dontlognull </code><code>#不記錄空日志</code>
<code> </code><code>option http-server-close </code><code>#啟用http-server-close</code>
<code> </code><code>option forwardfor except 127.0.0.0</code><code>/8</code> <code>#來自這些資訊的都不forwardfor</code>
<code> </code><code>option redispatch </code><code>#重新分發,ServerID對應的伺服器當機後,強制定向到其他運作正常的伺服器</code>
<code> </code><code>retries 3 </code><code>#3次連接配接失敗則認為服務不可用</code>
<code> </code><code>timeout http-request 10s </code><code>#預設http請求逾時時間</code>
<code> </code><code>timeout queue 1m </code><code>#預設隊列逾時時間</code>
<code> </code><code>timeout connect 10s </code><code>#預設連接配接逾時時間</code>
<code> </code><code>timeout client 1m </code><code>#預設用戶端逾時時間</code>
<code> </code><code>timeout server 1m </code><code>#預設伺服器逾時時間</code>
<code> </code><code>timeout http-keep-alive 10s </code><code>#預設持久連接配接逾時時間</code>
<code> </code><code>timeout check 10s </code><code>#預設檢查時間間隔</code>
<code> </code><code>maxconn 3000 </code><code>#最大連接配接數</code>
<code># main frontend which proxys to the backends</code>
<code>frontend main *:5000</code>
<code> </code><code>#定義ACL規則以如".html"結尾的檔案;-i:忽略大小寫</code>
<code> </code><code>acl url_static path_beg -i </code><code>/static</code> <code>/images</code> <code>/javascript</code> <code>/stylesheets</code>
<code> </code><code>acl url_static path_end -i .jpg .gif .png .css .js</code>
<code> </code><code>use_backend static </code><code>if</code> <code>url_static </code><code>#調用後端伺服器并檢查ACL規則是否被比對</code>
<code> </code><code>default_backend app </code><code>#用戶端通路時預設調用後端伺服器位址池</code>
<code># static backend for serving up images, stylesheets and such</code>
<code>backend static </code><code>#定義後端伺服器</code>
<code> </code><code>balance roundrobin </code><code>#定義算法;基于權重進行輪詢</code>
<code> </code><code>server static 127.0.0.1:4331 check check:啟動對後端server的健康狀态檢測</code>
<code># round robin balancing between the various backends</code>
<code>backend app</code>
<code> </code><code>balance roundrobin</code>
<code> </code><code>server app1 127.0.0.1:5001 check</code>
<code> </code><code>server app2 127.0.0.1:5002 check</code>
<code> </code><code>server app3 127.0.0.1:5003 check</code>
<code> </code><code>server app4 127.0.0.1:5004 check</code>
3、haproxy的指令詳解
<code># haproxy -h</code>
<code>HA-Proxy version 1.5.18 2016</code><code>/05/10</code>
<code>Copyright 2000-2016 Willy Tarreau <[email protected]></code>
<code>Usage : haproxy [-f <cfgfile>]* [ -vdVD ] [ -n <maxconn> ] [ -N <maxpconn> ]</code>
<code> </code><code>[ -p <pidfile> ] [ -m <max megs> ] [ -C <</code><code>dir</code><code>> ]</code>
<code> </code><code>-</code><code>v</code> <code>displays version ; -vv shows known build options.</code>
<code> </code><code>-d enters debug mode ; -db only disables background mode.</code>
<code> </code><code>-dM[<byte>] poisons memory with <byte> (defaults to 0x50)</code>
<code> </code><code>-V enters verbose mode (disables quiet mode)</code>
<code> </code><code>-D goes daemon ; -C changes to <</code><code>dir</code><code>> before loading files.</code>
<code> </code><code>-q quiet mode : don't display messages</code>
<code> </code><code>-c check mode : only check config files and </code><code>exit</code>
<code> </code><code>-n sets the maximum total </code><code># of connections (2000)</code>
<code> </code><code>-m limits the usable amount of memory (</code><code>in</code> <code>MB)</code>
<code> </code><code>-N sets the default, per-proxy maximum </code><code># of connections (2000)</code>
<code> </code><code>-L </code><code>set</code> <code>local</code> <code>peer name (default to </code><code>hostname</code><code>)</code>
<code> </code><code>-p writes pids of all children to this </code><code>file</code>
<code> </code><code>-de disables epoll() usage even when available</code>
<code> </code><code>-dp disables poll() usage even when available</code>
<code> </code><code>-dS disables splice usage (broken on old kernels)</code>
<code> </code><code>-dV disables SSL verify on servers side</code>
<code> </code><code>-sf</code><code>/-st</code> <code>[pid ]* finishes</code><code>/terminates</code> <code>old pids. Must be last arguments.</code>
4、配置Haproxy的日志
<code>預設情況下,Haproxy沒有啟用日志檔案,但是我們可以根據haproxy的配置檔案做修改。</code>
<code>(1)修改系統日志的配置檔案</code>
<code># vim /etc/sysconfig/rsyslog</code>
<code>SYSLOGD_OPTIONS=</code><code>"-c 2 -r"</code>
<code>(2)增加日志裝置</code>
<code># vim /etc/rsyslog.conf </code>
<code>local2.* </code><code>/var/log/haproxy</code><code>.log</code>
<code>(3)重新開機一下日志服務</code>
<code># /etc/init.d/rsyslog restart</code>
<code>關閉系統日志記錄器: [确定]</code>
<code>啟動系統日志記錄器: [确定]</code>
<code>(4)檢視日志記錄資訊</code>
<code># tail -f /var/log/haproxy.log</code>
四、Haproxy負載均衡web
1、一個配置示例:
Haproxy-Server:10.10.172.195
Apache1-Client:10.10.172.196
Apache2-Client:10.10.172.197
<code># Global settings</code>
<code>global</code>
<code> </code><code># need to:</code>
<code> </code><code># /etc/sysconfig/syslog</code>
<code> </code><code># /etc/sysconfig/syslog</code>
<code> </code><code>log 127.0.0.1 local2</code>
<code> </code><code>chroot </code><code>/var/lib/haproxy</code>
<code> </code><code>pidfile </code><code>/var/run/haproxy</code><code>.pid</code>
<code> </code><code>maxconn 4000</code>
<code> </code><code>user haproxy</code>
<code> </code><code>group haproxy</code>
<code> </code><code>mode http</code>
<code> </code><code>log global</code>
<code> </code><code>option httplog</code>
<code> </code><code>option dontlognull</code>
<code> </code><code>option http-server-close</code>
<code> </code><code>option forwardfor except 127.0.0.0</code><code>/8</code>
<code> </code><code>option redispatch</code>
<code> </code><code>retries 3</code>
<code> </code><code>timeout http-request 10s</code>
<code> </code><code>timeout queue 1m</code>
<code> </code><code>timeout connect 10s</code>
<code> </code><code>timeout client 1m</code>
<code> </code><code>timeout server 1m</code>
<code> </code><code>timeout http-keep-alive 10s</code>
<code> </code><code>timeout check 10s</code>
<code> </code><code>maxconn 30000</code>
<code>listen stats</code>
<code> </code><code>mode http</code>
<code> </code><code>bind 0.0.0.0:8080</code>
<code> </code><code>stats </code><code>enable</code>
<code> </code><code>stats hide-version</code>
<code> </code><code>stats uri </code><code>/haproxyadmin</code><code>?stats</code>
<code> </code><code>stats realm Haproxy\ Statistics</code>
<code> </code><code>stats auth admin:123456</code>
<code> </code><code>stats admin </code><code>if</code> <code>TRUE</code>
<code>frontend http-</code><code>in</code>
<code> </code><code>bind *:80</code>
<code> </code><code>log global</code>
<code> </code><code>option httpclose</code>
<code> </code><code>option logasap</code>
<code> </code><code>option dontlognull</code>
<code> </code><code>capture request header Host len 20</code>
<code> </code><code>capture request header Referer len 60</code>
<code> </code><code>default_backend servers</code>
<code>frontend healthcheck</code>
<code> </code><code>bind :1099</code>
<code> </code><code>option forwardfor</code>
<code>backend servers</code>
<code> </code><code>balance roundrobin</code>
<code> </code><code>server websrv1 10.10.172.196:80 check maxconn 2000</code>
<code> </code><code>server websrv2 10.10.172.197:80 check maxconn 2000</code>
2、啟動Haproxy服務
<code># service haproxy start</code>
<code>Starting haproxy: [ OK ]</code>
<code># chkconfig haproxy on</code>
3、浏覽器通路
單獨通路Apache1:10.10.172.196
單獨通路Apache2:10.10.172.197
多次重新整理通路Haproxy:10.10.172.195
多次重新整理Haproxy的website,會切換到後端不同的webserver主機上。
五、Haproxy的狀态監控
1、Haproxy的監控頁面
<code>listen stats </code><code>#關聯前端和後端定義一個完整的代理</code>
<code> </code><code>mode http </code><code>#設定代理協定</code>
<code> </code><code>bind 0.0.0.0:8080 </code><code>#綁定相應的端口</code>
<code> </code><code>stats </code><code>enable</code> <code>#開啟Haproxy統計狀态</code>
<code> </code><code>stats refresh 3s </code><code>#統計頁面自動重新整理時間間隔</code>
<code> </code><code>stats hide-version </code><code>#隐藏代理伺服器版本</code>
<code> </code><code>stats uri </code><code>/haproxyadmin</code><code>?stats </code><code>#通路的url</code>
<code> </code><code>stats realm Haproxy\ Statistics </code><code>#統計頁面認證時提示内容資訊</code>
<code> </code><code>stats auth admin:123456 </code><code>#設定登入使用者和密碼 </code>
<code> </code><code>stats admin </code><code>if</code> <code>TRUE </code><code>#如果認證通過,則就可以打開stats</code>
2、通路監控頁面
(1)登陸監控頁面
admin/123456
(2)檢視監控頁面
(3)模拟一下故障
<code># service httpd stop</code>
<code>Stopping httpd: [ OK ]</code>
(4)在次檢視監控頁面
六、Haproxy的動靜分離
haproxy動靜分離的配置
<code> </code><code>bind 0.0.0.0:1080</code>
<code> </code><code>acl url_static path_end -i .html .jpg .gif</code>
<code> </code><code>acl url_dynamic path_end -i .php</code>
<code> </code><code>use_backend lnmmp </code><code>if</code> <code>url_dynamic</code>
<code> </code><code>server websrv1 10.10.172.196:80 check rise 2 fall 1 weight 2 maxconn 2000</code>
<code> </code><code>server websrv2 10.10.172.197:80 check rise 2 fall 1 weight 2 maxconn 2000</code>
<code>backend lnmmp</code>
<code> </code><code>balance </code><code>source</code>
<code> </code><code>server websrv3 10.10.172.198:80 check rise 2 fall 1 maxconn 2000</code>
動靜分離實作的需求:
通路index.html頁面,由Apache1,、Apache2輪詢顯示;通路index.php頁面,有LNMP或者LAMP伺服器顯示,
本文轉自 dengaosky 51CTO部落格,原文連結:http://blog.51cto.com/dengaosky/2050231,如需轉載請自行聯系原作者