Redis Cluster Kurulumu – Kubernetes

DevOps

Bu yazımızda, Kubernetes cluster içerisinde 6 pod çalıştıran bir StatefulSet ile Redis Cluster kurulumu yapacağız. Ön gereklilik olarak, Cluster kurulumunun yapılmış olduğunu ve kubectl ile erişim sağlandığını varsayarak devam edeceğiz.

Kurulumu “redis” namespace içerisinde yapacağız. Bu nedenle öncelikle aşağıda ki komutu uygulayarak namespace oluşturuyoruz.

kubectl create namespace redis

Namespace oluşturma işleminin ardından, konfigürasyonun merkezi olarak okunabileceği bir configMap oluşturarak ilerliyoruz.

kubectl apply -f https://raw.githubusercontent.com/msbayir/redis-cluster/main/redis-configmap.yaml

Bu yapılandırma, cluster’ın persistence (kalıcı) storage ile çalışmasını sağlayacaktır. Statefulset oluştururken, “redis-cluster” isimlendirmesi ile bu konfigürasyonu referans alacağız.

Statefulset yayınlama işlemini aşağıda ki gibi yapabiliriz ancak, yayınladıktan sonra ya da yayınlamadan önce 47. satırda bulunan “CHANGEME” değerini, tanımladığınız Storage Class isimlendirmesi ile değiştirmeniz gerekiyor. Bu hali ile, podlar oluşturulurken storage classname bulunamadığı için hata verecektir.

kubectl apply -f https://raw.githubusercontent.com/msbayir/redis-cluster/main/redis-statefulset.yaml

İlgili değişiklik yapılarak yaml dosyası uygulandığında, sıralı olarak 6 pod’un oluştuğunu aşağıda ki komut ile görebilirsiniz.

kubectl get pods -n redis

Eğer hata alıyorsanız, Storage Class isimlendirmesini yeniden kontrol edebilirsiniz. Cluster içerisinde tanımlı Storage Class’ları görmek isterseniz, aşağıda ki komutu uygulayabilirsiniz.

kubectl get storageclass

Azure Kubernetes ile kurulum yapıyorsanız, yaml dosyasında ki “CHANGEME” değerini “azurefile” gibi tanımlı isimler ile değiştirebilirsiniz. Bu adımdan sonra artık cluster’a bağlanacak service tanımını yapabiliriz. Servis için port değişikliği gibi özel ihtiyaçlarınız yoksa, değişiklik yapmanıza gerek yok.

kubectl apply -f https://raw.githubusercontent.com/msbayir/redis-cluster/main/redis-svc.yaml

Tüm kurulumlarımız tamamlandı. Artık bir servis, yönleneceği 6 pod ve podların bağlı olduğu 1 adet configMap’imiz var. Podlarımız “redis-cluster-X” isimlendirmesi ile 3 master ve 3 worker olarak oluşturuldu. redis-cluster-0 pod üzerinden komut göndererek diğer podları cluster’a dahil edeceğiz. Bunun için pod IP adreslerine ihtiyacımız var.

kubectl get pods -n redis -o wide

Komutu ile podların IP adreslerini görebiliyoruz. Cluster’a dahil etme işleminde IP Adresi:PORT komutunu dahil edeceğimiz için, redis-cluster-0 dahil olmak üzere tüm podların IP adreslerini not alabiliriz.

kubectl exec -it redis-cluster-0 -n redis — redis-cli –cluster create –cluster-replicas 1 10.62.3.X:6379 10.62.3.X:6379 10.62.3.X:6379 10.62.3.X:6379 10.62.3.X:6379 10.62.3.X:6379

Podların 10.62.3.X şeklinde IP adresi aldığını varsayarak komutu yukarıda ki gibi uyguladım. Bu alanların cluster içerisinde ki pod IP adresleri ile güncellenmesi gerekecektir.

Bu işlem tamamlandıktan sonra cluster durumunu kontrol etmek için;

kubectl logs redis-cluster-0 -n redis

Çıktısına bakabilirsiniz. Burada senkronizasyon çıktısını görmeniz gerekiyor.

Tüm repoyu GitHub redis-cluster adresinden indirebilirsiniz.

 

Etiketler: redis, Redis Cluster, redis on Kubernetes

1 Yorum. Yeni Yorum

  • Çok faydalı bir içerik olmuş, özellikle türkçe kaynak anlamında bir çok kişinin işine yarayacaktır.
    Emeği geçen herkese teşekkürler.

    Yanıtla

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Fill out this field
Fill out this field
Lütfen geçerli bir e-posta adresi yazın.

Yeni
Bu yazıyı beğendin mi? Arkadaşlarınla paylaş!

Benzer içerikler: