导读
TiProxy 是 TiDB 官方推出的高可用代理组件,旨在替代传统的负载均衡工具如 HAProxy 和 KeepAlived,为 TiDB 提供连接迁移、故障转移、服务发现等核心能力。 本文全面解析了 TiProxy 的设计理念、主要功能及适用场景,并通过实际案例展示了其在扩缩容、故障处理和流量捕捉与回放中的强大能力。
前言
TiDB 是一款典型的分布式存算分离架构的数据库,其中计算层由多个无状态的 TiDB Server 组成,这些 TiDB Server 同时对外承担连接请求。为了可以将连接分发到多个 TiDB Server 节点上,一般需要借助外部负载均衡组件如硬件负载均衡 F5、软件负载均衡 HAProxy 等。
为了实现全链路的高可用架构,我们经常也需要考虑负载均衡组件本身的高可用性,比如通过 KeepAlived 来保证 HAProxy 的高可用。这无疑增加了整体的使用成本,尤其是对于使用最小规模的 TiDB 集群部署已经能够完全承载业务体量的系统而言。
什么是 TiProxy
如果用户本身没有现成的负载均衡设备,则必须搭建一套类似 KeepAlived+HAProxy 的高可用负载均衡层,增加了维护的成本, KeepAlived 和 HAProxy 本身也不属于 TiDB 数据库生态的组件,出现问题也只能寻找现网的解决方法。TiProxy 是 TiDB 官方的代理组件,它为 TiDB 提供负载均衡、连接保持、服务发现等功能,是替换开源的 KeepAlived+HAProxy 或其他负载均衡软件有效的方案。
TiProxy 的主要能力
TiProxy 的主要功能包括:连接迁移、故障转移、服务发现和一键部署。
- 连接迁移。 连接迁移就是说可以把客户端连接从 A 计算节点迁移到 B 计算节点而不影响业务。这种通常在 扩缩容、滚动升级、滚动重 启 场景使用,是一种计划内的动作,如果是计算节点异常下线这种情况,则不属于连接迁移的范畴。
- 故障转移。 故障转移就是说当发现有计算节点故障的时候,比如 OOM 或是发现与 PD/TiKV 组件无法连接时,TiProxy 可以发现故障并将连接转移到正常的计算节点上。
- 服 务发现。 使用外部的负载均衡组件时无法自动感知到有计算节点变化的情况,比如对计算节点做了扩缩容,而使用 TiProxy 就能自动的发现新增/删除的计算节点,不需要人工介入。
- 一键部署。 TiProxy 被集成到 TiUP、TiOperator 管理工具中,可通过 tiup 命令直接扩容的方式安装即可,不需要单独下载并单独安装。
TiProxy 的适用场景
基于上述介绍的 TiProxy 主要能力,我们可以梳理出 TiProxy 比较适用的场景。
- 可用性要求高的业务。 有些业务系统通常要求