写点什么

通过 TiDB Operator 为已有 TiDB 集群部署异构集群

  • 2023-03-10
    北京
  • 本文字数:2843 字

    阅读完需:约 9 分钟

作者: lqbyz 原文来源:https://tidb.net/blog/21dee5a3


本文档介绍如何为已有的的 tidb 集群再部署一个不同服务组件构建的集群。异构集群是与已有 TiDB 集群不同配置的节点构成的集群。

适用场景

适用于基于已有的 TiDB 集群需要创建一个差异化配置的实例节点的场景,例如:


  • 创建不同配置不同 Label 的 TiKV 集群用于热点调度

  • 创建不同配置的 TiDB 集群分别用于 OLTP 和 OLAP 查询

前置条件

已经存在一个 TiDB 集群。如果尚未部署 TiDB 集群,请现在 K8S 环境中构建一个 TiDB 集群。

部署异构集群

依据是否需要为异构集群开启 TLS,分为方式一和方式二,可任选。

方式一,非 TLS 部署

为异构集群新建一个集群配置文件。

执行以下指令创建异构集群配置文件,其中 origin_cluster_name 为要加入的原集群名称,heterogeneous_cluster_name 为异构集群名称,为了后续在 TidbMonitor 的 Grafana 中同时查看原集群和异构集群的监控数据,请以原集群名称为前缀对异构集群进行命名。


origin_cluster_name=basicheterogeneous_cluster_name=basic-heterogcat > cluster.yaml << EOFapiVersion: pingcap.com/v1alpha1kind: TidbClustermetadata:  name: ${heterogeneous_cluster_name}spec:  configUpdateStrategy: RollingUpdate  version: v6.5.0  timezone: UTC  pvReclaimPolicy: Delete  discovery: {}  cluster:    name: ${origin_cluster_name}  tikv:    baseImage: pingcap/tikv    maxFailoverCount: 0    replicas: 1    # 如果不设置 storageClassName,TiDB Operator 将使用 Kubernetes 集群默认的 Storage Class    # storageClassName: local-storage    requests:      storage: "100Gi"    config: {}  tidb:    baseImage: pingcap/tidb    maxFailoverCount: 0    replicas: 1    service:      type: ClusterIP    config: {}  tiflash:    baseImage: pingcap/tiflash    maxFailoverCount: 0    replicas: 1    storageClaims:      - resources:          requests:            storage: 100GiEOF
复制代码


相比于普通 TiDB 集群配置文件,异构集群配置文件的唯一区别是,你需要额外配置 spec.cluster.name 字段为已有的 TiDB 集群名。通过此字段,TiDB Operator 会将该异构集群加入到已有的 TiDB 集群。

依据需要,修改异构集群配置文件中各组件节点的配置项

如果不需要或者删除不需要的组件,可以不加相关的配置或 replicas 为 0


apiVersion: pingcap.com/v1alpha1kind: TidbClustermetadata:  name: idc  namespace: lqbyzspec:  configUpdateStrategy: RollingUpdate  version: v6.5.0  timezone: UTC  pvReclaimPolicy: Delete  discovery: {}  cluster:    name: tidb-test  tikv:    baseImage: pingcap/tikv    maxFailoverCount: 0    replicas: 3#    # 如果不设置 storageClassName,TiDB Operator 将使用 Kubernetes 集群默认的 Storage Class    storageClassName: local-hostpath    requests:      storage: "20Gi"    config: {}  tidb:    baseImage: pingcap/tidb    maxFailoverCount: 0    replicas: 3    service:      type: ClusterIP    config: {}  tiflash:    baseImage: pingcap/tiflash    maxFailoverCount: 0    replicas: 1    storageClaims:      - resources:          requests:
复制代码

创建异构集群

kubectl create -f cluster.yaml -n ${namespace}
复制代码


方式二,TLS 部署

开启异构集群 TLS 需要显示声明,需要创建新的 Secret 证书文件,使用和目标集群相同的 CA (Certification Authority) 颁发。如果使用 cert-manager 方式,需要使用和目标集群相同的 Issuer 来创建 Certificate


为异构集群创建证书的详细步骤,可参考以下文档:



创建证书后,要部署一个开启 TLS 的异构集群,请进行以下操作:

为异构集群新建一个集群配置文件。

执行以下指令创建异构集群配置文件,其中 origin_cluster_name 为要加入的原集群名称,heterogeneous_cluster_name 为异构集群名称,为了后续在 TidbMonitor 的 Grafana 中同时查看原集群和异构集群的监控数据,请以原集群名称为前缀对异构集群进行命名。


apiVersion: pingcap.com/v1alpha1kind: TidbClustermetadata:  name: ${heterogeneous_cluster_name}spec:  tlsCluster:    enabled: true  configUpdateStrategy: RollingUpdate  version: v6.5.0  timezone: UTC  pvReclaimPolicy: Delete  discovery: {}  cluster:    name: ${origin_cluster_name}  tikv:    baseImage: pingcap/tikv    maxFailoverCount: 0    replicas: 1    # 如果不设置 storageClassName,TiDB Operator 将使用 Kubernetes 集群默认的 Storage Class    # storageClassName: local-storage    requests:      storage: "100Gi"    config: {}  tidb:    baseImage: pingcap/tidb    maxFailoverCount: 0    replicas: 1    service:      type: ClusterIP    config: {}    tlsClient:      enabled: true  tiflash:    baseImage: pingcap/tiflash    maxFailoverCount: 0    replicas: 1    storageClaims:      - resources:          requests:            storage: 100Gi
复制代码

依据需要,修改异构集群配置文件中各节点的配置项。

例如,你可以修改 cluster.yaml 文件中各组件的 replicas 数量或者删除不需要的组件。

执行以下命令创建开启 TLS 的异构集群。你需要将 cluster.yaml 替换为你的异构集群配置文件名。

kubectl create -f cluster.yaml -n ${namespace}
复制代码


  1. 如果执行成功,输出会提示 tidbcluster.pingcap.com/${heterogeneous_cluster_name} created。TiDB Operator 会根据集群配置文件,创建对应配置的 TiDB 集群。

部署集群监控

如果你需要为异构集群部署监控,请在已有 TiDB 集群的 TidbMonitor CR 文件增加异构集群名。具体操作如下:

编辑已有 TiDB 集群的 TidbMonitor Custom Resource (CR):

kubectl edit tm ${cluster_name} -n ${namespace}
复制代码

参考以下示例,替换 ${origin_cluster_name} 为想要加入的集群名称,替换 ${heterogeneous_cluster_name} 为异构集群名称:

apiVersion: pingcap.com/v1alpha1kind: TidbMonitormetadata:name: heterogeneousspec:clusters:    - name: ${origin_cluster_name}    - name: ${heterogeneous_cluster_name}prometheus:    baseImage: prom/prometheus    version: v2.27.1grafana:    baseImage: grafana/grafana    version: 7.5.11initializer:    baseImage: pingcap/tidb-monitor-initializer    version: v6.5.0reloader:    baseImage: pingcap/tidb-monitor-reloader    version: v1.0.1prometheusReloader:    baseImage: quay.io/prometheus-operator/prometheus-config-reloader    version: v0.49.0imagePullPolicy: IfNotPresent
复制代码


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
通过TiDB Operator为已有TiDB集群部署异构集群_集群管理_TiDB 社区干货传送门_InfoQ写作社区