YugabyteDB在GKE上的多区域部署指南(Helm Chart方式)

YugabyteDB在GKE上的多区域部署指南(Helm Chart方式)

yugabyte-db yugabyte/yugabyte-db: 是 YugaByte DB 的官方仓库,一个高性能、高可扩展、分布式的 SQL 数据库,支持 PostgreSQL 兼容性。适合对分布式数据库、SQL 数据库和云原生应用的开发者。 yugabyte-db 项目地址: https://gitcode.com/gh_mirrors/yu/yugabyte-db

前言

YugabyteDB是一个高性能的分布式SQL数据库,支持在Kubernetes集群中进行部署。本文将详细介绍如何在Google Kubernetes Engine(GKE)上使用Helm Chart部署多区域(multi-zonal)或区域性(regional)的YugabyteDB集群。

环境准备

基础要求

在开始部署前,需要确保满足以下条件:

  1. 已创建多区域或区域性GKE集群
  2. 已配置Helm工具
  3. 集群节点资源满足最低要求:
    • 总计12个CPU核心
    • 45GB内存
    • 推荐使用n1-standard-8实例类型(8核30GB)

工具安装

  1. Google Cloud SDK安装

    # 设置默认项目
    gcloud config set project yugabyte
    
    # 安装kubectl
    gcloud components install kubectl
    
  2. Helm安装验证

    helm version
    

    确保使用的是Helm 3.4或更高版本

集群创建

创建区域性集群

执行以下命令创建跨三个可用区的集群:

gcloud container clusters create my-regional-cluster \
     --machine-type=n1-standard-8 \
     --num-nodes 1 \
     --region us-central1 \
     --node-locations us-central1-a,us-central1-b,us-central1-c

配置存储类

创建专门的存储类以支持跨区域部署:

# storage.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: yb-storage
provisioner: kubernetes.io/gce-pd
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
parameters:
  type: pd-ssd
  fsType: xfs

应用配置:

kubectl apply -f storage.yaml

YugabyteDB部署

添加Helm仓库

helm repo add yugabytedb https://charts.yugabyte.com
helm repo update

准备配置文件

为每个可用区创建独立的覆盖文件:

  1. us-central1-a配置

    # overrides-us-central1-a.yaml
    isMultiAz: True
    AZ: us-central1-a
    masterAddresses: "yb-master-0.yb-masters.yb-demo-us-central1-a.svc.cluster.local:7100,yb-master-0.yb-masters.yb-demo-us-central1-b.svc.cluster.local:7100,yb-master-0.yb-masters.yb-demo-us-central1-c.svc.cluster.local:7100"
    storage:
      master:
        storageClass: "yb-storage"
      tserver:
        storageClass: "yb-storage"
    replicas:
      master: 1
      tserver: 1
      totalMasters: 3
    gflags:
      master:
        placement_cloud: "gke"
        placement_region: "us-central1"
        placement_zone: "us-central1-a"
      tserver:
        placement_cloud: "gke"
        placement_region: "us-central1"
        placement_zone: "us-central1-a"
    
  2. 类似地创建us-central1-b和us-central1-c的配置文件

部署集群

  1. 创建命名空间

    kubectl create namespace yb-demo-us-central1-a
    kubectl create namespace yb-demo-us-central1-b
    kubectl create namespace yb-demo-us-central1-c
    
  2. 部署各区域组件

    helm install yb-demo-us-central1-a yugabytedb/yugabyte \
     --version <version> \
     --namespace yb-demo-us-central1-a \
     -f overrides-us-central1-a.yaml --wait
    

    (其他区域类似)

集群验证

检查Pod状态

kubectl get pods --all-namespaces

检查服务状态

kubectl get services --all-namespaces

访问管理界面

通过任一yb-master-ui服务的External IP访问管理界面(端口7000):

http://<external-ip>:7000

高级配置

区域感知副本放置

默认配置不会考虑区域分布,执行以下命令启用区域感知:

kubectl exec -it -n yb-demo-us-central1-a yb-master-0 -- bash \
-c "/home/yugabyte/master/bin/yb-admin --master_addresses yb-master-0.yb-masters.yb-demo-us-central1-a.svc.cluster.local:7100,yb-master-0.yb-masters.yb-demo-us-central1-b.svc.cluster.local:7100,yb- master-0.yb-masters.yb-demo-us-central1-c.svc.cluster.local:7100 modify_placement_info gke.us-central1.us-central1-a,gke.us-central1.us-central1-b,gke.us-central1.us-central1-c 3"

客户端连接

YSQL Shell连接

kubectl exec -n yb-demo-us-central1-a -it yb-tserver-0 -- ysqlsh \
  -h yb-tserver-0.yb-tservers.yb-demo-us-central1-a

YCQL Shell连接

kubectl exec -n yb-demo-us-central1-a -it yb-tserver-0 -- ycqlsh \
yb-tserver-0.yb-tservers.yb-demo-us-central1-a

外部客户端连接

获取yb-tserver-service的External IP:

  • YSQL: 端口5433
  • YCQL: 端口9042

总结

本文详细介绍了在GKE上使用Helm Chart部署多区域YugabyteDB集群的全过程。通过这种部署方式,您可以获得:

  1. 跨区域的高可用性
  2. 数据自动分片和负载均衡
  3. 灵活的资源扩展能力
  4. 简化的运维管理

对于生产环境,建议根据实际负载情况调整资源配置和副本数量,并设置适当的监控告警机制。

yugabyte-db yugabyte/yugabyte-db: 是 YugaByte DB 的官方仓库,一个高性能、高可扩展、分布式的 SQL 数据库,支持 PostgreSQL 兼容性。适合对分布式数据库、SQL 数据库和云原生应用的开发者。 yugabyte-db 项目地址: https://gitcode.com/gh_mirrors/yu/yugabyte-db

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纪越岩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值