[转帖]生产环境 TiDB 集群混合部署实践

生产,环境,tidb,集群,混合,部署,实践 · 浏览次数 : 0

小编点评

## Summary of the Text This document describes a practical deployment of a hybrid TiDB cluster, where 10 physical machines are configured with 56C 384G 4TB NVMe drives. The cluster is divided into two parts, with 10.0.0.1 being the central cluster and 10.0.0.2-10.0.0.9 being the secondary cluster. **Key Points:** * The cluster was configured with mixed deployments of both TiDB and TiKV. * HA itself provides high availability for the cluster. * PD server and TiDB server availability are ensured by distributing them across the two clusters. * TiKV server is deployed with 3 replicas for increased availability. * Labels are used to optimize the placement of TiKV nodes for maximum efficiency. * The deployment successfully demonstrates the ability to achieve high availability with a limited number of servers. **Note:** * The text also provides a visual representation of the cluster architecture with comments. * The document is intended for reference and may have some minor inaccuracies or missing details.

正文

https://tidb.net/book/tidb-monthly/2022/2022-04/usercase/tidb-cluster

 

一、背景

由于各种场外因素导致我们不能自由选择的理想硬件环境,加之目前单台物理机的硬件配置往往都高于需求,为了更合理地规划资源,很多时候一台服务器不能够“奢侈地”只部署一个实例,而是会考虑单机多实例部署 TiDB 或者 TiKV。这就需要在现有的环境中尽可能地搭建满足高可用、高性能的TiDB集群。本文主要分享一次实际生产环境中混合部署TiDB集群的过程,供大家参考。

二、硬件配置

10台物理机,每台配置均为56C 384G 4块2TB NVME硬盘。监控、HA等机器使用虚拟机即可,因此不算在采购预算内。

配置达标,但是由于种种因素原本预计装一个集群的硬件需要混合部署2套集群。

三、集群拓扑规划

集群1

实例IP
TiDB & PD 10.0.0.1
TiDB & PD 10.0.0.2
PD 10.0.0.3
  10.0.0.4
Tikv *2 10.0.0.5
Tikv *2 10.0.0.6
Tikv *2 10.0.0.7
Tikv *2 10.0.0.8
Tikv *2 10.0.0.9
Tikv *2 10.0.0.10

集群2

实例IP
  10.0.0.1
PD 10.0.0.2
TiDB & PD 10.0.0.3
TiDB & PD 10.0.0.4
Tikv *2 10.0.0.5
Tikv *2 10.0.0.6
Tikv *2 10.0.0.7
Tikv *2 10.0.0.8
Tikv *2 10.0.0.9
Tikv *2 10.0.0.10

如果拆解成单独的集群,他们的架构应该是这样

image.png

但是实际上是混合部署,那么他们的架构应该是这样

