ShardingSphere-On-Cloud 0.2.0 发布!

素年锦时静待君丶
发布于 2023-5-18 11:57
浏览
0收藏

Apache ShardingSphere-On-Cloud 近日迎来了 0.2.0 版本发布。本次 0.2.0 版本主要为 ShardingSphere Operator 引入了全新 CRD ComputeNode,用于完整定义 ShardingSphere 架构中的计算节点。

ComputeNode介绍

在 Apache ShardingSphere 的经典架构里,主要的组件分为计算节点、存储节点和治理节点。其中计算节点指的是 ShardingSphere Proxy,是所有数据流量的入口,承担着分片等各类数据治理能力。存储节点指的是数据库。治理节点是用于存放 ShardingSphere 各类元数据比如分片规则、加密规则、读写分离规则,还有逻辑库表等信息的环境,常用的治理节点组件有 Zookeeper,Etcd 等。

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

在 ShardingSphere Operator 0.1.x 版本中,已经推出了两个 CRD Proxy 和 ProxyServerConfig,分别用于描述 ShardingSphere Proxy 的部署和配置,如下图:

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

通过 Proxy 和 ProxyServerConfig 可以达到对 ShardingSphere Proxy 的部署和基础维护能力,可以满足 PoC 的需要。但是对于 Operator 来说,需要能够应对生产环境中的各类场景和问题,才能真正帮助到了用户。除了部署外,operator 还需要能够管理跨版本升级、会话优雅停止、多 Metrics 的水平弹性扩容、位置感知流量调度、配置安全、集群级高可用等等。而想要实现这些丰富的管理能力,需要将它们的作用集中到一组特定的对象,首当其冲的这个对象就是 ComputeNode,如下图:

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

相比 Proxy 和 ProxyServerConfig,ComputeNode 的改变主要有:

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

ComputeNode实践

快速安装 ShardingSphere Operator

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

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

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

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

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

说明:目前 ComputeNode 仍然属于 v1alpha1 阶段,需要通过 feature gate 进行启用

helm install shardingsphere-operator shardingsphere/apache-shardingsphere-operator-charts --set operator.featureGates.computeNode=true --set proxyCluster.enabled=false

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

3. 通过 kubectl get pod 查看部署情况:

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

现在,已经部署好了一套完整的由 ShardingSphere Operator 管理的集群。

利用 kubectl get 查看 ShardingSphere Proxy 集群状态

通过 kubectl get 可以看到 computenode 的状态列包括 READYINSTANCES,PHASE,CLUSTER-IP,SERVICEPORTS 和 AGE。其中:

  • READYINSTANCES:表示当前处于 Ready 状态的 ShardingSphere Pod 数量,如图中为 1
  • PHASE:表示当前集群状态,如图中为 Ready 状态
  • CLUSTER-IP:表示当前集群 Service 的 ClusterIP
  • SERVICEPORTS:表示当前集群 Service 的端口列表
  • AGE:表示当前集群的创建时长

kubectl get computenode

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

利用 kubectl scale 快速伸缩 ShardingSphere Proxy 集群

为了方便使用,ComputeNode 支持 Scale 子资源,所以可以通过 kubectl scale 配合 --replicas参数进行手动扩容:

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

自定义 ComputeNode 配置

如果 operator 默认的 charts 里面安装的 ComputeNode 无法满足使用场景,那么需要自行编写 ComputeNode yaml 并提交到 kubernetes 进行部署:

apiVersion: shardingsphere.apache.org/v1alpha1
kind: ComputeNode
metadata:
  labels:
    app: foo
  name: foo
spec:
  storageNodeConnector:
    type: mysql
    version: 5.1.47
  serverVersion: 5.3.1
  replicas: 1
  selector:
    matchLabels:
      app: foo
  portBindings:
  - name: server
    containerPort: 3307
    servicePort: 3307
    protocol: TCP
  serviceType: ClusterIP
  bootstrap:
    serverConfig:
      authority:
        privilege:
          type: ALL_PERMITTED
        users:
        - user: root%
          password: root
      mode:
        type: Cluster
        repository:
          type: ZooKeeper
          props:
            timeToLiveSeconds: "600"
            server-lists: shardingsphere-operator-zookeeper.default:2181
            retryIntervalMilliseconds: "500"
            operationTimeoutMilliseconds: "5000"
            namespace: governance_ds
            maxRetries: "3"
      props:
        proxy-frontend-database-protocol-type: MySQL

将上述配置保存为 foo.yml 并执行如下命令即可创建:

kubectl apply -f foo.yml

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

ShardingSphere-On-Cloud 0.2.0 发布!-鸿蒙开发者社区

上述示例可以 Github 仓库中的找到:

https://github.com/apache/shardingsphere-on-cloud/blob/main/examples/operator

其他改进

本次发布的其它更新有:

  • 在 ShardingSphereProxy CRD 的 Annotation 中增加对滚动升级参数的支持 #172
  • 修复 ShardingSphereProxy Status 字段中 readyNodes 和 Conditions 在某些场景中错误的问题 #177
  • 向 ComputeNode 引入 scale 子资源以支持 kubectl scale #189
  • 将 ComputeNode 和 ShardingSphereProxy 构造和更新逻辑分离 #182
  • 向 ComputeNode 定义中反写 NodePort #187
  • 修复非 MySQL 类型配置导致空指针异常的问题 #179
  • 重构 Manager 配置逻辑,分离命令行配置 #192
  • 修复 CI 中 Docker 构建过程 #173

社区建设


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

GitHub ID 

🔖 mlycore

🔖 xuanyuan300


相关参考链接:

🔗 Apache ShardingSphere on Cloud 项目:https://github.com/apache/shardingsphere-on-cloud  

🔗 设计提案:​​https://github.com/apache/shardingsphere-on-cloud/issues/166​​ ComputeNode



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


分类
已于2023-5-18 11:57:12修改
收藏
回复
举报
回复
    相关推荐