コンポーザブルプロトコル
概要
コンポーザブルプロトコルは、ClickHouseサーバーへのTCPアクセスのより柔軟な構成を可能にします。この構成は、従来の構成と共存するか、またはそれを置き換えることができます。
コンポーザブルプロトコルの構成
コンポーザブルプロトコルは、XML構成ファイルで構成できます。プロトコルセクションは、XML構成ファイル内のprotocolsタグによって示されます:
プロトコル層の構成
基本モジュールを使用してプロトコル層を定義できます。たとえば、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>タグを使用して、別のモジュールを参照し定義されます。たとえば、plain_httpモジュールの上にTLS層を構成するには、構成を次のようにさらに変更できます:
エンドポイントを層に接続する
エンドポイントは任意の層に接続できます。たとえば、HTTP(ポート8123)とHTTPS(ポート8443)のためのエンドポイントを定義できます:
追加エンドポイントの定義
追加のエンドポイントは、任意のモジュールを参照し、<type>タグを省略することで定義できます。たとえば、plain_httpモジュールのためにanother_httpエンドポイントを次のように定義できます:
追加の層パラメータの指定
いくつかのモジュールには、追加の層パラメータを含めることができます。たとえば、TLS層では、プライベートキー(privateKeyFile)および証明書ファイル(certificateFile)を次のように指定できます:
