Композиционные протоколы
Обзор
Композиционные протоколы позволяют более гибкую конфигурацию TCP-доступа к серверу ClickHouse. Эта конфигурация может сосуществовать с традиционной конфигурацией или заменять её.
Настройка композиционных протоколов
Композиционные протоколы можно настраивать в XML-файле конфигурации. Раздел
протоколов обозначается тегами protocols
в файле XML-конфигурации:
Настройка уровней протокола
Вы можете определить уровни протокола с помощью базовых модулей. Например, чтобы определить
HTTP-уровень, вы можете добавить новый базовый модуль в раздел protocols
:
Модули могут быть настроены по следующим параметрам:
plain_http
- имя, на которое может ссылаться другой уровеньtype
- обозначает обработчик протокола, который будет инстанцирован для обработки данных. Он имеет следующий набор предопределённых обработчиков протоколов:tcp
- нативный обработчик протокола clickhousehttp
- обработчик протокола HTTP clickhousetls
- уровень шифрования TLSproxy1
- уровень PROXYv1mysql
- обработчик протокола совместимости MySQLpostgres
- обработчик протокола совместимости PostgreSQLprometheus
- обработчик протокола Prometheusinterserver
- обработчик clickhouse interserver
Обработчик протокола gRPC
не реализован для Композиционных протоколов
Настройка конечных точек
Конечные точки (порты прослушивания) обозначаются тегами <port>
и необязательными тегами <host>
.
Например, чтобы настроить конечную точку на ранее добавленном HTTP-уровне,
мы можем изменить нашу конфигурацию следующим образом:
Если тег <host>
пропущен, то используется <listen_host>
из корневой конфигурации.
Настройка последовательности уровней
Последовательности уровней определяются с помощью тега <impl>
, ссылающегося на другой
модуль. Например, чтобы настроить уровень TLS поверх нашего модуля plain_http,
мы можем дополнительно изменить нашу конфигурацию следующим образом:
Привязка конечных точек к уровням
Конечные точки могут быть привязаны к любому уровню. Например, мы можем определить конечные точки для HTTP (порт 8123) и HTTPS (порт 8443):
Определение дополнительных конечных точек
Дополнительные конечные точки можно определить, ссылаясь на любой модуль и пропуская
тег <type>
. Например, мы можем определить конечную точку another_http
для
модуля plain_http
следующим образом:
Указание дополнительных параметров уровня
Некоторые модули могут содержать дополнительные параметры уровня. Например, уровень TLS
позволяет задать закрытый ключ (privateKeyFile
) и файлы сертификатов (certificateFile
)
следующим образом: