コンポーザブルプロトコル
概要
コンポーザブルプロトコルは、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
)を次のように指定できます: