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