PingKai Logo下载

TiGateway 部署

TiCDC 当前支持混合部署和独立部署两种方式。本文介绍在 TiCDC 独立部署场景下,如何使用 TiGateway 访问上游平凯数据库集群。如需在不依赖 TiGateway 的情况下独立部署 TiCDC,请参见 TiCDC 独立部署。

在 TiCDC 独立部署模式中,当 TiCDC 与应用端部署在下游同一网段、且上下游网络隔离时,下游 TiCDC 对上游 TiKV、PD 和 TiDB 组件的访问将集中到 TiGateway,由 TiGateway 统一转发请求。

软件和硬件环境推荐配置

在生产环境中,TiGateway 硬件配置推荐如下:

CPU内存硬盘网络TiGateway 实例数量(生产环境最低要求)
8 核+16 GB+200 GB+ SSD 类型硬盘万兆网卡(2 块最佳)2

产品组件介绍

tidb-server-{version}-linux-{arch}.tar.gz:TiGateway 以平凯数据库内部组件的形式随安装包一起提供。

TiGateway 与上游平凯数据库集群部署在同一侧网络中,可作为下游访问上游组件的统一入口。部署时,只需在上游集群的拓扑文件中增加 TiGateway 的配置声明即可。

TiGateway 具有以下特性:

  • 高可用(暂未完全支持):TiGateway 本身不维护业务状态,部署多个节点即可。若当前需要高可用访问,可在多个 TiGateway 节点前配置 VIP 供 TiCDC 访问。
  • 访问控制:TiGateway 工作在 TCP 层,不干涉上层 TLS 加密,可保障端到端的数据传输安全。同时,TiGateway 会定期检查上游平凯数据库集群中的 PD、TiKV 和 TiDB 节点,并维护可访问资源白名单。

推荐部署架构

TiGateway Architecture

如上图所示,网段 1 和网段 2 分别表示上游和下游,且下游无法直接访问上游。

  1. 在上游平凯数据库集群的拓扑文件中声明 TiGateway 组件,并通过 TiUP cluster 部署到上游网络。
  2. 确保下游网络可以访问 TiGateway 的服务端口和状态端口,默认分别为 1080 和 8000。
  3. 在下游网络中通过 TiUP cm 独立部署 TiCDC 和元数据组件 etcd,并在 TiCDC 的配置中指定 TiGateway 地址。

使用 TiUP 部署 TiGateway 和 TiCDC 独立集群

部署前准备

在部署 TiGateway 和 TiCDC 独立集群前,请注意以下事项:

  • 上游 TiGateway 通过 TiUP cluster 进行管理。
  • 下游 TiCDC 独立集群通过 TiUP cm 进行管理,请参见 TiCDC 独立部署。
  • 下游需提前确认可访问 TiGateway 的 1080 和 8000 端口。

1. 部署上游平凯数据库集群中的 TiGateway

请参考下面命令部署包含 TiGateway 组件的上游平凯数据库集群:

tar xzvf tidb-server-{version}-linux-{arch}.tar.gz
sh tidb-server-{version}-linux-{arch}/local_install.sh && source ~/.bash_profile

tiup cluster deploy <cluster-name> {version} ./topology-tigateway.yaml -u root -p
tiup cluster start <cluster-name>

topology.yaml 示例,这里以敏捷模式的平凯数据库为例:

global:
  kind: fusion
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/tidb-deploy"
  data_dir: "/tidb-data"

monitored:
  node_exporter_port: 9700
  blackbox_exporter_port: 9715

server_configs:
  pd:
    replication.max-replicas: 1
    replication.enable-placement-rules: false

tidb_servers:
  - host: 10.0.1.4

tigateway_servers:
  - host: 10.0.1.5

2. 部署下游 TiCDC 独立集群

TiCDC 独立部署的通用步骤请参见 TiCDC 独立部署。这里仅说明通过 TiGateway 访问上游时,与通用独立部署的差异配置。

