Kubernetes ile Hazelcast
Merhabalar,
Bu yazımda kurulumunu kubernetes clusterımıza HAZELCAST kurulumunu inceliycez. ilk olarak nedir, hangi amaçla kullanıyoruz.
Hazelcast açık kaynak (open source) kodlu Java tabanlı veri kümeleme, dağıtımı için yapılmış bir yapıdır. Hazelcast verileri anlık olarak bellekte tutar. JVM’ler sayesinde verileri eşit şekilde yük dağılımı etmeye çalışarak veri yükünü düzgün şekide paylaştırıp, hızlı güvenli ve en az veri kaybı için çalışan bir yapıdır Hazelcast. JVM’leriniz ve sunucular arasında bu veri yükünün dağılımını belirleyebiliyoruz. Hazelcast farklı instance’ler arasında haberleşebilir ve diğer instance’lere erişebilirsiniz. Diğer bir deyişle Hazelcast in-memory datagrid olarakta ifade edilmektedir. Birden fazla makine üzerinde çalışan uygulamaların birbirleriyle kolay bir şekilde haberleşmesi sağlayan ve bellekte çalışan bir yapıdır.
Hazelcast içerisinde Queue , Map , List , Set gibi yapılarda dağıtık bir halde çalışabilir ve farklı birden fazla instance arasında paylaşımlı olarak kullanılabilir.
Hazelcast’i minikube clusterımızda deployment gerçekleştircez. ilk olarak minikube clustermızı oluşturalım. Bunun için,
minikube start --memory=8000 --cpus=4
Minikube localinizde yüklü değil ise diğer yazımdan kurulumu yapabilirsiniz.
Hazelcast’i helm ile kurcağımız için helm’in localimizde yüklü olması gerekmektedir. Helm yüklemek için;
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3chmod 700 get_helm.sh./get_helm.sh
“helm versiyon” komutu ile yüklediğiniz helm versiyonu kontrol edebilirsiniz.
Kuruluma geçmeden önce hazelcast github sayfasından ilgili repository localinize indirebilirsiniz.
ilk olarak bir imperative olarak hazelcast adında namespace oluşturalım.
kubectl create namespace hazelcastkubectl get namespaces
ikinci olarak bir tane storage class oluşturalım.
kubectl apply -f hazelcast-storageclass.ymlkubectl get storageclasses.storage.k8s.io
Üçüncü olarak bir tane persistent volume ve persistent volume claims oluşturalım.
Dördüncü olarak man center user ve password ile giriş yapmak için bir tane secret oluşturalım.
Note: Kullanıcı ve Şifre oluşturmadaki kriterleri hazalcast resmi web sitesinden okuyabilirsiniz.
kubectl apply -f hazelcast-secret.yamlkubectl get secrets -n hazelcast
Son olarak da hazelcast repository’sini helm ile indirelim. Bunun için,
helm repo add hazelcast https://hazelcast-charts.s3.amazonaws.com/helm repo updatehelm search repo hazelcasthelm repo list
Hazelcast repository’sini helm repo’yu eklediğimize göre kurulum komutuna geçebiliriz.
helm install min-hazelcast hazelcast/hazelcast
-n hazelcast
-f values.yml
--set service.type=NodePort,service.clusterIP=""
--set mancenter.persistence.storageClass=local-storage
--set persistence.existingClaim=mancenter-storage-min-hazelcast-mancenter-0
kubectl get statefulsets.apps -n hazelcastkubectl get svc -n hazelcastkubectl get pods -n hazelcast
Hazelcast UI bağlanmak için “http://192.168.49.2:32305/login.html”
Username: deniz123Password: admin4587**3506
ile login olduktan sonra,
Başarılı şekilde hazelcast bağlanmış durumdayız.
Son olarak da hazelcast podlarından birine bağlanalım.
kubectl exec -it -n hazelcast min-hazelcast-0 -- bash-> hostname -f
Burada yazan service bilgisine göre artık bağımlı olan servislerde environment variable olarak set etmeniz gerekmektedir.
Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Yazımı okuduğunuz için teşekkürler :)
Referanslar;