Kubernetes'te Redis Sentinel ile Kesintisiz Failover Arayışı
Bir mühendisin EKS üzerinde Redis Sentinel failover'ını sıfır kesintiye yaklaştırma denemesi: preStop hook özelleştirmesi, ioredis buffer riskleri ve ölçekte HA tartışması.
Bir Reddit gönderisinde, AWS EKS üzerinde Bitnami Helm chart ile çalışan Redis Sentinel kurulumunu Node.js ve ioredis ile kullanan bir ekip, pod sonlandırma sırasında yaşanan kesintileri gidermeye çalıştığını anlatıyor. Varsayılan preStop hook'un CLIENT PAUSE komutuyla uygulamayı yaklaşık 20 saniye dondurup yoğun TimeoutError'lara yol açtığını tespit eden ekip, bu davranışı kaldırıp yerine anında SENTINEL FAILOVER tetikleyen ve TCP bağlantılarını temiz şekilde kesen özel bir script yazmış. ioredis tarafında maxRetriesPerRequest: null ve enableOfflineQueue: true ayarlarıyla, bağlantı koptuğunda komutlar bellekte kuyruğa alınıyor, yeni master Sentinel'den öğrenilip kuyruk boşaltılıyor. Test ortamında failover 2-5 saniyede tamamlanıyor ve kullanıcıya sadece hafif bir gecikme olarak yansıyor.
Ancak asıl soru, bu senaryonun üretimde yüksek trafik altında ölçeklenip ölçeklenemeyeceği. Yoğun trafik, büyük veri setleri, Sentinel seçim süreleri ve DNS yayılımı gecikmesinin 10-15 saniyeye hatta daha fazlasına çıkabileceği; bu durumda ioredis'in bellekteki komut kuyruğunun patlayarak OOM çökmelerine veya kuyruk boşaltıldığında ani gecikme sıçramalarına yol açabileceği endişesi dile getiriliyor. Yazar, topluluktan bu tür Redis HA edge case'lerini ölçekte nasıl yönettiklerini, gecikme sıçramasını kabul edip etmediklerini ve AWS ElastiCache gibi yönetilen servislere geçmenin tek çözüm olup olmadığını soruyor.
Bu tartışma, self-hosted Redis Sentinel'i Kubernetes üzerinde çalıştıran mühendisler için önemli bir mimari ders niteliğinde: preStop hook davranışları, client-side buffering stratejileri ve failover sürelerinin öngörülemezliği, üretim ortamında ciddi kararlılık riskleri taşıyor. Yönetilen servislere geçiş ile kendi altyapını yönetme arasındaki maliyet-risk dengesi, ölçek büyüdükçe daha kritik hale geliyor.