Настройка ha-прокси для файла " war " в jetty


Я новичок в Ха-прокси и застрял в ситуации.

Я настроил ha-прокси для двух серверов 10.х.г.10 и 10.х.г.20. Эти двое бегают по пристани.

Все работает нормально, если один из причалов не работает. Запрос отправляется на второй сервер, и все происходит, как и ожидалось.

Проблема: предположим, что обе пристани запущены , и если я удалю файл "war" с одной пристани, запрос не пойдет на второй сервер. Он просто выдает ошибку "Ошибка 404 не найдена"

Я знаю, что у меня есть настроен ha-proxy для jetty не для файлов войны, но есть ли способ перенаправить запрос, если файл войны отсутствует или запрошенная ситуация даже не возможна.

Пожалуйста, укажи мне правильное направление.

Заранее благодарю.

Это моя конфигурация 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
1 3

1 ответ:

Я наконец нашел решение. В случае , если кто-то столкнется с той же проблемой, пожалуйста, найдите решение ниже.

Следующая ссылка решила мою проблему

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

В основном следующая запись строки в конфигурации frontend сделала трюк.

acl is_blog url_beg  /blog
use_backend tecadmin_blog if is_blog
default_backend tecadmin_website

ACL = список управления доступом - > ACL используются для проверки некоторого условия и выполнения действия

Если условие выполнено, то он перенаправляет на серверную часть. Мы можем использовать множественные списки и направить к нескольким бэкхенда навылет же переднего плана.

Далее в конфигурации бэкэнд-сервера нам нужно добавить "check" в конце, который монитирует его состояние работоспособности.

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