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

Композиционные протоколы

Обзор

Композиционные протоколы позволяют более гибкую конфигурацию 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 interserver
примечание

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

Настройка конечных точек

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

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

Настройка последовательности уровней

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

Привязка конечных точек к уровням

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

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

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

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

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