Назад | Перейти на главную страницу

Кластер Tomcat - как проверить нехватку узлов?

У нас есть кластер tomcat с балансировщиком нагрузки (haproxy). В рамках нашего сценария обновления мы хотели бы заморозить одного кота в кластере из 3 котов, дождавшись обработки всех запросов для этого конкретного кота. и только тогда мы хотели бы закрыть его и обновить веб-приложение, работающее на этом коте.

Наш вопрос:

Как наш сценарий может указать, что кот полностью голоден (все запросы были приняты)?

Есть ли API, который предоставляет сам tomcat? или, может быть, мы можем запросить эту информацию у haproxy?

Спасибо!

РЕДАКТИРОВАТЬ: Вот мой файл конфигурации haproxy:

global
debug
stats socket /etc/haproxy/haproxysock level admin

defaults
mode http
timeout connect 5s
timeout queue   300s
timeout client  300s
timeout server  300s


frontend http-in
bind *:8080
default_backend NG

backend NG
cookie JSESSIONID prefix
server 10.0.110.44 10.0.110.44:8080 cookie JSESSIONID_SERVER_1 check maxconn 500
server 10.0.110.45 10.0.110.45:8080 cookie JSESSIONID_SERVER_2 check maxconn 500
#server 10.0.110.41 10.0.110.41:8080 cookie JSESSIONID_SERVER_3 check maxconn 500
option httpclose
option forwardfor
balance roundrobin
option redispatch
retries 15


listen admin
bind *:8081
stats enable
stats refresh 1s

С точки зрения балансировщика нагрузки трудно утверждать о полном голодании. На самом деле невозможно сказать, есть ли еще клиент, у которого есть JSESSIONID файл cookie с префиксом для вашего NOLB сервер.

Я вижу как минимум два способа продвинуться вперед с этим

  1. оценить общее время голодания на основе продолжительности сеанса
    • это, конечно, не идеально, так как TTL обновляются в течение фаза голодания
  2. определить границу (например, 1 запрос в минуту), чтобы считать сервер голодным

Если у Tomcat есть способ перечислить допустимые сеансы, это обеспечит более безопасный способ (через сервлет или аналогичный).

Обратите внимание: если вы ограничиваете себя остановкой только полностью истощенных серверов приложений, стойкий клиент может удержать вас от Когда-либо перезапуск.