如何初始化集群分片槽位

默认情况下,创建的 Redis 集群实例会将所有 16384 个哈希槽均匀分配到所有分片中。但在灾备等特定场景下,通常需要更灵活的槽位布局。为此,我们支持在创建实例时提供自定义槽位分布方案,以满足此类高级需求。

CLI
cat << EOF | kubectl -n default create -f -
apiVersion: middleware.alauda.io/v1
kind: Redis
metadata:
  name: c6
spec:
  activeRedis:
    proxy:
      replicas: 1
      resources:
        limits:
          cpu: "1"
          memory: 1Gi
        requests:
          cpu: "1"
          memory: 1Gi
      service:
        type: LoadBalancer
    serviceID: 0
  affinityPolicy: AntiAffinityInSharding
  arch: cluster
  customConfig:
    save: 60 10000 300 100 600 1
  passwordSecret: redis-c6-password
  persistent:
    storageClassName: sc-topolvm
  persistentSize: 1Gi
  replicas:
    cluster:
      shard: 3
      slave: 1
      shards:
      - slots: 0-5460
      - slots: 5461-10922
      - slots: 10923-16383
  resources:
    limits:
      cpu: 1
      memory: 1Gi
    requests:
      cpu: 1
      memory: 1Gi
  version: "6.0"
EOF

这里配置的主要字段是 spec.replicas.cluster.shards,其条目数量必须与 spec.replicas.cluster.shard 的值相匹配。spec.replicas.cluster.shards[].slots 字段支持: 0-54605461-1092210923-16383、单个槽位如 5461,以及混合列表如 0-1000, 1001, 1002-5461

其他字段的具体含义,请参考API 文档