跳至主要内容
跳至主要内容
编辑此页

可组合协议

概述

可组合协议允许更灵活地配置 TCP 访问 ClickHouse 服务器。此配置可以与常规配置共存,或替换常规配置。

配置可组合协议

可组合协议可以在 XML 配置文件中进行配置。协议部分在 XML 配置文件中使用 protocols 标签表示

<protocols>

</protocols>

配置协议层

您可以使用基本模块定义协议层。例如,要定义 HTTP 层,您可以将一个新的基本模块添加到 protocols 部分

<protocols>

  <!-- plain_http module -->
  <plain_http>
    <type>http</type>
  </plain_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 层的端点,我们可以如下修改配置

<protocols>

  <plain_http>

    <type>http</type>
    <!-- endpoint -->
    <host>127.0.0.1</host>
    <port>8123</port>

  </plain_http>

</protocols>

如果省略 <host> 标签,则使用根配置中的 <listen_host>

配置层序列

使用 <impl> 标签并引用另一个模块来定义层序列。例如,要在我们的 plain_http 模块之上配置 TLS 层,我们可以进一步修改配置如下

<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>

将端点附加到层

可以将端点附加到任何层。例如,我们可以为 HTTP(端口 8123)和 HTTPS(端口 8443)定义端点

<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>

定义额外的端点

可以通过引用任何模块并省略 <type> 标签来定义额外的端点。例如,我们可以为 plain_http 模块定义 another_http 端点如下

<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>

指定额外的层参数

某些模块可以包含额外的层参数。例如,TLS 层允许指定私钥(privateKeyFile)和证书文件(certificateFile),如下所示

<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>
    © . This site is unofficial and not affiliated with ClickHouse, Inc.