YugabyteDB滚动升级
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
相关文章