文档菜单

在GCP GKE上部署TiDB

本文档描述如何部署GCP Google Kubernetes引擎(GKE)集群和在GCP GKE上部署TiDB集群。

要在自我管理的Kubernetes环境中部署TiDB Operator和TiDB群集,请参阅<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/deploy-tidb-operator.md">部署TiDB操作员和<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/deploy-on-general-kubernetes.md">在Kubernetes将军中部署TiDB.

先决条件

在GCP GKE上部署TiDB群集之前,请确保满足以下要求:

  • 安装<一个href="https://helm.sh/docs/intro/install/">舵手3:用于部署TiDB操作员。

  • 安装<一个href="https://cloud.google.com/sdk/gcloud">gcloud:用于创建和管理GCP服务的命令行工具。

  • 完成中的操作在你开始之前的部分<一个href="https://cloud.google.com/kubernetes-engine/docs/quickstart">GKE快速入门.

    本指南包括以下内容:

    • 启用Kubernetes API
    • 配置足够的配额

配置GCP服务

配置您的GCP项目和默认区域:

gcloud配置核心/项目<gcp项目>gcloud配置计算/区域<gcp-region>

创建GKE集群和节点池

  1. 创建GKE集群和默认节点池:

    gcloud容器集群创建tidb--区域us-east1--机器类型n1-standard-4--num节点1
    • 上面的命令创建一个区域集群。
    • --节点数=1Option表示在每个zone中创建一个节点。因此,如果区域中有三个zone,则总共有三个节点,这确保了高可用性。
    • 建议在生产环境中使用区域集群。有关其他类型的群集,请参阅<一个href="https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters">GKE簇的类型.
    • 上面的命令在默认网络中创建集群。如果要指定网络,请使用--网络/子网选择。欲了解更多信息,请参阅<一个href="https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-regional-cluster">创建区域集群.
  2. 为PD、TiKV和TiDB创建单独的节点池:

    gcloud容器节点池创建pd--集群tidb--机器类型n1-standard-4--num节点1--节点标签专用的pd - node-taints专用的pd:NoSchedule gcloud容器节点池创建tikv——集群tidb——机器类型n1-highmem-8——num节点1--节点标签专用的tikv——节点污染专用的tikv:NoSchedule gcloud容器节点池创建tidb——cluster tidb——machine-type n1-standard-8——num-nodes1--节点标签专用的tidb——节点污染专用的tidb: NoSchedule

    这个过程可能需要几分钟。

部署TiDB操作员

要在GKE上部署TiDB操作员,请参阅<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/get-started.md">部署TiDB操作员.

部署一个TiDB集群和监控组件

介绍如何在GCP GKE上部署TiDB集群及其监控组件。

创建名称空间

要创建命名空间以部署TiDB群集,请运行以下命令:

kubectl创建命名空间tidb集群

注:

一个<一个href="https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/">名称空间是由同一个物理集群支持的虚拟集群。这个文档需要tidb-cluster举个例子。如果要使用其他命名空间,请修改的相应参数-n——名称空间

部署

首先,下载示例潮团TidbMonitor配置文件:

卷曲-Ohttps://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/gcp/tidb-cluster.yaml&&卷曲-Ohttps://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/gcp/tidb-monitor.yaml

提到<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/configure-a-tidb-cluster.md">配置TiDB集群在应用之前进一步自定义和配置CR。

部署潮团TidbMonitor在GKE集群中,运行以下命令:

kubectl create-f tidb-cluster.yaml-n tidb cluster&&kubectl创建-f tidb-monitor.yaml-n tidb集群

将上述yaml文件应用于Kubernetes群集后,TiDB操作符将根据yaml文件创建所需的TiDB群集及其监视组件。

查看集群状态

要查看正在启动的TiDB群集的状态,请运行以下命令:

kubectl get pods-n tidb集群

当所有的豆荚都在跑步准备好的状态,TiDB群集已成功启动。例如:

名称就绪状态重新启动老化tidb-discovery-5cb8474d89-n8cxk 1/1运行0 47h tidb-monitor-6fbcc68669-dsjlc 3/3运行0 47h tidb-pd-0 1/1运行0 47h tidb-pd-1/1运行0 46h tidb-pd-2 1/1运行0 46h tidb-tidb-0 2/2运行0 47h tidb-tidb-tikv-0 1/1运行0 47h tidb-tidb-1/1运行0.47小时

