2014-07-01 58 views
3

我是Ha-proxy的新手,陷入困境。在碼頭配置ha-proxy「war」文件

我爲兩臺服務器10.x.y.10和10.x.y.20配置了ha-proxy。這兩個運行碼頭。

如果其中一個碼頭髮生故障,一切正常。請求轉到第二臺服務器,一切都按預期發生。

問題:假設兩個碼頭都在運行,並且如果我從一個碼頭中刪除「war」文件,請求不會轉到第二個服務器。它只是給出錯誤「錯誤404未找到」

我知道我已配置碼頭的ha代理不是爲戰爭文件,但有沒有任何方式來重定向請求,如果戰爭文件丟失或所需的情況是不均勻可能。

請指點我正確的方向。

在此先感謝。

這是我的haproxy配置。

HA代理配置

defaults 
mode     http 
log      global 
option     httplog 
option    logasap 
option     dontlognull 
option http-server-close 
option forwardfor  except 127.0.0.0/8 
option     redispatch 
retries     3 
timeout http-request 10s 
timeout queue   1m 
timeout connect   10s 
timeout client   1m 
timeout server   1m 
timeout http-keep-alive 10s 
timeout check   10s 
maxconn     3000 



frontend vs_http_80 
    bind *:9090 
    default_backend pool_http_80 

backend pool_http_80 
    #balance options 
    balance roundrobin 

    #http options 
    mode http 
    option httpchk OPTIONS/
    option forwardfor 
    option http-server-close 

    #monitoring service endpoints with healthchecks 
    server pool_member1 10.x.y.10:8080 // x and y are dummy variables 
    server pool_member2 10.x.y.20:8080 

frontend vs_stats :8081 
    mode http 
    default_backend stats_backend 

backend stats_backend 
    mode http 
    stats enable 
    stats uri /stats 
    stats realm Stats\ Page 
    stats auth serveruser:password 
    stats admin if TRUE 

回答

3

我終於找到了解決辦法。如果有人遇到同樣的問題,請在下面找到解決方案。

以下鏈接解決我的問題

http://tecadmin.net/haproxy-acl-for-load-balancing-on-url-request/

基本上在前端配置以下行進入並獲得成功。

acl is_blog url_beg /blog 
use_backend tecadmin_blog if is_blog 
default_backend tecadmin_website 

ACL =訪問控制列表 - >的ACL用來測試某種條件並執行操作

如果前提是滿足,則它重定向到後端服務器。 我們可以使用多個acls並通過相同的前端指向多個後端。

接下來在後端服務器配置中,我們需要在最後添加「檢查」它的健康狀況。

backend tecadmin_website 
mode http 
balance roundrobin # Load Balancing algorithm 
option httpchk 
option forwardfor 
server WEB1 192.168.1.103:80 check 
server WEB2 192.168.1.105:80 check 

下面是我的問題的完整配置。

defaults 
mode     http 
log      global 
option     httplog 
option    logasap 
    option     dontlognull 
option http-server-close 
option forwardfor  except 127.0.0.0/8 
option     redispatch 
retries     3 
timeout http-request 10s 
timeout queue   1m 
    timeout connect   10s 
    timeout client   1m 
timeout server   1m 
timeout http-keep-alive 10s 
timeout check   10s 
    maxconn     3000 



frontend vs_http_80 
bind *:9090 

acl x1_app path_dir x1 
acl x2_app path_dir x2 

acl x1_avail nbsrv(backend_x1) ge 1 
acl x2_avail nbsrv(backend_x2) ge 1 

use_backend backend_x1 if x1_app1 x1_avail 
use_backend backend_x2 if x2_app x2_avail 


backend backend_x1 
    #balance options 
    balance roundrobin 

    #http options 
    mode http 
    option httpchk GET /x1 
    option forwardfor 
    option http-server-close 

    #monitoring service endpoints with healthchecks 
    server pool_member1 10.x.y.143:8080/x1 check 
    server pool_member2 10.x.y.141:8080/x2 check 


backend backend_x2 
    #balance options 
    balance roundrobin 

    #http options 
    mode http 
    option httpchk GET /x2 
    option forwardfor 
    option http-server-close 

    #monitoring service endpoints with healthchecks 
    server pool_member1 10.x.y.143:8080/x2 check 
    server pool_member2 10.x.y6.141:8080/x2 check 




frontend vs_stats :8081 
mode http 
default_backend stats_backend 

backend stats_backend 
mode http 
stats enable 
stats uri /stats 
stats realm Stats\ Page 
stats auth serveruser:password 
stats admin if TRUE