OpenEBS和Cloud-Native分布式SQL入门

OpenEBS是一个CNCF项目,可提供云原生的开源容器附加存储(CAS)。OpenEBS提供了永久性块存储和其他功能,例如集成备份,本地和云磁盘管理等。对于企业云原生应用程序,OpenEBS提供了云原生开发环境特有的存储功能,以及细粒度的存储策略和隔离功能,使云开发人员和架构师可以针对特定工作负载优化存储。

由于YugabyteDB是在Kubernetes环境中运行的云原生分布式SQL数据库,因此它可以与OpenEBS和许多其他CNCF项目互操作。

什么是YugabyteDB? 它是一个开放源代码的高性能分布式SQL数据库,该数据库基于Google Spanner的可扩展性和容错设计而构建。Yugabyte的SQL API(YSQL)与PostgreSQL兼容。

为什么选择OpenEBS和YugabyteDB?

YugabyteDB作为StatefulSet部署在Kubernetes上,需要持久存储。OpenEBS可用于备份YugabyteDB本地磁盘,从而可配置大型持久卷。以下是结合使用OpenEBS和YugabyteDB数据库集群的一些优点:

  • 由于OpenEBS管理本地磁盘,因此无需管理本地磁盘
  • OpenEBS和YugabyteDB可以预配置大型持久卷
  • 使用OpenEBS持久卷,可以精简配置容量,并且可以在不中断服务的情况下将磁盘动态添加到OpenEBS。当此功能与已经支持每个节点多TB数据密度的YugabyteDB结合使用时,可以证明可以节省大量存储成本。
  • OpenEBS和YugabyteDB都支持多云部署,从而帮助组织避免云锁定
  • OpenEBS和YugabyteDB都与另一个CNCF项目Prometheus集成。这使得从单个系统监视存储和数据库变得容易

此外,OpenEBS可以在地理区域内进行同步复制。在跨区域部署YugabyteDB且任何一个区域中的节点出现故障的情况下,YugaByteDB必须使用来自另一区域的数据重建该节点。这将招致跨区域流量,这种流量更昂贵且性能更低。

但是,使用OpenEBS,可以无缝完成节点的重建,因为OpenEBS在该区域内本地复制。这意味着YugabyteDB最终不必从另一个区域复制数据,从而最终降低了成本并提高了性能。在此部署设置中,仅当整个区域发生故障时,YugabyteDB才需要进行跨区域节点重建。

可在此处找到有关启用OpenEBS的用例的其他详细说明。

先决条件

下面是我们将在与OpenEBS CAS集成的Google Kubernetes集群之上运行YugabyteDB集群的环境。

  1. YugabyteDB- 版本2.0.10
  2. OpenEBS — 版本1.6。
  3. 一个谷歌云平台帐户
  4. 一个MayaData帐户

MayaData是企业级OpenEBS平台,通过帮助您在群集和云之间预配,备份,监视,记录,管理,测试甚至迁移工作负载,使在Kubernetes上运行有状态应用程序变得更加容易。

在Google Cloud Platform上设置Kubernetes集群

要在Google Cloud Platform(GCP)上部署YugabyteDB,我们首先必须使用Ubuntu作为我们的基本节点映像来设置集群。请注意,GKE Con​​tainer-Optimized OS尚未预安装iSCSI客户端,并且不允许安装iSCSI客户端。因此,OpenEBS在Kubernetes集群上不起作用,该集群在工作节点上运行映像的GKE容器优化OS版本。

转到Kubernetes Engine>集群>创建集群。


OpenEBS和Cloud-Native分布式SQL入门

使用默认选项创建标准集群。

OpenEBS和Cloud-Native分布式SQL入门

确保选择“ 节点池”下的“ 更多选项”按钮以指定Ubuntu基本映像和2个本地SSD磁盘。


OpenEBS和Cloud-Native分布式SQL入门


OpenEBS和Cloud-Native分布式SQL入门


OpenEBS和Cloud-Native分布式SQL入门

使用以下命令连接到Google Cloud Shell并验证节点是否已设置并正在运行:

OpenEBS和Cloud-Native分布式SQL入门


OpenEBS和Cloud-Native分布式SQL入门

在GKE集群上安装OpenEBS

要在GKE群集上安装OpenEBS,请完成此处找到的步骤。

所需步骤的摘要包括:

  • 验证iSCSI客户端是否正在运行
  • 卸载要用于存储池的本地永久磁盘
  • 设置Kubernetes 管理上下文和RBAC
  • 使用舵图(或),kubectl yaml规格文件进行安装

当前,GKE的Ubuntu实例尚未启动iSCSI客户端服务。您可以通过SSH登录每个节点并运行以下命令进行检查:

OpenEBS和Cloud-Native分布式SQL入门

如果iSCSI服务状态显示为非活动状态,则可能必须使用以下命令启用并启动iscsid服务:

OpenEBS和Cloud-Native分布式SQL入门

登录到Kubernetes节点后,请确保未安装或格式化任何本地磁盘。例如,在GKE节点上:

OpenEBS和Cloud-Native分布式SQL入门

完成上述步骤后,您可以通过运行以下命令来验证OpenEBS是否已在GKE群集上安装并运行:

OpenEBS和Cloud-Native分布式SQL入门


OpenEBS和Cloud-Native分布式SQL入门

配置cStor池并创建存储类

安装OpenEBS之后,必须配置cStor池。如果您的OpenEBS集群中未配置cStor Pool ,则可以按照此处的说明进行操作。首先,通过运行以下命令识别本地块设备:

OpenEBS和Cloud-Native分布式SQL入门

现在,使用这些特定的块设备创建存储池。例如:

OpenEBS和Cloud-Native分布式SQL入门

您还必须配置StorageClass以在给定的cStor池上配置cStor 卷。StorageClass是定义大多数OpenEBS存储策略的接口。在此解决方案中,我们使用StorageClass来使用cStor池,该池是使用连接到节点的外部磁盘创建的。由于YugabyteDB是StatefulSet应用程序,因此它仅需要在存储级别进行一次复制。因此,cStor卷的replicateCount应该设置为1。例如:

OpenEBS和Cloud-Native分布式SQL入门

使用Helm在GKE群集上安装YugabyteDB

下一步是在群集上安装YugabyteDB。可以通过完成此处的步骤来完成。

这些步骤的基本摘要包括:

  • 验证前提条件
  • 通过Helm创建YugabyteDB集群

为确保您使用的是Yugabyte存储库中提供的最新Helm图表,请运行:

OpenEBS和Cloud-Native分布式SQL入门

我们将在头盔安装命令中使用最新的可用版本。另外,注意默认storageclass 将需要通过安装在头盔的图表时设置该选项覆盖。例如:

OpenEBS和Cloud-Native分布式SQL入门

要验证YugabyteDB已成功安装在GKE上,请使用以下命令:

OpenEBS和Cloud-Native分布式SQL入门


OpenEBS和Cloud-Native分布式SQL入门

而已!现在,您已经在带有OpenEBS存储的GKE上运行了YugabyteDB。请继续关注即将发布的博客,我们将在其中探讨如何将YugabyteDB + OpenEBS集群连接到OpenEBS Director。此SaaS服务通过直观的UI通过Prometheus指标,OpenEBS卷的日志和拓扑视图,使管理和监视群集更加容易。


分享到:


相關文章: