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集群的环境。
- YugabyteDB- 版本2.0.10
- OpenEBS — 版本1.6。
- 一个谷歌云平台帐户
- 一个MayaData帐户
MayaData是企业级OpenEBS平台,通过帮助您在群集和云之间预配,备份,监视,记录,管理,测试甚至迁移工作负载,使在Kubernetes上运行有状态应用程序变得更加容易。
在Google Cloud Platform上设置Kubernetes集群
要在Google Cloud Platform(GCP)上部署YugabyteDB,我们首先必须使用Ubuntu作为我们的基本节点映像来设置集群。请注意,GKE Container-Optimized OS尚未预安装iSCSI客户端,并且不允许安装iSCSI客户端。因此,OpenEBS在Kubernetes集群上不起作用,该集群在工作节点上运行映像的GKE容器优化OS版本。
转到Kubernetes Engine>集群>创建集群。
使用默认选项创建标准集群。
确保选择“ 节点池”下的“ 更多选项”按钮以指定Ubuntu基本映像和2个本地SSD磁盘。
使用以下命令连接到Google Cloud Shell并验证节点是否已设置并正在运行:
在GKE集群上安装OpenEBS
要在GKE群集上安装OpenEBS,请完成此处找到的步骤。
所需步骤的摘要包括:
- 验证iSCSI客户端是否正在运行
- 卸载要用于存储池的本地永久磁盘
- 设置Kubernetes 管理上下文和RBAC
- 使用舵图(或),kubectl yaml规格文件进行安装
当前,GKE的Ubuntu实例尚未启动iSCSI客户端服务。您可以通过SSH登录每个节点并运行以下命令进行检查:
如果iSCSI服务状态显示为非活动状态,则可能必须使用以下命令启用并启动iscsid服务:
登录到Kubernetes节点后,请确保未安装或格式化任何本地磁盘。例如,在GKE节点上:
完成上述步骤后,您可以通过运行以下命令来验证OpenEBS是否已在GKE群集上安装并运行:
配置cStor池并创建存储类
安装OpenEBS之后,必须配置cStor池。如果您的OpenEBS集群中未配置cStor Pool ,则可以按照此处的说明进行操作。首先,通过运行以下命令识别本地块设备:
现在,使用这些特定的块设备创建存储池。例如:
您还必须配置StorageClass以在给定的cStor池上配置cStor 卷。StorageClass是定义大多数OpenEBS存储策略的接口。在此解决方案中,我们使用StorageClass来使用cStor池,该池是使用连接到节点的外部磁盘创建的。由于YugabyteDB是StatefulSet应用程序,因此它仅需要在存储级别进行一次复制。因此,cStor卷的replicateCount应该设置为1。例如:
使用Helm在GKE群集上安装YugabyteDB
下一步是在群集上安装YugabyteDB。可以通过完成此处的步骤来完成。
这些步骤的基本摘要包括:
- 验证前提条件
- 通过Helm创建YugabyteDB集群
为确保您使用的是Yugabyte存储库中提供的最新Helm图表,请运行:
我们将在头盔安装命令中使用最新的可用版本。另外,注意默认storageclass 将需要通过安装在头盔的图表时设置该选项覆盖。例如:
要验证YugabyteDB已成功安装在GKE上,请使用以下命令:
而已!现在,您已经在带有OpenEBS存储的GKE上运行了YugabyteDB。请继续关注即将发布的博客,我们将在其中探讨如何将YugabyteDB + OpenEBS集群连接到OpenEBS Director。此SaaS服务通过直观的UI通过Prometheus指标,OpenEBS卷的日志和拓扑视图,使管理和监视群集更加容易。
閱讀更多 一名小白人員 的文章