访问TiDB数据库

部署TiDB集群后,可以通过MySQL客户端访问TiDB数据库。

准备一个堡垒主机

为TiDB集群创建的LoadBalancer是一个内部网LoadBalancer。您可以创建<一个href="https://cloud.google.com/solutions/connecting-securely">堡垒主机在集群VPC中访问数据库。

gcloud计算实例创建堡垒--机器类型n1-标准-4--形象工程centos-cloud——image-familycentos-7--地带${您所在的地区}-a

注:

${your region}-a一个集群区域中的区域,例如美国中央银行. 也可以在同一区域的其他区域中创建堡垒主体。

安装MySQL客户端并连接

创建bastion主机后,可以通过SSH连接到bastion主机,并通过MySQL客户端访问TiDB集群。

  1. 通过SSH连接到bastion主机:

    gcloud计算sshtidb@bastion
  2. 安装MySQL客户端:

    苏多百胜安装mysql - y
  3. 将客户端连接到TiDB群集:

    mysql - h${tidb nlb dnsname}-P4000-根

    ${tidb nlb dnsname}是TiDB服务的负载平衡器IP。您可以在中查看IP外部IP场的Kubectl get SVC basic-tidb -n tidb-cluster执行结果。

    例如:

    $mysql-h10.128.15.243 - p4000-u root欢迎使用MariaDB监控器。命令结尾g. MySQL连接id7823服务器版本:5.7.25-TiDB-v4.0.4 TiDB服务器Apache许可2社区版,MySQL5.7兼容版权c20002018、甲骨文、马里亚布公司和其他公司。类型“救命“\ h”救命啊。类型\c清楚的当前输入语句。MySQL没有一个>显示状态+--------------------+--------------------------------------+|Variable_name|价值|+--------------------+--------------------------------------+|Ssl_密码|||Ssl\u密码\u列表|||Ssl_verify_mode|0||Ssl_version|||ddl_模式_版本|22||服务器id|717420直流- 0例乙脑- 4 - d4a - 951 d - 0 - d393aff295a|+--------------------+--------------------------------------+60.01证券交易委员会

