#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