TiDB v8.0 组件 TiProxy 测试
作者: 像风一样的男子原文来源:https://tidb.net/blog/bf37b9ec
近日 TiDB 发布了 8.0 DMR 版本,更新了好几个新功能,期中就有大家期待的代理组件 TiProxy 成为正式功能 (GA)。
TiDB v7.6.0 引入了代理组件 TiProxy 作为实验特性。TiProxy 是 TiDB 的官方代理组件,位于客户端和 TiDB server 之间,为 TiDB 提供负载均衡、连接保持功能,让 TiDB 集群的负载更加均衡,并在维护操作期间不影响用户对数据库的连接访问。
在 v8.0.0 中,TiProxy 成为正式功能,完善了签名证书自动生成、监控等功能。
TiProxy 的应用场景如下:
在 TiDB 集群进行滚动重启、滚动升级、缩容等维护操作时,TiDB server 会发生变动,导致客户端与发生变化的 TiDB server 的连接中断。通过使用 TiProxy,可以在这些维护操作过程中平滑地将连接迁移至其他 TiDB server,从而让客户端不受影响。
所有客户端对 TiDB server 的连接都无法动态迁移至其他 TiDB server。当多个 TiDB server 的负载不均衡时,可能出现整体集群资源充足,但某些 TiDB server 资源耗尽导致延迟大幅度增加的情况。为解决此问题,TiProxy 提供连接动态迁移功能,在客户端无感的前提下,将连接从一个 TiDB server 迁移至其他 TiDB server,从而实现 TiDB 集群的负载均衡。
TiProxy 已集成至 TiUP、TiDB Operator、TiDB Dashboard 等 TiDB 基本组件中,可以方便地进行配置、部署和运维。
安装部署
升级 TIDB 版本到 8.0
可以看到 tiproxy 组件已经集成到 TiDB Dashboard 中。
扩容 Tiproxy
Tiproxy 组件现在可以通过 tiup scale- out 直接扩容,安装非常方便。
这里编写个简单的配置文件,其他配置可参考 https://docs.pingcap.com/zh/tidb/dev/tiproxy-configuration
vi tiproxy.yaml
tiproxy_servers:
- host: 10.20.10.137
通过 tiup 工具扩容
tiup cluster scale-out tsp-prod-taos-cluster tiproxy.yaml -u root -p
安装就是如此的简单。
navcait 连接 tiproxy 默认端口 6000 到 tidb 数据库
· TiProxy 连接的 PD 地址。TiProxy 通过从 PD 获取 TiDB 列表来发现 TiDB 实例,不需要额外的配置各个 tidb 服务。如果使用 TiUP 或 TiDB Operator 部署 TiProxy,则会自动设置此项。
性能测试
官网提供了一份测试报告。https://docs.pingcap.com/zh/tidb/dev/tiproxy-performance-test
报告测试了 TiProxy 在 OLTP 场景下的 Sysbench 性能表现,并和 HAProxy 的性能做了对比。
结果显示:
TiProxy 的 QPS 上限受工作负载类型的影响。在 Sysbench 的基本工作负载、同等 CPU 使用率的情况下,TiProxy 的 QPS 比 HAProxy 低约 25%
TiProxy 能承载的 TiDB server 实例数量根据工作负载类型而变化。在 Sysbench 的基本工作负载下,一台 TiProxy 能承载 5 至 12 台同机型的 TiDB server 实例
查询结果集的行数对 TiProxy 的 QPS 有显著影响,且影响程度与 HAProxy 相同
TiProxy 的性能随 vCPU 的数量接近线性增长,因此增加 vCPU 的数量可以有效提高 QPS 上限
长连接的数量、短连接的创建频率对 TiProxy 的 QPS 影响很小
本文这里做个简单的 TPCC 测试。
通过 TiUP 命令下载测试程序:
tiup install bench
导入数据
在 shell 中运行 TiUP 命令:
tiup bench tpcc -H 10.20.10.137 -P 6000 -Uroot -p’$9LBzi4_&JF6u301=e’ -D tpcc –warehouses 1000 –threads 20 prepare
运行测试
通过云厂商 slb 连接 tidb 做 TPCC 测试
tiup bench tpcc -H10.20.10.71 -P4002 -Uroot -p’$9LBzi4_&JF6u301=e’ -D tpcc –warehouses 1000 –threads 100 –time 10m run
测试结果
tpmC: 49221.1, tpmTotal: 109339.8, efficiency: 382.7%
通过 Tiproxy 连接 tidb 做 TPCC 测试:
tiup bench tpcc -H 10.20.10.137 -P 6000 -Uroot -p’$9LBzi4_&JF6u301=e’ -D tpcc –warehouses 1000 –threads 100 –time 10m run
运行过程中控制台上会持续打印测试结果:
tpmC: 43659.1, tpmTotal: 97253.7, efficiency: 339.5%
测试结果:
通过 TiProxy 过来的请求平均分散在三个 tidb 节点上。
TiProxy 的 QPS 上限受工作负载类型的影响。在 TPCC 的基本工作负载、同等 CPU 使用率的情况下,TiProxy 的 QPS 比 云厂商的 slb 低约 12%,TiProxy 的 tmpc 能力比云厂商的 slb 也是低了约 12%。
结论
TiProxy 为 TiDB 提供负载均衡、连接保持、服务发现等功能已经趋近完美,安装部署非常方便,基本能够满足线下集群的使用。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/c555016698d65656fcc4dceac】。文章转载请联系作者。
评论