如何初始化集群分片槽位
默认情况下,创建的 Redis 集群实例会将所有 16384 个哈希槽均匀分配到所有分片中。但在灾备等特定场景下,通常需要更灵活的槽位布局。为此,我们支持在创建实例时提供自定义槽位分布方案,以满足此类高级需求。
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-5460
、5461-10922
、10923-16383
、单个槽位如 5461
,以及混合列表如 0-1000, 1001, 1002-5461
。
其他字段的具体含义,请参考API 文档。