Балансировка нагрузки в HUE
Сервис HUE позволяет балансировать поступающую нагрузку, запуская прокси-сервер, а за ним — несколько серверов HUE.
Компонент Haproxy Hue
Haproxy Hue переключается между серверами HUE и выполняет роль обратного прокси (reverse proxy) для клиентов HUE в ADH. Этот компонент основан на проекте HAProxy и используется для балансировки нагрузки, маршрутизации HTTP/TCP-трафика между серверами и масштабирования сервиса HUE.
|
ВАЖНО
|
Настройка Haproxy Hue
При запуске сервиса HUE с несколькими серверами ADCM автоматически настраивает компонент Haproxy Hue для маршрутизации входящих запросов к серверам HUE, поэтому ручная настройка сервиса не требуется. Но вы можете дополнительно настроить поведение Haproxy Hue, как описано ниже.
Основным файлом настроек для Haproxy Hue является /etc/adh-haproxy/conf/haproxy-hue.cfg. Это файл конфигурации HAProxy, расположенный на хостах ADH, где установлен компонент Haproxy Hue.
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log /dev/log local0
log 127.0.0.1:514 local0
chroot /var/lib/adh-haproxy/hue
maxconn 1024
user hue
group hadoop
daemon
ssl-server-verify none
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
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
listen stats
bind *:7001
stats enable
stats uri /
frontend hue_http_in
bind *:8000
default_backend hue_http_servers
backend hue_http_servers
balance first
server hue-server-1 test-3.ru-central1.internal:8000 check inter 1s fall 2 rise 5
bdo@test-2:/etc/adh-haproxy/conf$ cat haproxy-hue.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log /dev/log local0
log 127.0.0.1:514 local0
chroot /var/lib/adh-haproxy/hue
maxconn 1024
user hue
group hadoop
daemon
ssl-server-verify none
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
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
listen stats
bind *:7001
stats enable
stats uri /
frontend hue_http_in
bind *:8000
default_backend hue_http_servers
backend hue_http_servers
balance first
server hue-server-1 test-1.ru-central1.internal:8000 check inter 1s fall 2 rise 5
server hue-server-2 test-3.ru-central1.internal:8000 check inter 1s fall 2 rise 5
Данный файл не следует редактировать вручную — вместо этого используйте Jinja-шаблон в ADCM (Clusters → <ADHclusterName> → Services → HUE → Components → Haproxy Hue → Configuration). При каждом запуске сервиса HUE файл haproxy-hue.cfg генерируется на основе этого шаблона.
Ниже приведен шаблон haproxy-hue.cfg по умолчанию с комментариями к основным блокам настроек.
{% set tls_haproxy_pem = '' %}
{%- if hue_ssl_enable -%}
{% set service_ssl = haproxy_conf_ssl_vars | default('', true) | trim %}
{% set cluster_ssl = cluster.config.ssl_default_config.tls_haproxy_pem | default('', true) | trim %}
{% if service_ssl %}
{% set tls_haproxy_pem = 'ssl crt ' ~ service_ssl %}
{% elif cluster_ssl %}
{% set tls_haproxy_pem = 'ssl crt ' ~ cluster_ssl %}
{% endif %}
{% endif %}
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global (1)
log /dev/log local0
log 127.0.0.1:514 local0
chroot /var/lib/adh-haproxy/hue
maxconn 1024
user hue
group hadoop
daemon
ssl-server-verify none
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults (2)
mode http
log global
option httplog
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
listen stats (3)
bind *:7001 {{ tls_haproxy_pem }}
stats enable
stats uri /
frontend hue_http_in (4)
bind *:{{ roles_hue_vars_component_ports['haproxy_hue']['web'] }} {{ tls_haproxy_pem }}
default_backend hue_http_servers
backend hue_http_servers (5)
balance first
{% for host in haproxy_hue_conf_hosts %}
{{ host }}
{% endfor %}
| 1 | Глобальные параметры HAProxy: параметры логирования, изменения корневой директории, проверка сертификатов и прочие. |
| 2 | Параметры HAProxy по умолчанию: режим работы, логирование и различные тайм-ауты. |
| 3 | Активирует сбор статистики и мониторинг HAProxy в реальном времени. Определяет порт и URI эндпойнта статистики (по умолчанию http://<Haproxy_Hue_host>:7001/). |
| 4 | Список прослушиваемых сокетов для входящих соединений. |
| 5 | Список серверов HUE, на которые Haproxy Hue будет перенаправлять входящие запросы.
В этом шаблоне цикл {% for host in … %} формирует список серверов HUE, доступных в ADH-кластере.
Параметр balance first указывает, что первый сервер используется в качестве активного (основного) сервер HUE, а остальные серверы используются в качестве резервных, если первый становится недоступным. |
Подробное описание настроек HAProxy доступно в справочной документации HAProxy.
Логирование
По умолчанию компонент Haproxy Hue логирует собственную активность и сохраняет логи в директории /var/log/adh-haproxy/. Настройки логирования указываются в haproxy-hue.cfg. Конфигурация по умолчанию обеспечивает двойное логирование, а именно:
global
log /dev/log local0 (1)
log 127.0.0.1:514 local0 (2)
| 1 | Направляет логи в локальный сокет syslog (/dev/log) для обработки системным syslog-демоном. |
| 2 | Направляет логи syslog-демону, слушающему порт 514 на localhost (например, rsyslog или syslog-ng).
По умолчанию rsyslog/syslog-ng сохраняют лог-файлы в /var/log/adh-haproxy/. |
|
РЕКОМЕНДАЦИЯ
Компонент Haproxy Hue имеет соответствующие настройки для rsyslog/syslog-ng в ADCM (/etc/syslog-ng/conf.d/haproxy-hue.conf, /etc/rsyslog.d/haproxy-hue.conf).
С их помощью можно изменить шаблоны сообщений логов, фильтры, расположение лог-файлов и так далее.
|