完成独立部署安装包初始化后,编写一个名为 topology.yaml 的配置文件。与通用独立部署相比,这里的关键差异在于需要配置 tigateway 和 tigateway-status。为简洁起见,下面示例将其写在 server_configs.cdc 下;实际也可以按实例写在 cdc_servers[].config 下:

 global:
    user: "tidb"
    ssh_port: 22
    deploy_dir: "/cm-deploy"
    data_dir: "/cm-data"
 monitored:
    node_exporter_port: 9700
    blackbox_exporter_port: 9715
 server_configs:
    cdc:
       tigateway: "10.0.1.5:1080"
       tigateway-status: "10.0.1.5:8000"
 etcd_servers:
    - host: 10.0.2.4
    - host: 10.0.2.5
    - host: 10.0.2.6
 cdc_servers:
    - host: 10.0.2.7
    - host: 10.0.2.8
    - host: 10.0.2.9
 monitoring_servers:
    - host: 10.0.2.7
 grafana_servers:
    - host: 10.0.2.7
 alertmanager_servers:
    - host: 10.0.2.7

然后在 TiUP 中控机上执行类似下面的命令进行部署:

tiup cm deploy <cm-cluster-name> {version} ./topology.yaml -u root -p
tiup cm start <cm-cluster-name>

配置参数说明

TiCDC 独立部署

对于监控组件以及独立部署 TiCDC 的通用参数,不再赘述,请参见 TiCDC 独立部署 中的“配置参数说明”。这里仅说明通过 TiGateway 访问上游时,与通用独立部署相关的差异配置。

cdc_servers:
  - host: 127.0.0.1
    config:
      tigateway: "10.0.1.23:1080"
      tigateway-status: "10.0.1.23:8000"
  • config.tigateway:TiGateway 服务地址,格式为 ip:port,用于转发 TiCDC 对上游组件的访问请求。
  • config.tigateway-status:TiGateway 状态地址,格式为 ip:port,用于通过 HTTP 获取 TiGateway 状态和上游实例信息。

TiGateway 配置参数

对于平凯数据库集群中其他组件的配置不再赘述,这里仅说明 TiGateway 的配置参数。你也可以通过 tiup cluster template 查看模板。

global:
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/tidb-deploy"
  data_dir: "/tidb-data"
  listen_host: 0.0.0.0
  arch: "arm64"

monitored:
  node_exporter_port: 9100
  blackbox_exporter_port: 9115

pd_servers:
  - host: 10.0.1.11

tidb_servers:
  - host: 10.0.1.14

tikv_servers:
  - host: 10.0.1.17

tigateway_servers:
  - host: 10.0.1.23
    # ssh_port: 22
    # port: 1080
    # status_port: 8000
    # deploy_dir: "/tidb-deploy/tigateway-1080"
    # log_dir: "/tidb-deploy/tigateway-1080/log"
    # config:
    #   log.level: "info"
    #   whitelist-update-interval: "30s"

monitoring_servers:
  - host: 10.0.1.11
grafana_servers:
  - host: 10.0.1.11
alertmanager_servers:
  - host: 10.0.1.11

上面的 TiGateway 拓扑示例中:

  • host:服务器主机地址。
  • port:服务端口,用于接收转发请求,默认值为 1080。
  • status_port:状态和 HTTP API 端口,默认值为 8000。
  • deploy_dir:部署目录。
  • log_dir:日志目录。
  • config.log.level:日志等级。
  • config.whitelist-update-interval:白名单刷新间隔。

其它 TiUP 运维命令

下游 TiCDC 独立集群的运维命令请参见 TiCDC 独立部署 中的“其它 TiUP 运维命令”。这里仅说明 TiGateway 相关运维命令。

  1. 展示 TiGateway:

    tiup cluster display <cluster-name>
  2. 扩容 TiGateway:

    tiup cluster scale-out <cluster-name> scale-out-tigateway.yaml -u <username> -p

    scale-out-tigateway.yaml 示例:

    tigateway_servers:
      - host: 10.0.1.24
  3. 缩容 TiGateway:

    tiup cluster scale-in <cluster-name> -N 10.0.1.24:1080
  4. 终止和启动 TiGateway:

    tiup cluster stop <cluster-name> -R tigateway
    tiup cluster start <cluster-name> -R tigateway
    tiup cluster restart <cluster-name> -R tigateway