YugabyteDB滚动升级

2022-05-12 00:00:00 集群 节点 服务 端口 副本

YugabyteDB 的自动分片和强一致性复制架构非常适合由 Kubernetes 编排支持的容器化部署。在这篇文章中,我们将介绍将 YugabyteDB 作为Kubernetes StatefulSets启动并运行所涉及的各种组件。

YugabyteDB 架构

如下图架构图所示,YugabyteDB 由两种分布式服务组成。

  • YB-Master:负责保存系统元数据(如分片到节点的映射),协调系统范围的操作(如创建/更改删除表),并启动维护操作(如负载平衡)。它会持续监控和重新平衡可用节点之间的数据分片,即使在 Kubernetes 集群等高度动态的环境中也是如此。出于容错目的,YB-Master 的数量等于集群的复制因子 (RF)。容错所需的小 RF 为 3。
  • YB-TServer:负责在分片(也称为平板电脑)中托管/提供用户数据的数据节点。集群中的数据节点数量可以按需增加或减少。


YugabyteDB 集群架构

将 YugabyteDB 建模为 Kubernetes 上的工作负载

使用 Kubernetes 编排有状态应用程序强调了在 Kubernetes 中运行有状态应用程序(例如数据库)如何需要使用StatefulSets 工作负载 API。在这种情况下,YB-Master 和 YB-TServer 被建模为独立的 StatefulSet,如Github 上的YugabyteDB Kubernetes YAML所示。这些 StatefulSet pod 中的每一个都实例化同一yugabytedb/yugabyte容器映像的一个实例,但用于启动容器的命令会根据所需的服务器类型进行更改。接下来的几节详细介绍了在 Kubernetes 上运行四节点 RF3 集群的上下文中 YugabyteDB StatefulSet 的结构。

在 Kubernetes 上运行 YB-Master

Kubernetes 上的 YB-Master 部署需要一个 StatefulSet 和两个 Service。这些服务之一是能够发现底层 StatefulSet pod 的Headless服务,另一个是查看 YB-Master 管理 UI 所需的 LoadBalancer 服务。YugabyteDB 管理客户端(例如 YugabyteDB EE 管理控制台)使用 headless 服务连接到任何 pod,而管理员用户可以连接到 LoadBalancer 服务。


Kubernetes 上的 YB-Master

yb-master StatefulSet

所述YugabyteDB Kubernetes YAML具有用于YB-主StatefulSet的截面。规范中需要强调的几点。

副本数

如上图所示,使用 RF3 设置一个 4 节点的 YugabyteDB 集群,只需要 3 个 yb-master StatefulSet pod。因此,副本的 YAML 设置为 3。

apiVersion: apps/v1beta1 
kind: StatefulSet 
metadata: 
  name: yb-master
  标签: 
    app: yb-master 
spec: 
  serviceName: yb-masters 
  podManagementPolicy: "Parallel" 
  replicas: 3

相关文章