ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级

hexiaox810
发布于 2023-9-11 11:46
浏览
0收藏

StorageNode 介绍

为了更好地满足扩展需求,不少数据库都采用了存算分离的架构进行实现。Apache ShardingSphere 同样将基础组件划分为计算节点、存储节点和治理节点。其中,计算节点指的是 ShardingSphere Proxy,支持对外暴露 MySQL 协议,用来接收应用的数据库流量;存储节点指的是各类后端数据源,包括 MySQL、PostgreSQL、SQLServer、Oracle 等;而治理节点是用来存放分布式数据库的各类元数据,包括逻辑库表信息、流量规则、分片规则等。

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区

ShardingSphere-Operator 在 0.2.0 版本中引入了新的 CRD ComputeNode,用来支持对计算节点的描述,详细信息可见:

​ShardingSphere-On-Cloud 0.2.0 发布!新的 CRD ComputeNode​

在当时对于数据源的创建和删除,用户仍然需要自行维护,ShardingSphere 作为一个分布式数据库解决方案缺少了对数据源的自动化管理。为此,社区引入了新的 CRD StorageNode,以及一个辅助的 CRD StorageProvider,示意图如下:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区

以 AWS RDS 为例,在上个版本里用户需要在使用 ShardingSphere 之前,先行登录 AWS 控制台(或命令行)进行RDS 的创建。而现在,用户只需要声明一个 StorageNode CRD,指定希望使用的 StorageProvider 为 AWS RDS ,即可由 ShardingSphere Operator 自动完成数据源的创建甚至自动注册,其关系如下:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区

类似 Kubernetes 中 StorageClass 和 PV 共同构成了 Dynamic Provisioning 的方式,在 ShardingSphere Operator 中,StorageProvider 声明了数据源提供方,以及该类数据源的基本配置信息,目前社区贡献了 AWS RDS 和 CloudNative PG 的支持。而 StorageNode 在绑定指定的 StorageProvider 后,即表示用户声明了一个 StorageNode ,希望以 StorageProvider 的配置进行创建和维护。例如,用户选择了 AWS RDS Cluster StorageProvider,那么 ShardingSphere Operator 会去 AWS 创建对应的 RDS Cluster 实例,并将 Endpoint 等信息返回给 StorageNode 。


StorageProvider 示例如下:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区

相应的 StorageNode 示例如下:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区


StorageNode 实践


快速安装 ShardingSphere Operator


执行如下 helm 命令即可快速拉起一套通过 ComputeNode 描述的 ShardingSphere Proxy 集群。

1、添加 ShardingSphere on Cloud 的 Helm 仓库:

helm repo add shardingsphere https://apache.github.io/shardingsphere-on-cloud

2、利用 helm install 命令安装 shardingsphere-operator:

说明:目前 StorageNode 属于 v1alpha1 阶段,需要通过 feature gate 进行启用,另外还需要指定 AWS 的 AKSK。

helm install shardingsphere-operator shardingsphere/apache-shardingsphere-operator-charts --set operator.featureGates.storageNode=true --set operator.storageNodeProviders.aws.region='***' --set operator.storageNodeProviders.aws.accessKeyId='***' --set operator.storageNodeProviders.aws.secretAccessKey='***' --set operator.storageNodeProviders.aws.enabled=true --set zookeeper.persistence.enabled=false


部署 StorageNode


可以 Github 仓库中的例子创建 StorageProvider 和 StorageNode:https://github.com/apache/shardingsphere-on-cloud/blob/main/examples/operator


利用 kubectl get 查看 StorageNode 状态


  • NAME:存储节点名称
  • PHASE:当前存储节点是否就绪
  • CLUSTERSTATUS:集群状态,如果是 Rds Instance 则为空
  • STORAGEPROVIDER:表示当前存储节点绑定的 StorageProvider 名称
  • AGE:表示当前存储节点的创建时长


        1. 通过 kubectl get storagenode 部署情况:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区

        2. 登录 AWS 控制台查看 RDS 状态:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区


Chaos 介绍


韧性(Resilience)被认为物品在遭受压力后恢复至原状的水平。用在软件系统上,可以表达当系统出现故障时恢复到原有服务能力的水平。在分布式环境下,软件所运行的基础依赖可能在任何时间点发生故障,包括物理设备和软件系统等。想要提升对这类故障的应对能力,可以借助混沌工程的方式人为地注入故障并完成相关测试来实现。


Apache ShardingSphere 作为分布式数据库解决方案,承担着用户海量数据的计算和存储,其稳定性的重要程度可见一斑。为了提高 ShardingSphere 的稳定性,社区贡献了 CRD Chaos 用来完成自动的混动注入,示意图如下:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区

Chaos CRD 目前支持 Chaos Mesh 实现,在使用 Chaos 前,需要在 Kubernetes 环境中提前部署 Chaos Mesh,部署说明可见:https://chaos-mesh.org/docs/production-installation-using-helm/。

Chaos 可以提供对 CPU 压力、Memory 压力、Pod 异常、网络故障等类型的注入,示例如下:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区


ComputeNode 开启 Agent 暴露指标


如果希望通过 Grafana 观察故障注入后的 ShardingSphere Proxy 运行状况,需要在部署 ComputeNode 的时候声明开启 Agent 配置,暴露 Prometheus Metrics,然后自行配置或使用社区提供的 Grafana Dashboard 进行观察。ComputeNode 开启 Agent 配置示例:

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区


ShardingSphere Agent 指标介绍


ShardingSphere Agent 暴露的部分指标介绍如下,完整指标列表见:https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-proxy/observability/#metrics。

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区


Grafana Dashboard 示例


Grafana Dashboard 示例如下,配置参见:https://github.com/apache/shardingsphere-on-cloud/blob/main/grafana/ShardingSphere-Proxy-Dashboard.json

ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级-鸿蒙开发者社区


其他改进


本次发布的其它更新有:

  • charts 中确保开启了 persistence 的 zookeeper 配置了相应的 storageclass #248
  • Proxy charts 支持对 shardingsphere agent 的部署 #252
  • ComputeNode 支持对 shardingsphere agent 的部署和配置 #260
  • StorageNode 支持 CloudNative PG 创建集群 #390
  • 更新 Grafana 面板中 execute-latency 的展示方式 #255
  • 调整 Grafana 里指标默认的 legends #374
  • 增加通过 Wasm 实现自定义分片算法的 demo #227
  • 修复 Github action 中对 arm 镜像的构建 #377
  • Github Action 增加 golangci-lint 检查 #295
  • 支持 operator 镜像推送到 dockerhub apache org,优化国内镜像拉取速度 #281
  • 新增 自动为 PR 打 label 的 github action #355
  • 更新 Readme 文档,增加 proxy 和 operator 的操作视频 #274


社区建设


此次 ShardingSphere-On-Cloud 0.3.0  版本的发布,共有 6 位 Contributor 提交了 120 个 PR,感谢社区伙伴们的大力支持。

GitHub ID:

  • mlycore
  • Xu-Wentao
  • yikuaibro
  • xuanyuan300
  • wbtlb
  • moomman


文章转载自公众号:ShardingSphere官微

分类
已于2023-9-11 11:46:11修改
收藏
回复
举报
回复
    相关推荐