Spec-Zone.ru › Apache HTTP Server

Модуль Apache mod_proxy_hcheck

Описание: Динамическая проверка работоспособности членов балансировщика (работников) для mod_proxy
Статус: Расширение
Идентификатор модуля: proxy_hcheck_module
Файл исходного кода: mod_proxy_hcheck.c
Совместимость: Доступно в Apache 2.4.21 и более поздних версиях

Краткое описание

Этот модуль обеспечивает динамическую проверку работоспособности членов балансировщика (работников). Это можно включить для каждого работника по отдельности. Проверка работоспособности выполняется независимо от фактических обращений к обратным прокси.

Этот модуль требует услуги mod_watchdog.

Параметры

Механизм проверки работоспособности включается с помощью дополнительных BalancerMember параметров, которые настраиваются стандартным образом через ProxyPass:

С помощью этого модуля определяется новое состояние (флаг) члена балансировщика "C". Когда работник отключается из-за ошибок, определённых модулем проверки работоспособности, этот флаг устанавливается и может быть просмотрен (и изменён) через balancer-manager.

Параметр Значение по умолчанию Описание
hcmethod None Динамическая проверка работоспособности не выполняется. Доступные варианты:
Метод Описание Примечание
None Динамическая проверка работоспособности не выполняется
TCP Проверка возможности создания сокета с бэкендом: например, "работаете ли вы"
OPTIONS Отправка запроса HTTP OPTIONS к бэкенду *
HEAD Отправка запроса HTTP HEAD к бэкенду *
GET Отправка запроса HTTP GET к бэкенду *
*: Если не используется hcexpr, HTTP-статус в диапазоне 2xx или 3xx будет интерпретироваться как успешная проверка работоспособности
hcpasses 1 Количество успешных тестов проверки работоспособности перед повторным включением работника
hcfails 1 Количество неудачных тестов проверки работоспособности перед отключением работника
hcinterval 30 Период проверок работоспособности в секундах (например, выполняется каждые 30 секунд)
hcuri Дополнительный URI, который будет добавлен к URL работника для проверки работоспособности.
hctemplate Имя шаблона, созданного через ProxyHCTemplate, для установки параметров проверки работоспособности для этого работника
hcexpr Имя выражения, созданного через ProxyHCExpr, используемого для проверки заголовков ответа на работоспособность.
Если не используется, коды статусов 2xx-3xx предполагают успех

Примеры использования

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

ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}

<Proxy balancer://foo>
  BalancerMember http://www.example.com/  hcmethod=GET hcexpr=in_maint hcuri=/status.php
  BalancerMember http://www2.example.com/ hcmethod=HEAD hcexpr=ok234 hcinterval=10
  BalancerMember http://www3.example.com/ hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3
  BalancerMember http://www4.example.com/
</Proxy>

ProxyPass "/" "balancer://foo"
ProxyPassReverse "/" "balancer://foo"

В этом сценарии, http://www.example.com/ проверяется на работоспособность путём отправки запроса GET /status.php на этот сервер и проверкой, что возвращённая страница не содержит строку Поддерживается. Если содержит, этот сервер переводится в режим ошибки проверки работоспособности и отключается. Эта динамическая проверка выполняется каждые 30 секунд, что является значением по умолчанию.

http://www2.example.com/ проверяется путём отправки простого запроса HEAD каждые 10 секунд и проверки, что статус ответа находится в диапазоне 2xx, 3xx или 4xx. http://www3.example.com/ проверяется каждые 5 секунд, просто проверяя, что сокет к этому серверу доступен. Если бэкенд помечен как "вниз", и он проходит 2 проверки работоспособности, он будет повторно включён и добавлен обратно в балансировщик. Для отключения сервера требуется 3 последовательных ошибки проверки работоспособности. Наконец, http://www4.example.com/ вообще не проверяется динамически.

Директива ProxyHCExpr

Описание: Создаёт именованное выражение условия для определения работоспособности бэкенда на основе его ответа
Синтаксис:
ProxyHCExpr name {ap_expr expression}
Контекст: настройка сервера, виртуальный хост
Статус: Расширение
Модуль: mod_proxy_hcheck

Директива ProxyHCExpr позволяет создать именованное выражение условия, которое проверяет заголовки ответа сервера бэкенда для определения его работоспособности. Это именованное условие затем может быть назначено членам балансировщика через параметр hcexpr.

ProxyHCExpr: Допускает 2xx/3xx/4xx как успешные

ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyPass "/apps"     "balancer://foo"

<Proxy balancer://foo>
  BalancerMember http://www2.example.com/  hcmethod=HEAD hcexpr=ok234 hcinterval=10
</Proxy>
Выражение expression может использовать фигурные скобки ("{}") в качестве разделителей цитирования в дополнение к обычным кавычкам.

Если используется метод проверки работоспособности (например, GET), который приводит к ответному телу, это тело само по себе может быть проверено через ap_expr с использованием функции выражения hc(), уникальной для этого модуля.

В следующем примере мы отправляем бэкенду запрос GET и, если ответное тело содержит фразу Поддерживается, мы хотим отключить бэкенд.

ProxyHCExpr: Проверка ответного тела

ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
ProxyPass "/apps"     "balancer://foo"

<Proxy balancer://foo>
  BalancerMember http://www.example.com/ hcexpr=in_maint hcmethod=get hcuri=/status.php
</Proxy>

ПРИМЕЧАНИЕ: Поскольку ответное тело может быть достаточно большим, лучше использовать его для проверки определённых страниц состояния.

Директива ProxyHCTemplate

Описание: Создаёт именованный шаблон для установки различных параметров проверки работоспособности
Синтаксис:
ProxyHCTemplate name parameter=setting [...]
Контекст: настройка сервера, виртуальный хост
Статус: Расширение
Модуль: mod_proxy_hcheck

Директива ProxyHCTemplate позволяет создать именованный набор (шаблон) параметров проверки работоспособности, который затем можно назначить членам балансировщика через параметр hctemplate.

ProxyHCTemplate

ProxyHCTemplate tcp5 hcmethod=tcp hcinterval=5
ProxyPass "/apps"     "balancer://foo"

<Proxy balancer://foo>
  BalancerMember http://www2.example.com/ hctemplate=tcp5
</Proxy>

Директива ProxyHCTPsize

Описание: Устанавливает общий размер потоковой очереди для проверки работоспособности на уровне сервера
Синтаксис:
ProxyHCTPsize size
Значение по умолчанию:
ProxyHCTPsize 16
Контекст: настройка сервера
Статус: Расширение
Модуль: mod_proxy_hcheck

Если Apache httpd и APR построены с поддержкой потоков, модуль проверки работоспособности переложит работу фактической проверки на потоковую очередь, связанную с процессом Watchdog, что позволит выполнять параллельные проверки. Директива ProxyHCTPsize определяет размер этой потоковой очереди. Если установлено значение 0, потоковая очередь вообще не используется, что приводит к последовательным проверкам работоспособности.

ProxyHCTPsize

ProxyHCTPsize 32

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_proxy_hcheck.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API