Композиционные протоколы
Обзор
Композиционные протоколы позволяют более гибкую конфигурацию 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)
следующим образом: