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