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

#jetty #high-availability #haproxy

#jetty #высокая доступность #haproxy

Вопрос:

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

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

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

ПРОБЛЕМА: Предположим, что оба jetty запущены, и если я удаляю файл «war» с одного jetty, запрос не отправляется на второй сервер. Он просто выдает ошибку «Ошибка 404 не найдена»

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

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

Заранее спасибо.

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

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

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

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 = Список управления доступом -> Списки управления доступом используются для проверки некоторых условий и выполнения действия

Если предварительное условие выполнено, то оно перенаправляется на внутренний сервер. Мы можем использовать несколько списков управления доступом и напрямую обращаться к серверной части muliple через тот же интерфейс.

Далее в конфигурации внутреннего сервера нам нужно добавить «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