microsoft/garnet

Easy Cluster mode on kubernetes

Open

#741 创建于 2024年10月21日

在 GitHub 查看
 (4 评论) (12 反应) (0 负责人)C# (11,827 star) (660 fork)batch import
enhancementhelp wanted

描述

Feature request type

Kubernetes Operator, or easy config file setup for garnet

Is your feature request related to a problem? Please describe

Using cluster mode on kubernetes is impossible without an operator to meet the other nodes in a statefulset. Indeed, garnet uses the same cluster model as redis where stafulset/service (with clusterIP none) dns naming pattern is unknown at the config level.

Describe the solution you'd like

provide an operator that orchestrates cluster setup, recovery, migration based on a custom CRD that describes the cluster topology :

apiVersion: garnet.microsoft/v1
kind: GarnetCluster
metadata:
  name: garnet-cluster
spec:
  masterCount: 3
  replicasPerMaster: 1
  storage:
    volumeClaimTemplate:
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
  • Changing masterCount should reshard and migrate data to resized masters
  • changing replicasPerMaster should replicate data

Describe alternatives you've considered

Allow graceful recovery of the cluster when one or many nodes restart using a dns naming pattern (would be nice) using a predefined cluster DNS names lists. Example : in garnet.conf

{
  "clusterMasterNames": ["garnet-0", "garnet-1", "garnet-3"],
  "clusterReplicaNames" : ["garnet-4", "garnet-5", "garnet-6"]
}
  • clusterReplicaNames vector should have a size that is multiple of clustesMasterNames
  • each cluster know who he is by getting it's hostname as kubernetes would provision it whensetting a statefulset
  • only static setup would be supported (no dynamic resharding, or dynamic replication)

Additional context

No response

贡献者指南