Настройка 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 ответ:
Я наконец нашел решение. В случае , если кто-то столкнется с той же проблемой, пожалуйста, найдите решение ниже.
Следующая ссылка решила мою проблему
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