天天看點

Haproxy的負載均衡、動靜分離、狀态監控、近期網絡架構

一、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 &lt;[email protected]&gt;</code>

<code>Usage : haproxy [-f &lt;cfgfile&gt;]* [ -vdVD ] [ -n &lt;maxconn&gt; ] [ -N &lt;maxpconn&gt; ]</code>

<code>        </code><code>[ -p &lt;pidfile&gt; ] [ -m &lt;max megs&gt; ] [ -C &lt;</code><code>dir</code><code>&gt; ]</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[&lt;byte&gt;] poisons memory with &lt;byte&gt; (defaults to 0x50)</code>

<code>        </code><code>-V enters verbose mode (disables quiet mode)</code>

<code>        </code><code>-D goes daemon ; -C changes to &lt;</code><code>dir</code><code>&gt; 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,如需轉載請自行聯系原作者

繼續閱讀