有一個狀況是 , 若要指定路徑導到不同主機 , 用 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
其實應該不難吧 ^^
HAProxy 幹啥的?
虛擬主機的功能apache不是就有了!
HAProxy 其實就是專作 Loading Balance , 和虛擬主機無關
Apache 也有類似功能 , 但沒有像 HAProxy 功能這麼完整 , 而且效能差很多
這個範例只是稍微介紹一下它的 1% 的功能而已
HAProxy 會檢查後面的分流網站服務是否掛了
若掛了 , 它就不會把封包導過去
若其中有一台後端的 Server 出問題 , 暫時停止服務也不影響前端用戶的瀏覽
SOGA
通告: haproxy - subdomains designated server | 遨遊飛翔
請問有方法可以判斷流量或是連線資訊嗎
我看了她整個config說明檔
但是似乎沒針對流量判斷的依據
我想達到的功能是前端的HA接受連線時可以判斷目前的流量資訊
當流量到某個程度時我會在開啟一台SERVER去分擔流量
另外這就會有另一個問題
就是重啟HA服務時原本SERVER的流量會平均分攤到新的那邊去嗎
謝謝回答
是有流量監控
但沒有月周日報表統計 , ha proxy 是會根據連線數量判斷連線該導給誰做負載平衡 這方面還不用擔心
而且也可以設定 backend 的 maxconn 來控制每一台的最大連線數 若真的某一台連線數過多 , haproxy 會用另一個 backend , 甚至可以設定 backend 的權重讓某一台的平均連線數可以較大