![未命名文件 (10).jpg](https://tidb-blog.oss-cn-beijing.aliyuncs.com/media/未命名文件 (10)-1647272473002.jpg)

四、集群label规划

集群1拓扑tikv配置labels规划为:

image.png

集群2拓扑tikv配置labels规划为:

image.png

设置 PD 的 location-labels 配置:

location_labels = ["zone","rack","host"]
 

五、总结

本次操作是想在目前服务器数量不变的情况下尽可能做到高可用,但是由于成本等多方面因素并没有选择异地容灾及同城多机房容灾方案,所以选择了该混合部署方案。

HA本身的可用性:

haproxy+keepalived实现ha的高可用。

PD server及TiDB server的可用性:

由于pd和tidb是混合部署的,所以这里放在一起说。10.0.0.1-10.0.0.0.4为2套集群tidb和pd混部,从架构图中可以看到,任意一台服务器宕机,都最多只影响一套集群内的一个tidb节点和一个pd节点。同一套集群内tidb节点仍有一个可用,pd节点剩余2副本,tidb和pd都满足高可用。

TiKV server的可用性:

为了在具有相近物理位置的 TiKV 上只放置一个副本,PD可以根据 TiKV 的物理位置进行最优调度以尽可能的提高 TiKV 集群的可用性。我们都知道 Raft Group 副本数选择为3的 TiKV 集群可以容忍一个节点宕机而不丢失数据且正常提供服务。一个集群同时有两个 TiKV 节点宕机可以通过合理规划让同时故障的两个 TiKV 出现在同一个隔离区的概率变高来提高可用性。本次部署同样选择为3副本,服务器10.0.0.5(host1)和 10.0.0.6(host2)在一个机柜,10.0.0.7(host3)和 10.0.0.8(host4)在一个机柜,10.0.0.9(host5)和 10.0.0.10(host6)在一个机柜,根据上面的规划,虽然一台服务器上有2套集群的各2个TiKV实例,但是PD知道哪些TiKV节点在同一台服务器上,也知道哪些服务器在同一个机柜上。PD 在副本调度时,会按照 label 层级,保证同一份数据的不同副本尽可能分散,至少能够保证任一服务器宕机2套集群的TiKV均可用。也可以设置isolation-level参数来进一步加强对 TiKV 集群的拓扑隔离要求。任一机柜故障后,例如10.0.0.5和10.0.0.6同时宕机,由于2套集群中这两台服务器都只存放一个副本,TiDB 集群依然是可用的。

第一次发文章,希望能对各位大佬有帮助,实际部署也是很早之前了,如果有不严谨或者纰漏的地方也请见谅。

参考文章:https://tidb.io/blog/8f2a6d62

与[转帖]生产环境 TiDB 集群混合部署实践相似的内容:

[转帖]生产环境 TiDB 集群混合部署实践

https://tidb.net/book/tidb-monthly/2022/2022-04/usercase/tidb-cluster 一、背景​ 由于各种场外因素导致我们不能自由选择的理想硬件环境,加之目前单台物理机的硬件配置往往都高于需求,为了更合理地规划资源,很多时候一台服务器不能够“奢侈

[转帖]TiDB 环境与系统配置检查

https://docs.pingcap.com/zh/tidb/stable/check-before-deployment 在 TiKV 部署目标机器上添加数据盘 EXT4 文件系统挂载参数 生产环境部署,建议使用 EXT4 类型文件系统的 NVME 类型的 SSD 磁盘存储 TiKV 数据文件

[转帖]TiDB 环境与系统配置检查

https://docs-archive.pingcap.com/zh/tidb/v6.0/check-before-deployment 本文介绍部署 TiDB 前的环境检查操作,以下各项操作按优先级排序。 在 TiKV 部署目标机器上添加数据盘 EXT4 文件系统挂载参数 生产环境部署,建议使用

[转帖]麒麟v10上部署TiDBv5.1.2生产环境的最佳实践

https://tidb.net/book/tidb-monthly/2022/2022-07/usercase/tidb-v5-1-2 前言​ 笔者最近在一个银行项目中做 PoC 测试,由于客户选择了使用 TiDB 数据库,于是笔者在 TiDB 中选择了一个相对稳定并且 bug 较少的版本:TiD

[转帖]br备份时排除某个库

作者: qhd2004 原文来源: https://tidb.net/blog/2a88149e 生产环境中我们使用br来备份数据库,但是有时候可能需要排除某个库,比如,skywalking后台库(实际中是skywalking暂时放在tidb中,后面会转到es,并且skywalking的数据对我们来

[转帖]br 备份时排除某个库

https://tidb.net/book/tidb-monthly/2023/2023-02/usercase/excluded-a-storeroom-during-br-backup 生产环境中我们使用br来备份数据库,但是有时候可能需要排除某个库,比如,skywalking后台库(实际中是s

[转帖]生产环境shell脚本安全之shc编译(转C)

https://www.jianshu.com/p/17399dcd1471 应用场景很多,如,中小项目大多使用mysql,那么在你的mysqladmin备份脚本里可能存在明文的密码,此时由于公司服务器可能多个同事使用,那么转码加密脚本至关重要! 1,首先 SHC安装(建议使用交新版本,如 4.0.

[转帖]yum 下载全量依赖 rpm 包及离线安装(终极解决方案)

简介 通常生产环境由于安全原因都无法访问互联网。此时就需要进行离线安装,主要有两种方式:源码编译、rpm包安装。源码编译耗费时间长且缺乏编译环境,所以一般都选择使用离线 rpm 包安装。 验证环境 Centos 7.2 查看依赖包 可以使用“yum deplist”命令来查找 rpm 包的依赖列表。

[转帖]Redis集群实例内存使用率飙升排查

在一个阳光明媚的下午,突然生产环境有一个缓存实例发出内存使用率超过90%的告警,然后立刻和小伙伴们一起看是什么情况。 现象是这样的,集群里的一个实例的内存使用率超过了90%,而这个实例的从节点,内存使用率却很低。而且其他分片的内存使用率都很低,只有这个分片高。见下图cachecloud实例状态图。

[转帖]nginx版本区别

https://www.easck.com/cos/2020/0801/567085.shtml 生产环境使用Stable version:最新稳定版。 注意各版本的区别:Nginx官网提供了三个类型的版本 1、Mainline version:Mainline 是 Nginx 目前主力在做的版本,