注:

  • MySQL 8.0的默认身份验证插件更新自mysql\u本机\u密码缓存\u sha2\u密码. 因此,如果使用MySQL 8.0中的MySQL客户端访问TiDB服务(TiDB版本--默认auth=mysql\u本机\u密码参数
  • 默认情况下,TiDB(从v4.0.2开始)定期与PingCAP共享使用细节,以帮助了解如何改进产品。共享的内容和关闭共享的方法请参见<一个href="//www.schmieso.com/docs/tidb/stable/telemetry">遥测.

访问Grafana监控仪表板

获取Grafana的负载平衡器IP:

Kubectl -n tidb-cluster get SVC basic-grafana

例如:

$ kubectl -n tidb-cluster get svc basic-grafana NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE basic-grafana LoadBalancer 10.15.255.169 34.123.168.114 3000:30657/TCP 35m

在上面的输出中外部IP列是LoadBalancer IP。

您可以访问${grafana lb}:3000地址使用您的web浏览器查看监控指标。取代${grafana lb}使用LoadBalancer IP。

注:

默认的Grafana用户名和密码都是管理

升级

要升级TiDB群集,请编辑规格版本通过执行kubectl编辑tc basic-n tidb群集

升级过程不会立即完成。您可以通过执行kubectl获得吊舱-n tidb集群-观察

向外扩展

在扩展集群之前,需要扩展相应的节点池,以便新实例有足够的资源进行操作。

本节介绍如何向外扩展EKS节点组和TiDB组件。

扩展GKE节点组

下面的示例展示了如何向外扩展tikv服务器的节点池蒂德集群到6个节点:

Gcloud容器集群调整大小tidb——node-pool tikv——num-nodes2

注:

在区域集群中,节点创建在3个分区中。因此,向外扩展后,节点数为2 * 3 = 6

按比例缩小TiDB组件

在那之后,执行kubectl编辑tc basic-n tidb群集并对每个组件进行修改副本复制到所需数量的副本。然后完成扩展过程。

有关管理节点池的详细信息,请参阅<一个href="https://cloud.google.com/kubernetes-engine/docs/concepts/node-pools">节点池.

部署TiFlash和TiCDC

TiFlash是TiKV的柱状存储扩展。

TiCDC是一种通过提取TiKV更改日志来复制TiDB增量数据的工具。

这两个部分是不需要的在部署。本节展示一个快速启动示例。

创建新节点池

  • 为TiFlash创建节点池:

    Gcloud容器节点池创建tiflash——cluster tidb——machine-type n1-high - mem-8——num-nodes1--节点标签专用的tiflash--节点污染专用的tiflash:NoSchedule
  • 为TiCDC创建节点池:

    gcloud容器节点池创建ticdc——集群tidb——机器类型n1-standard-4——num节点1--节点标签专用的ticdc——节点污染专用的ticdc:NoSchedule

配置和部署

  • 如果需要部署TiFlash,请配置规格闪光tidb-cluster.yaml.例如:

    规格...鞭笞基本图像pingcap/tiflash副本1storageClaims-资源请求存储100年胃肠道nodeSelector专用的鞭笞容忍-影响NoSchedule钥匙专用的操作人员相等的价值鞭笞

    其他参数的配置请参见<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/configure-a-tidb-cluster.md">配置TiDB群集.

    警告:

    TiDB操作员自动安装PVs按照配置的顺序storageClaims列表因此,如果需要为TiFlash添加磁盘,请确保添加磁盘仅限于原始配置的末尾在名单上。此外,你必须更改原始配置的顺序。

  • 要部署TiCDC,请配置规格ticdctidb-cluster.yaml.例如:

    规格...ticdc基本图像pingcap / ticdc副本1nodeSelector专用的ticdc容忍-影响NoSchedule钥匙专用的操作人员相等的价值ticdc

    修改副本根据你的需要。

最后,执行kubectl-n tidb cluster apply-f tidb-cluster.yaml更新TiDB群集配置。

有关详细的CR配置,请参阅<一个href="https://github.com/pingcap/tidb-operator/blob/master/docs/api-references/docs.md">API参考和<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/configure-a-tidb-cluster.md">配置TiDB群集.

部署TiDB企业版

如需部署TiDB/PD/TiKV/TiFlash/TiCDC企业版,请配置规范[tidb | pd | tikv | tiflash | ticdc].baseImagetidb-cluster.yaml作为企业形象。企业形象格式为pingcap / [tidb | pd | tikv | tiflash | ticdc)企业

例如:

规格...pd基本图像pingcap/pd-企业...tikv基本图像pingcap/tikv-企业

使用本地存储

使用<一个href="https://cloud.google.com/compute/docs/disks">区域持续的磁盘作为主要的生产配置。为了模拟裸金属性能,一些GCP实例类型提供了额外的功能<一个href="https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd">本地存储卷.您可以为TiKV节点池选择这样的实例,以实现更高的IOPS和更低的延迟。

注:

不能动态更改正在运行的TiDB集群的存储类。您可以创建一个新的集群来进行测试。

在GKE升级期间,<一个href="https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd">本地存储器中的数据将丢失由于节点重建。当节点重构发生时,您需要迁移TiKV中的数据。如果不需要迁移数据,建议不要在生产环境中使用本地磁盘。

  1. 为TiKV创建具有本地存储的节点池:

    gcloud容器节点池创建tikv--集群tidb--机器类型n1-standard-4--num节点1--本地ssd计数1--节点标签专用的tikv——节点污染专用的tikv:NoSchedule

    如果TiKV节点池已经存在,您可以删除旧的池,然后创建一个新的,或者更改池名称以避免冲突。

  2. 部署本地卷供应器。

    你需要使用<一个href="https://sigs.k8s.io/sig-storage-local-static-provisioner">local-volume-provisioner查找和管理本地存储。执行以下命令将部署并创建本地存储存储类别:

    kubectl应用-fhttps://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/gke/local-ssd-provision/local-ssd-provision.yaml
  3. 使用本地存储。

    完成上述步骤后,本地卷供应器可以发现群集中的所有本地NVMe SSD磁盘。

    修改tikv.storageClassNametidb-cluster.yaml归档本地存储