SiamCafe · Blog
Redis Cluster Production Setup คู่มือสมบูรณ์ 2026
บทความ

Redis Cluster Production Setup คู่มือสมบูรณ์ 2026

เผยแพร่ 28 พฤษภาคม 2569

Redis Cluster คืออะไร — ทำไมต้อง Cluster?

Redis เป็น in-memory data store ที่เร็วที่สุดในโลกแต่ถ้าใช้ Redis แบบ standalone node เดียวจะมีข้อจำกัดสำคัญคือ RAM ของเครื่องเดียวถ้าข้อมูลมีขนาด 64GB แต่ server มี RAM แค่ 32GB ก็ใช้ไม่ได้ Redis Cluster แก้ปัญหานี้โดยการกระจายข้อมูลไปหลาย node โดยอัตโนมัติทำให้รองรับข้อมูลขนาดใหญ่ได้

Redis Cluster ทำงานด้วยหลักการ Sharding คือแบ่งข้อมูลออกเป็น 16,384 hash slots แล้วกระจายไปยัง master nodes แต่ละ master มี replica สำรองข้อมูลถ้า master ตายก็ failover ไป replica อัตโนมัติทำให้ระบบมี High Availability

สถาปัตยกรรม Redis Cluster ในระดับ Production

สำหรับ production ที่ต้อง uptime 99.99% แนะนำให้ใช้อย่างน้อย 6 nodes คือ 3 masters + 3 replicas กระจายอยู่ใน 3 Availability Zones (AZ) แต่ละ AZ มี 1 master และ 1 replica ของ master ตัวอื่นเพื่อให้ AZ ใดตายไป cluster ยังทำงานได้

ComponentMinimumแนะนำ Productionหน้าที่
Master Nodes33-6เก็บข้อมูลจริงรับ read/write
Replica Nodes33-6สำรองข้อมูล failover อัตโนมัติ
RAM per Node4 GB16-64 GBเก็บ dataset ใน memory
Network1 Gbps10 GbpsReplication + client traffic
DiskSSD 50 GBNVMe SSD 200+ GBRDB/AOF persistence

ขั้นตอนติดตั้ง Redis Cluster บน Ubuntu 22.04

ขั้นตอนการติดตั้ง Redis Cluster สำหรับ production มีดังนี้:

Step 1: ติดตั้ง Redis Server

# ติดตั้ง Redis จาก official repository
sudo apt update && sudo apt upgrade -y
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update && sudo apt install redis-server -y
redis-server --version

Step 2: ตั้งค่า redis.conf สำหรับ Cluster Mode

# /etc/redis/redis.conf — แก้ไขค่าเหล่านี้
port 6379
bind 0.0.0.0
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
appendfsync everysec
maxmemory 12gb
maxmemory-policy allkeys-lru
requirepass YourStrongPassword123!
masterauth YourStrongPassword123!

คำอธิบาย config สำคัญ:

  • cluster-enabled yes — เปิดโหมด cluster
  • cluster-node-timeout 5000 — ถ้า node ไม่ตอบภายใน 5 วินาทีถือว่า down
  • appendonly yes — เปิด AOF persistence ป้องกันข้อมูลหายตอน restart
  • maxmemory-policy allkeys-lru — ลบ key ที่ไม่ได้ใช้นานสุดเมื่อ RAM เต็ม
  • requirepass + masterauth — ตั้ง password สำหรับ client และ replication

Step 3: สร้าง Cluster

# รัน Redis บนทุก node แล้วสร้าง cluster
redis-cli --cluster create \
 node1:6379 node2:6379 node3:6379 \
 node4:6379 node5:6379 node6:6379 \
 --cluster-replicas 1 -a YourStrongPassword123!

# ตรวจสอบสถานะ cluster
redis-cli -a YourStrongPassword123! cluster info
redis-cli -a YourStrongPassword123! cluster nodes

Monitoring และ Alerting สำหรับ Redis Cluster

Production Redis Cluster ต้องมี monitoring ที่ดีค่าที่ต้องเฝ้าดู:

  • used_memory vs maxmemory — ถ้าเกิน 80% ต้อง scale หรือ evict
  • connected_clients — จำนวน connection ถ้าเพิ่มขึ้นผิดปกติอาจมี connection leak
  • instantaneous_ops_per_sec — throughput ของ commands ต่อวินาที
  • keyspace_hits vs keyspace_misses — cache hit ratio ควรอยู่เหนือ 95%
  • cluster_state — ต้องเป็น ok เสมอถ้าเป็น fail ต้องรีบแก้ทันที
  • repl_backlog_active — ดูว่า replication ทำงานปกติหรือไม่

แนะนำใช้ Prometheus + Redis Exporter + Grafana สำหรับ monitoring dashboard ที่สมบูรณ์หรือใช้ redis-cli --stat สำหรับ quick check

Redis Cluster Best Practices สำหรับ Production

  1. อย่าใช้ KEYS command — ใช้ SCAN แทนเพราะ KEYS บล็อก Redis ทั้ง node
  2. ใช้ Pipeline — ส่งหลาย commands พร้อมกันลด round-trip time
  3. ตั้ง TTL ทุก key — ป้องกัน memory เต็มจาก stale data
  4. ใช้ Hash Slots อย่างฉลาด — ใช้ hash tag {user:1001} เพื่อให้ related keys อยู่ node เดียวกัน
  5. Backup RDB ทุกวัน — เก็บไว้ S3 หรือ off-site storage อย่างน้อย 7 วัน
  6. ทดสอบ Failover เป็นประจำ — สั่ง redis-cli debug sleep 30 แล้วดูว่า failover ทำงานจริงหรือไม่
  7. แยก network สำหรับ cluster bus — port 16379 ควรอยู่บน private network ไม่เปิดให้ public
  8. ใช้ Connection Pool — ไม่ต้องสร้าง connection ใหม่ทุกครั้งลด overhead

เปรียบเทียบ Redis Cluster vs Redis Sentinel vs ElastiCache

FeatureRedis ClusterRedis SentinelAWS ElastiCache
Sharding✅ อัตโนมัติ❌ ไม่รองรับ✅ อัตโนมัติ
HA/Failover✅ อัตโนมัติ✅ อัตโนมัติ✅ อัตโนมัติ
จัดการเองต้อง setup เองต้อง setup เองAWS จัดการให้
ค่าใช้จ่ายถูก (self-hosted)ถูก (self-hosted)แพง (~$500+/mo)
เหมาะกับData ขนาดใหญ่Data ขนาดเล็ก-กลางไม่อยากดูแลเอง

Q: Redis Cluster ต้องใช้กี่ node ขั้นต่ำ?

ขั้นต่ำ 6 nodes สำหรับ production คือ 3 masters + 3 replicas ถ้าใช้แค่ 3 nodes (3 masters ไม่มี replica) เมื่อ master ตาย 1 ตัว cluster จะ down ทั้งระบบไม่แนะนำสำหรับ production