HAProxy 如何將指定目錄導到指定主機

有一個狀況是 , 若要指定路徑導到不同主機 , 用 HAProxy 該怎麼做

假設我現在有三部 Web Server 及一台 HAProxy Server

Web01 : 192.168.0.101

web02 : 192.168.0.102

Web03 : 192.168.0.103

如果我有個網站叫 www.kissmyass.com , 我想做到預設把流量都導到 Web01 及 Web02 , 但有一個 /kiss 的目錄想導到 Web03 , 這時候就會用到 acl , 有點像是設定防火牆了 ....

設定檔範例如下:

global
        maxconn         32768
        user            nobody
        group           nobody
        daemon
        nbproc          2

defaults
        mode            http
        balance         roundrobin
        clitimeout      60000
        srvtimeout      60000
        contimeout      5000
        retries         3
        option          forwardfor
        option          httpclose
        option          httplog
        option          redispatch
        option          dontlognull

frontend web-balancer
        bind    *:80
        acl rule_kiss url_beg /kiss
        use_backend backend_kiss if rule_kiss
        default_backend backend_default

backend backend_default
        server          web01 192.168.0.101:80 weight 5 check
        server          web02 192.168.0.102:80 weight 5 check

backend backend_kiss
        server          magi01  192.168.0.103:80 weight 5 check

 

這個範例比較難懂的是 frontend web-balance 那段 , 其實就是定義一些前端(frontend) 的 rule 讓 haproxy 去過濾

行 23: 定義了一個 rule 名稱叫 rule_kiss , 這個 rule 判斷是否路徑為 /kiss

行 24: 判斷若路徑符合 rule_kiss 的定義 , 那麼就使用 backend_kiss(行 31) 所定義的後端 Web Server

行 25: 則是預設的後端 Web Server

其實應該不難吧 ^^

6 則評論在 HAProxy 如何將指定目錄導到指定主機.

  1. HAProxy 其實就是專作 Loading Balance , 和虛擬主機無關
    Apache 也有類似功能 , 但沒有像 HAProxy 功能這麼完整 , 而且效能差很多
    這個範例只是稍微介紹一下它的 1% 的功能而已
    HAProxy 會檢查後面的分流網站服務是否掛了
    若掛了 , 它就不會把封包導過去
    若其中有一台後端的 Server 出問題 , 暫時停止服務也不影響前端用戶的瀏覽

  2. 通告: haproxy - subdomains designated server | 遨遊飛翔

  3. 請問有方法可以判斷流量或是連線資訊嗎
    我看了她整個config說明檔
    但是似乎沒針對流量判斷的依據
    我想達到的功能是前端的HA接受連線時可以判斷目前的流量資訊
    當流量到某個程度時我會在開啟一台SERVER去分擔流量
    另外這就會有另一個問題
    就是重啟HA服務時原本SERVER的流量會平均分攤到新的那邊去嗎
    謝謝回答

  4. 是有流量監控

    但沒有月周日報表統計 , ha proxy 是會根據連線數量判斷連線該導給誰做負載平衡 這方面還不用擔心

    而且也可以設定 backend 的 maxconn 來控制每一台的最大連線數 若真的某一台連線數過多 , haproxy 會用另一個 backend , 甚至可以設定 backend 的權重讓某一台的平均連線數可以較大

發佈留言