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