fix(dlob): run redis as single-node cluster

This commit is contained in:
u1
2026-01-10 10:08:48 +00:00
parent 5992a54ac3
commit 86fcc286e5

View File

@@ -32,7 +32,48 @@ spec:
- name: redis
image: redis:7-alpine
imagePullPolicy: IfNotPresent
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
ports:
- name: redis
containerPort: 6379
args: ["--save", "", "--appendonly", "no"]
# DLOB redis client uses ioredis Cluster when RUNNING_LOCAL=true and LOCAL_CACHE=true.
# We run a single-node Redis Cluster (no TLS) and assign all slots on startup.
command: ["/bin/sh", "-lc"]
args:
- |
exec redis-server \
--save "" \
--appendonly no \
--protected-mode no \
--bind 0.0.0.0 \
--cluster-enabled yes \
--cluster-config-file /data/nodes.conf \
--cluster-node-timeout 5000 \
--cluster-require-full-coverage no \
--cluster-announce-ip "${POD_IP}" \
--cluster-announce-port 6379 \
--cluster-announce-bus-port 16379
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -lc
- |
set -e
for i in $(seq 1 60); do
redis-cli -h 127.0.0.1 -p 6379 ping >/dev/null 2>&1 && break
sleep 1
done
# If cluster is already initialized, do nothing.
if redis-cli -h 127.0.0.1 -p 6379 cluster info 2>/dev/null | grep -q 'cluster_slots_assigned:16384'; then
exit 0
fi
# Redis 7+ supports CLUSTER ADDSLOTSRANGE.
redis-cli -h 127.0.0.1 -p 6379 cluster addslotsrange 0 16383 || true