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