TiGateway 部署
TiCDC 当前支持混合部署和独立部署两种方式。本文介绍在 TiCDC 独立部署场景下,如何使用 TiGateway 访问上游平凯数据库集群。如需在不依赖 TiGateway 的情况下独立部署 TiCDC,请参见 TiCDC 独立部署。
在 TiCDC 独立部署模式中,当 TiCDC 与应用端部署在下游同一网段、且上下游网络隔离时,下游 TiCDC 对上游 TiKV、PD 和 TiDB 组件的访问将集中到 TiGateway,由 TiGateway 统一转发请求。
注意:在 TiCDC 独立部署场景下,建议同时部署 TiGateway。若需要实现如下功能,则必须借助 TiGateway:
- 上下游网络隔离时的数据同步
- 独立部署的 TiCDC 对上游 PD 组件因扩缩容等因素带来的实例变更动态感知
软件和硬件环境推荐配置
在生产环境中,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 节点,并维护可访问资源白名单。
推荐部署架构

如上图所示,网段 1 和网段 2 分别表示上游和下游,且下游无法直接访问上游。
- 在上游平凯数据库集群的拓扑文件中声明 TiGateway 组件,并通过 TiUP
cluster部署到上游网络。 - 确保下游网络可以访问 TiGateway 的服务端口和状态端口,默认分别为
1080和8000。 - 在下游网络中通过 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.52. 部署下游 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 访问上游的场景下,不要配置
config.pd。请使用config.tigateway和config.tigateway-status访问上游。
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 相关运维命令。
-
展示 TiGateway:
tiup cluster display <cluster-name> -
扩容 TiGateway:
tiup cluster scale-out <cluster-name> scale-out-tigateway.yaml -u <username> -pscale-out-tigateway.yaml示例:tigateway_servers: - host: 10.0.1.24 -
缩容 TiGateway:
tiup cluster scale-in <cluster-name> -N 10.0.1.24:1080 -
终止和启动 TiGateway:
tiup cluster stop <cluster-name> -R tigateway tiup cluster start <cluster-name> -R tigateway tiup cluster restart <cluster-name> -R tigateway