mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 01:51:59 +00:00
Merge pull request #62521 from ClickHouse/doc-composable-protocols
Doc: add Composable Protocols
This commit is contained in:
commit
219b83948d
155
docs/en/operations/settings/composable-protocols.md
Normal file
155
docs/en/operations/settings/composable-protocols.md
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
---
|
||||||
|
slug: /en/operations/settings/composable-protocols
|
||||||
|
sidebar_position: 64
|
||||||
|
sidebar_label: Composable Protocols
|
||||||
|
---
|
||||||
|
|
||||||
|
# Composable Protocols
|
||||||
|
|
||||||
|
Composable protocols allows more flexible configuration of TCP access to the ClickHouse server. This configuration can co-exist with or replace conventional configuration.
|
||||||
|
|
||||||
|
## Composable protocols section is denoted as `protocols` in configuration xml
|
||||||
|
**Example:**
|
||||||
|
``` xml
|
||||||
|
<protocols>
|
||||||
|
|
||||||
|
</protocols>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Basic modules define protocol layers
|
||||||
|
**Example:**
|
||||||
|
``` xml
|
||||||
|
<protocols>
|
||||||
|
|
||||||
|
<!-- plain_http module -->
|
||||||
|
<plain_http>
|
||||||
|
<type>http</type>
|
||||||
|
</plain_http>
|
||||||
|
|
||||||
|
</protocols>
|
||||||
|
```
|
||||||
|
where:
|
||||||
|
- `plain_http` - name which can be referred by another layer
|
||||||
|
- `type` - denotes protocol handler which will be instantiated to process data, set of protocol handlers is predefined:
|
||||||
|
* `tcp` - native clickhouse protocol handler
|
||||||
|
* `http` - http clickhouse protocol handler
|
||||||
|
* `tls` - TLS encryption layer
|
||||||
|
* `proxy1` - PROXYv1 layer
|
||||||
|
* `mysql` - MySQL compatibility protocol handler
|
||||||
|
* `postgres` - PostgreSQL compatibility protocol handler
|
||||||
|
* `prometheus` - Prometheus protocol handler
|
||||||
|
* `interserver` - clickhouse interserver handler
|
||||||
|
|
||||||
|
:::note
|
||||||
|
`gRPC` protocol handler is not implemented for `Composable protocols`
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Endpoint (i.e. listening port) is denoted by `<port>` and (optional) `<host>` tags
|
||||||
|
**Example:**
|
||||||
|
``` xml
|
||||||
|
<protocols>
|
||||||
|
|
||||||
|
<plain_http>
|
||||||
|
|
||||||
|
<type>http</type>
|
||||||
|
<!-- endpoint -->
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8123</port>
|
||||||
|
|
||||||
|
</plain_http>
|
||||||
|
|
||||||
|
</protocols>
|
||||||
|
```
|
||||||
|
If `<host>` is omitted, then `<listen_host>` from root config is used.
|
||||||
|
|
||||||
|
## Layers sequence is defined by `<impl>` tag, referencing another module
|
||||||
|
**Example:** definition for HTTPS protocol
|
||||||
|
``` xml
|
||||||
|
<protocols>
|
||||||
|
|
||||||
|
<!-- http module -->
|
||||||
|
<plain_http>
|
||||||
|
<type>http</type>
|
||||||
|
</plain_http>
|
||||||
|
|
||||||
|
<!-- https module configured as a tls layer on top of plain_http module -->
|
||||||
|
<https>
|
||||||
|
<type>tls</type>
|
||||||
|
<impl>plain_http</impl>
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8443</port>
|
||||||
|
</https>
|
||||||
|
|
||||||
|
</protocols>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Endpoint can be attached to any layer
|
||||||
|
**Example:** definition for HTTP (port 8123) and HTTPS (port 8443) endpoints
|
||||||
|
``` xml
|
||||||
|
<protocols>
|
||||||
|
|
||||||
|
<plain_http>
|
||||||
|
<type>http</type>
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8123</port>
|
||||||
|
</plain_http>
|
||||||
|
|
||||||
|
<https>
|
||||||
|
<type>tls</type>
|
||||||
|
<impl>plain_http</impl>
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8443</port>
|
||||||
|
</https>
|
||||||
|
|
||||||
|
</protocols>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional endpoints can be defined by referencing any module and omitting `<type>` tag
|
||||||
|
**Example:** `another_http` endpoint is defined for `plain_http` module
|
||||||
|
``` xml
|
||||||
|
<protocols>
|
||||||
|
|
||||||
|
<plain_http>
|
||||||
|
<type>http</type>
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8123</port>
|
||||||
|
</plain_http>
|
||||||
|
|
||||||
|
<https>
|
||||||
|
<type>tls</type>
|
||||||
|
<impl>plain_http</impl>
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8443</port>
|
||||||
|
</https>
|
||||||
|
|
||||||
|
<another_http>
|
||||||
|
<impl>plain_http</impl>
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8223</port>
|
||||||
|
</another_http>
|
||||||
|
|
||||||
|
</protocols>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Some modules can contain specific for its layer parameters
|
||||||
|
**Example:** for TLS layer private key (`privateKeyFile`) and certificate files (`certificateFile`) can be specified
|
||||||
|
``` xml
|
||||||
|
<protocols>
|
||||||
|
|
||||||
|
<plain_http>
|
||||||
|
<type>http</type>
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8123</port>
|
||||||
|
</plain_http>
|
||||||
|
|
||||||
|
<https>
|
||||||
|
<type>tls</type>
|
||||||
|
<impl>plain_http</impl>
|
||||||
|
<host>127.0.0.1</host>
|
||||||
|
<port>8443</port>
|
||||||
|
<privateKeyFile>another_server.key</privateKeyFile>
|
||||||
|
<certificateFile>another_server.crt</certificateFile>
|
||||||
|
</https>
|
||||||
|
|
||||||
|
</protocols>
|
||||||
|
```
|
@ -183,6 +183,8 @@ CompiledExpressionCacheCount
|
|||||||
ComplexKeyCache
|
ComplexKeyCache
|
||||||
ComplexKeyDirect
|
ComplexKeyDirect
|
||||||
ComplexKeyHashed
|
ComplexKeyHashed
|
||||||
|
Composable
|
||||||
|
composable
|
||||||
Config
|
Config
|
||||||
ConnectionDetails
|
ConnectionDetails
|
||||||
Const
|
Const
|
||||||
@ -697,6 +699,7 @@ PCRE
|
|||||||
PRCP
|
PRCP
|
||||||
PREWHERE
|
PREWHERE
|
||||||
PROCESSLIST
|
PROCESSLIST
|
||||||
|
PROXYv
|
||||||
PSUN
|
PSUN
|
||||||
PagerDuty
|
PagerDuty
|
||||||
ParallelFormattingOutputFormatThreads
|
ParallelFormattingOutputFormatThreads
|
||||||
|
Loading…
Reference in New Issue
Block a user