NDB Operator 8.4 手册  /  NDB Operator 简介

第 1 章 NDB Operator 简介

MySQL NDB 集群是 MySQL 的分布式版本,它作为以下三种类型的进程或节点的集合来实现

  • 管理节点 (ndb_mgmd):提供配置数据

  • 数据节点 (ndbmtd):用户数据存储

  • SQL 节点 (mysqld):数据节点的 SQL 前端。

NDB Operator 提供的服务允许以下两种类型的连接

  • 使用 MGM API 的应用程序(例如 ndb_mgmndb_config)与 NDB 集群管理节点的连接。

  • MySQL 客户端应用程序(例如 mysql)与 NDB 集群 SQL 节点的连接。

NDB Operator 当前不提供 NDB API 应用程序直接连接到 NDB 集群数据节点的机制。这意味着 NDB 实用程序(例如 ndb_select_allndb_restore)在 NDB Operator 下不受支持。

有关 NDB 集群节点进程的更多信息,请参阅 NDB 集群核心概念。另请参阅 NDB 集群程序

在 Kubernetes 集群中部署 MySQL 集群需要使用多个工作负载资源将这些节点调度到不同的 Pod 上,并且需要时间和精力来选择和创建正确类型的工作负载资源,这些资源的配置充分利用了 NDB 集群和 Kubernetes 集群中的冗余和容错功能。

NDB Operator 是 MySQL NDB 集群的 Kubernetes Operator,旨在简化在 Kubernetes 集群中部署和管理 MySQL 集群的任务。Kubernetes Operator 是一个具有另一个应用程序操作知识的应用程序。它可以在 Kubernetes 集群中部署,之后它可以开始监视它们感兴趣的端点,并对正在管理的应用程序进行更改。NDB Operator 使得只需很少的人工干预即可部署、管理和更改 NDB 集群。

为了表示 NDB 集群,我们在 Kubernetes 集群中定义了一个 Ndb 自定义资源定义 (CRD)。现在可以在 Kubernetes 集群中创建一个类型为 Ndb 的自定义对象,表示要部署的所需 NDB 集群设置的配置。NDB Operator 监视此类自定义对象的任何更改,并根据对该对象的更改在 Kubernetes 集群中部署和维护 NDB 集群节点。

每当 Ndb 自定义资源发生更改时,NDB Operator 都会定期运行协调循环,如下图所示

图 1.1 NDB Operator 协调循环

Reconciliation loop in which NDB Operator monitors an NDB Cluster running in a Kubernetes cluster

每次循环,Operator 都会将所需状态(Kubernetes 集群中自定义资源的值)与当前状态(Kubernetes 集群中 MySQL 集群安装的实际状态)进行比较。如果当前状态和所需状态不匹配,Operator 会对 MySQL 集群安装进行增量更改,使其更接近所需状态;如果需要,将在多次迭代中重复此操作,直到 MySQL 集群达到所需状态。通过这种方式,NDB Operator 能够监控 NDB 集群并确保其按预期运行。

NDB Operator 架构

图 1.2 NDB Operator 架构

NDB Operator running an NDB Cluster in a Kubernetes cluster: Architecture