Модуль 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 | Динамическая проверка работоспособности не выполняется. Доступные варианты:
|
||||||||||||||||||||||||
| 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> Если используется метод проверки работоспособности (например, 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