作为 Database Plus 设计哲学的最佳实践,Apache 尖端开源项目 ShardingSphere 经过各行业多年的出产环境查验,受到了众多社区爱好者的关注和追捧。而随着 Kubernetes 成为容器编排的事实标准,其引领的云原生风暴敏捷席卷了技能世界。Apache ShardingSphere 作为一个具有开放生态的数据库增强引擎,其设计理念和 Kubernetes 有着许多相似之处,而在这股云原生浪潮之下,社区对 ShardingSphere 上云的呼声也越来越高,所以 SphereEx 首先推出了自己关于 ShardingSphere 云上的处理方案 ShardingSphere-on-Cloud,期望以此为 ShardingSphere 飞向未来的翅膀,开启 Database Plus 的云上之旅。

shardinsphere-on-cloud 仓库将连续发布关于 Apache ShardingSphere 在云上的各种装备模板、主动化脚本、布置工具以及 Kubernetes Operator 等最佳实践内容。目前 shardingsphere-on-cloud 已发布 v0.1.0 版别,主要包含了 ShardingSphere Operator 的最小可用版别。

ShardingSphere Operator

Kubernetes 能够成为云原生编排工具的事实标准的重要原因之一在于它强壮的可扩展性,能够帮助开发人员快速树立渠道之上的渠道。关于各种测验运转在 Kubernetes 之上的软件,经过 Kubernetes 的 Operator 模式配合 CustomResourceDefinition 结构能够快速构建主动化保护才能。

6 月 17 日,Apache ShardingSphere 在 5.1.2 版别中已经发布了基于 Helm Charts 的包管理才能。如果说 Helm Charts 已经帮咱们处理了 ShardingSphere 在 Kubernetes 之上的 Day 1 相关问题,即如安在 Kubernetes 中进行描绘 ShardingSphere,而且将其进行布置。

而要想要处理 Day 2 关注的如安在 Kubernetes 管理一个有状况的或者复杂的工作负载,就需要一个定制化的管理工具来完成。为了更进一步提升 ShardingSphere 在 Kubernetes 之上的布置和保护才能,SphereEx 的云团队开发了 ShardingSphere Operator。

Database Plus 的云上之旅:SphereEx 正式开源 ShardingSphere on Cloud 解决方案

面临 Apache ShardingSphere 迁移到 Kubernetes 环境中面临的各种问题,ShardingSphere Operator 做了以下几方面的探究:

  • 简化启动装备:ShardingSphere 具有丰富的数据库增强才能,其相应的装备也较为复杂。在当时版别里,ShardingSphere Operator 将装备和装备的挂载行为进行主动化,用户只需要填写最小化启动依靠装备,就能够在集群中快速布置和启动一个 ShardingSphere-Proxy 集群,而运转时的装备都能够经过 DistSQL 进行完成。

  • 主动布置管理节点:ShardingSphere 在运转的过程中依靠管理中心对元数据进行持久化,并完成集群节点间的元数据广播。为了优化用户体会,做到开箱即用,ShardingSphere Operator 能够依据用户需要将管理节点同核算节点一起布置,并装备依靠联系。

  • 高可用:在云环境中为了简化保护,期望尽可能完成去状况的布置。ShardingSphere-Proxy 作为无状况的核算节点,配合 ShardingSphere Operator 能够完成多种维度的健康状况探测和毛病恢复才能。

  • 水平扩容:利用 Kubernetes 的 HPA,能够完成基于 CPU 和内存的 ShardingSphere-Proxy 水平扩缩容。而 ShardingSphere Operator 将逐渐支撑多种自定义目标,为 ShardingSphere-Proxy 完成更智能、更安稳的高级主动扩容才能。

具体来说在 v0.1.0 版别中,ShardingSphere Operator 主要提供了以下才能:

Helm 布置

  • ShardingSphere-Operator Chart

    • 支撑布置 ShardingSphere-Operator
  • ShardingSphere-Cluster Chart

    • 支撑布置 ShardingSphere-Proxy 集群

    • 支撑经过 Bitnami 布置 ZooKeeper 集群

    • 支撑 ShardingSphere-Proxy 主动装备并连接管理节点

  • 运用 Github Pages 保管 Charts 并能够运用 helm repo add 进行增加仓库

新特性

  • 支撑运用 shardingsphereproxy CRD 进行描绘 ShardingSphere-Proxy 集群信息

  • 支撑原生的 ShardingSphere-Proxy server.yaml 装备进行启动

  • 支撑基于 CPU 目标的 HPA 装备主动扩容

  • 支撑主动下载 MySQL 驱动

其他装备信息详见项目 ReadMe: (github.com/SphereEx/sh…)

快速体会

能够经过以下指令快速体会:

kubectl create ns sharding
helm repo add shardingspherecloud https://sphereex.github.io/shardingsphere-on-cloud/ 
helm install operator shardingspherecloud/shardingsphere-operator -n sharding
helm install cluster shardingspherecloud/shardingsphere-cluster -n sharding

上述指令会按照默许装备在 sharding 这个 Namespace 中装置 ShardingSphere Operator,ShardingSphere-Proxy 集群以及 ZooKeeper 集群,经过 Service 即可在集群中拜访 ShardingSphere-Proxy。然后经过 MySQL 客户端,运用 DistSQL 创建逻辑库,增加数据源和创建相对应的规则表,即可开始享用运转在 Kubernetes 上的 ShardingSphere-Proxy 服务。

未来规划

未来 ShardingSphere Operator 会逐渐优化 ShardingSphere-Proxy 的布置方式,进步主动化保护才能,不断打磨在高可用和灾难恢复场景中的表现,力求给用户最佳的云原生体会。而 shardingsphere-on-cloud 仓库则会持续吸收来自社区的云上各种实践方案,打造一个面向云、得益于云、增强云上数据库才能的开放处理方案生态。

如果你有任何内容想和咱们沟通,欢迎经过微信沟通群、GitHub Issue 或 Apache ShardingSphere 官方 Slack 联系到咱们。

即将在 7 月 29 日举办的 ApacheCon 上,由 SphereEx 云团队的研发工程师李卓将为我们带来 《拥抱云原生,基于 Kubernetes 的 ShardingSphere 云化改造》技能共享,欢迎届时收看!

相关链接

SphereEx 官网 :sphere-ex.com

Apache ShardingSphere 官网:shardingsphere.apache.org

Apache ShardingSphere GitHub : github.com/apache/shar…

ShardingSphere Operator GitHub:github.com/SphereEx/sh…

Apache ShardingSphere Slack Channel:apacheshardingsphere.slack.com

作者

SphereEx 云团队,主要负责 ShardingSphere 上云处理方案、Database Mesh 开源社区以及 SphereEx Cloud 事务。