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

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

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

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

四、集群label规划

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

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

设置 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 集群混合部署实践的更多相关文章

  1. 单例模式在生产环境jedis集群中的应用

    背景:不久前单位上线一款应用,上了生产环境之后,没过多久,便吃掉了服务器所有的内存,最后导致网站服务挂了. 在解决了这一问题之后,我发现这其实是典型的一单例模式,现分享一下. 之前存在问题的老代码如下 ...

  2. 使用ubuntu charmed kubernetes 部署一套生产环境的集群

    官方文档: https://ubuntu.com/kubernetes/docs 搭建一个基本的集群 集群ip规划 hostname ip ubuntu-1 10.0.0.10 juju-contro ...

  3. ELK 中的elasticsearch 集群的部署

    本文内容 背景 ES集群中第一个master节点 ES slave节点 本文总结 Elasticsearch(以下简称ES)搭建集群的经验.以 Elasticsearch-rtf-2.2.1 版本为例 ...

  4. TiDB集群安装主要操作

    TiDB集群安装主要操作 参考资料:https://www.cnblogs.com/plyx/archive/2018/12/21/10158615.html 一.TiDB数据简介 TiDB 是 Pi ...

  5. Centos7配置TiDB集群

    一:各模块属性 模块名称 状态 建议实例数 功能 负载均衡组件 TiDB 无状态 2 接收SQL请求,处理SQL相关逻辑,并通过PB找到存储数据的TiKV地址 LVS.HAProxy.F5 PB 集群 ...

  6. 使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...

  7. Tiup离线安装TIDB集群4.0.16版本

    环境:centos7.6 中控机:8.213.8.25(内网) 可用服务器8.213.8.25-8.213.8.29 一.准备 TiUP 离线组件包 方法1:外网下载离线安装包拷贝进内网服务器 在Ti ...

  8. 【分布式事务】基于RocketMQ搭建生产级消息集群?

    导读 目前很多互联网公司的系统都在朝着微服务化.分布式化系统的方向在演进,这带来了很多好处,也带来了一些棘手的问题,其中最棘手的莫过于数据一致性问题了.早期我们的软件功能都在一个进程中,数据的一致性可 ...

  9. 在线安装TIDB集群

     在线安装TiDB集群 服务器准备 说明:TiDB8需要能够连接外网,以便下载各类安装包 TiDB4非必须,但最好是有一台,因为后续测试Mysql数据同步或者进行性能比较时,都要用到 TiKV最好是采 ...

  10. tidb集群

    tidb ansible部署 https://zhuanlan.zhihu.com/p/27308307?refer=newsql 网址:http://www.cnblogs.com/mowei/p/ ...

随机推荐

  1. 27、flutter Dialog 弹窗

    AlertDialog //放在State<>之下 void _alertDialog() async { var result = await showDialog( barrierDi ...

  2. 你要了解的 OpenAI 那些事:创立简史,技术背景等

    原文: https://openaigptguide.com/what-is-openai/ OpenAI 是一家人工智能研究公司,成立于2015年,总部位于美国旧金山.目前,OpenAI由创始人Sa ...

  3. 第十二部分_强悍的sed

    一.文件编辑器知多少 Windows系统​ ​ UltraEdit等 Linux系统 ​ vim vi gedit nano emacs 二.强悍的sed介绍 1. sed用来做啥? sed是Stre ...

  4. 教你用Python 编写 Hadoop MapReduce 程序

    摘要:Hadoop Streaming 使用 MapReduce 框架,该框架可用于编写应用程序来处理海量数据. 本文分享自华为云社区<Hadoop Streaming:用 Python 编写 ...

  5. 带你了解Node.js包管理工具:包与NPM

    摘要:包与NPM Node组织了自身的核心模块,也使得第三方文件模块可以有序的编写和使用. 本文分享自华为云社区<NodeJs深入浅出之旅:包与NPM>,作者:空城机. 包与NPM Nod ...

  6. linux 账号管理 添加用户与修改用户权限与密码

    添加用户 useradd zhoulujun 修改用户密码 passwd  zhoulujun 修改用户组 usermod -g root  zhoulujun 记住这个几个就够了--

  7. 高颜值开源数据可视化工具——Superset 2.0正式发布!

    ​ Superset终于迎来了又一个重大的版本更新.使用superset已经近三年的时间了,其为我们提供了数据可视化的解决方案.也成为了最好的商用BI的替代方案. ​ 在Github上本次更新已经发布 ...

  8. 火山引擎 DataLeap:3 小时分享,体系化讲透企业数据治理如何做?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 数据治理伴随着数据全生命周期的进程,涉及事前规范检查.事中监控管理.事后优化复盘等过程,关键重点领域包括数据质量的 ...

  9. 锁定/解锁账户BAPI

    一.锁定/解锁账户 锁定账户后,该账户不能在SAP系统登录,但是已经登录的用户,仍然可以继续使用 解锁账户后,该账户就可以正常登录使用 "-------------------------- ...

  10. 【Cpp】RTTI 机制原理解析

    References Baidu Wiki C++中的RTTI机制详解 RTTI 推荐阅读: RTTI 原理 推荐阅读:C++中的RTTI机制 什么是RTTI机制? RTTI 是"Runti ...