Skip to content

[BE-INFRA-02] Redis Cluster 3 shards : config sessions/blacklist (db0) + rate limiters (db1) + cache profils (db2), TLS, monitoring #424

Description

@K0lux

section: Cache — Redis | prio: P0 | est: 3h

Pourquoi

Redis est le composant le plus critique pour la performance. Le Cluster assure la HA et la scalabilité horizontale à 2M users.

Acceptance Criteria

  • Cluster Redis 3 shards (6 nodes : 3 primary + 3 replica) — chaque shard gère ~1/3 du keyspace
  • DB 0 (sessions/blacklist) : policy noeviction — jamais dexpulsion silencieuse dune session. maxmemory 8GB par shard prod
  • DB 1 (rate limiters) : policy allkeys-lru — peut expulser les clés expirées. maxmemory 2GB
  • DB 2 (cache profils) : policy allkeys-lru, TTL 5min. maxmemory 4GB
  • TLS 1.3, AUTH via REDIS_PASSWORD secret, requirepass + masterauth
  • Persistence : AOF appendfsync everysec sur DB 0 (sessions) uniquement — DB 1 et 2 rebuildables
  • Health check : redis-cli -a $PASS ping dans le liveness probe K8s
  • Métriques Prometheus via redis_exporter : redis_connected_clients, redis_memory_used_bytes, redis_keyspace_hits_total, redis_keyspace_misses_total
  • Alertes : memory > 80% → scale up, eviction rate > 0 sur DB0 → P0 incident
  • docker-compose.yml pour le dev local : redis:7-alpine, single node, AOF

Fichiers

infra/redis/
├── redis-cluster.conf
└── redis-dev.conf
docker-compose.yml
infra/prometheus/
└── redis_alerts.yml

Scale

3 shards × 8GB = 24GB pour sessions/blacklist. À 2M users × 10 sessions × 200B = 4GB → 6× headroom.

Metadata

Metadata

Assignees

No one assigned

    Labels

    infraInfrastructureperfPerformance optimization

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions