Высокая доступность Trino Coordinator
Сервис Trino поддерживает режим высокой доступности (High Availability, HA), при котором возможно использование нескольких компонентов Trino Coordinator. Если один Trino Coordinator становится недоступным, резервные Trino Coordinator включаются в работу, не прерывая работу Trino-кластера.
Компонент Haproxy Trino
Переключение между несколькими Trino Coordinator осуществляется с помощью компонента Haproxy Trino, который выполняет роль обратного прокси (reverse proxy) между клиентами Trino и серверами Trino Coordinator в ADH. Данный компонент основан на проекте HAProxy и используется для обеспечения высокой доступности, балансировки нагрузок и маршрутизации HTTP/TCP-трафика между серверами.
|
ВАЖНО
|
Кластер ADH может содержать один или несколько компонентов Haproxy Trino. Установка нескольких компонентов Haproxy Trino может использоваться для реализации полноценного режима высокой доступности на сетевом уровне.
Настройка Haproxy Trino
При запуске сервиса Trino в режиме HA ADCM автоматически настраивает компонент Haproxy Trino для маршрутизации входящих запросов к компонентам Trino Coordinator, не требуя каких-либо ручных настроек. Дополнительно вы можете настроить поведение Haproxy Trino, как описано далее.
Основным файлом настроек для Haproxy Trino является /etc/adh-haproxy/conf/haproxy-trino.cfg — файл конфигурации HAProxy, расположенный на хостах ADH, где установлен компонент Haproxy Trino.
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log /dev/log local0
log 127.0.0.1:514 local0
chroot /var/lib/adh-haproxy/trino
maxconn 1024
user haproxy
group haproxy
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 trino_http_in
bind *:18188
default_backend trino_http_servers
backend trino_http_servers
balance first
server trino-coordinator0 ka-adh-1.ru-central1.internal:18188 check inter 1s fall 2 rise 5
server trino-coordinator1 ka-adh-3.ru-central1.internal:18188 check inter 1s fall 2 rise 5 backup
Данный файл не следует редактировать вручную — вместо этого для настройки поведения Haproxy Trino используйте Jinja-шаблон в ADCM (Clusters → <ADHclusterName> → Services → Trino → Components → Haproxy Trino → Configuration). При каждом старте сервиса Trino файл haproxy-trino.cfg генерируется на основе этого шаблона.
Ниже представлен дефолтный шаблон haproxy-trino.cfg с комментариями к основным блокам настроек.
{% set ssl_sert = '' %}
{%- if trino_ssl_enable -%}
{% set ssl_sert = haproxy_conf_ssl_vars %}
{% endif %}
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global (1)
log /dev/log local0
log 127.0.0.1:514 local0
chroot /var/lib/adh-haproxy/trino
maxconn 1024
user haproxy
group haproxy
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 {{ ssl_sert }}
stats enable
stats uri /
frontend trino_http_in (4)
bind *:{{ roles_trino_vars_component_ports['haproxy']['web'] }} {{ ssl_sert }}
default_backend trino_http_servers
backend trino_http_servers (5)
balance first
{% for host in haproxy_conf_hosts %}
{{ host }}
{% endfor %}
| 1 | Глобальные параметры HAProxy, например, параметры логирования, изменения корневой директории, проверка сертификатов и прочие. |
| 2 | Параметры HAProxy по умолчанию, такие как режим работы, логирование и различные тайм-ауты. |
| 3 | Активирует сбор статистики и мониторинг ядра HAProxy в реальном времени. Определяет порт и URI эндпойнта статистики (http://<Haproxy_Trino_host>:7001/ по умолчанию). |
| 4 | Список прослушиваемых сокетов для входящих соединений. |
| 5 | Список серверов Trino Сoordinator, куда компонент Haproxy Trino будет направлять входящие запросы.
В данном шаблоне цикл {% for host in … %} генерирует список серверов Trino Coordinator, доступных в ADH-кластере.
Параметр balance first указывает, что первый сервер используется в качестве активного (основного) Trino Coordinator, а другие серверы используются в качестве резервных, если первый становится недоступным. |
Подробное описание настроек HAProxy доступно в справочной документации HAProxy.
Логирование
По умолчанию компонент Haproxy Trino логирует собственную активность и сохраняет логи в директории /var/log/adh-haproxy/. Настройки логирования указываются в haproxy-trino.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 Trino имеет соответствующие настройки для rsyslog/syslog-ng в ADCM (/etc/syslog-ng/conf.d/haproxy-trino.conf, /etc/rsyslog.d/haproxy-trino.conf).
С их помощью можно изменить шаблоны лог-сообщений, фильтры, расположение лог-файлов и так далее.
|
Статистика Haproxy Trino
Компонент Haproxy Trino предоставляет статистику о своей работе.
Сбор статистики включен по умолчанию (блок настроек listen stats в haproxy-trino.cfg) и данные доступны по следующему эндпойнту: http://<Haproxy_Trino_host>:7001/.
Особенности Kerberos
-
Если кластер керберизирован, для прямого подключения к Trino Coordinator через консольный Trino-клиент необходимо указать имя хоста Trino Coordinator в параметре
krb5-service-principal-pattern, например:krb5-service-principal-pattern=HTTP@ka-adh-1.ru-central1.internalДля JDBC используйте параметр:
KerberosServicePrincipalPattern=HTTP@ka-adh-1.ru-central1.internal -
Прямое подключение к веб-интерфейсу Trino Coordinator через браузер (Chrome, Firefox) или cURL не поддерживается.