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