Перейти к основному содержимому
Перейти к основному содержимому

Составные протоколы

Обзор

Составные протоколы позволяют более гибкую конфигурацию TCP-доступа к серверу ClickHouse. Эта конфигурация может сосуществовать рядом с обычной конфигурацией или заменять её.

Конфигурация составных протоколов

Составные протоколы можно настроить в XML-файле конфигурации. Раздел протоколов обозначается тегами protocols в XML-файле конфигурации:

Конфигурация уровней протокола

Вы можете определить уровни протокола, используя базовые модули. Например, чтобы определить HTTP-уровень, вы можете добавить новый базовый модуль в раздел protocols:

Модули могут быть настроены в соответствии с:

  • plain_http - имя, по которому можно ссылаться с другого уровня
  • type - обозначает обработчик протокола, который будет создан для обработки данных. Он имеет следующий набор предопределённых обработчиков протоколов:
    • tcp - нативный обработчик протокола ClickHouse
    • http - обработчик протокола HTTP ClickHouse
    • tls - уровень шифрования TLS
    • proxy1 - уровень PROXYv1
    • mysql - обработчик протокола совместимости с MySQL
    • postgres - обработчик протокола совместимости с PostgreSQL
    • prometheus - обработчик протокола Prometheus
    • interserver - обработчик межсерверного взаимодействия ClickHouse
примечание

Обработчик протокола gRPC не реализован для Составных протоколов

Конфигурация конечных точек

Конечные точки (слушающие порты) обозначены тегами <port> и опциональными тегами <host>. Например, для настройки конечной точки на ранее добавленном уровне HTTP мы можем изменить нашу конфигурацию следующим образом:

Если тег <host> опущен, то используется <listen_host> из корневой конфигурации.

Конфигурация последовательностей уровней

Последовательности уровней определяются с помощью тега <impl> и ссылки на другой модуль. Например, чтобы настроить уровень TLS поверх нашего модуля plain_http, мы можем дополнительно изменить нашу конфигурацию следующим образом:

Присоединение конечных точек к уровням

Конечные точки могут быть прикреплены к любому уровню. Например, мы можем определить конечные точки для HTTP (порт 8123) и HTTPS (порт 8443):

Определение дополнительных конечных точек

Дополнительные конечные точки могут быть определены путем ссылки на любой модуль и опускаем тега <type>. Например, мы можем определить конечную точку another_http для модуля plain_http следующим образом:

Указание дополнительных параметров уровня

Некоторые модули могут содержать дополнительные параметры уровня. Например, уровень TLS позволяет указать закрытый ключ (privateKeyFile) и файлы сертификатов (certificateFile) следующим образом: