Kubernetes Cassandra Kurulumu
Merhabalar,
Bu yazımda Kubernetes Clusterımıza Cassandra kurulumu inceliycez. İlk olarak “cassandra” ve bileşenleri neler olduğunu öğrenelim.
Cassandra: Apache Cassandra 2009 yılında Facebook tarafından java dili ile geliştirilmiş, Open Source(Açık kayanaklı) ve dağıtık mimariye sahip NoSQL veritabanıdır. Cassandra verilerimize tek sunucada değilde birden fazla sunucuda dağıtık şekilde tutmamızı sağlar.
- Data Availability(Veri Kullanılabilirliği): Cassandra’da bir cluster içerisinde birden fazla master rolünde node bulundurur. Bu da her zaman high availabilityi(Yüksek erişebilirlik) sağlar.
- Scalability(Ölçeklenebilirlik): Temelde cluster modeliyle ilişkilidir. Clusterda master node’lar yazma isteklerini kabul ederken slave node’lar sadece okuma isteklerinde kullanılırlar. Cassandra birden fazla master olduğu için daha hızlı bir yazma isteğini karşılar.
- Data Model (Veri Modeli): Cassandra satır ve sütunlardan oluşan tablo yapısını kullanır. Cassandra’nın ilişkisel veritabanlarındaki benzer yapıyı kullanmasına karşın tabloda bulunan her satırın aynı sütunlara sahip olması zorunluluğu olmadığından ilişkisel veritabanlarına göre daha esnektir.
Şimdi de cassandra kurulumuna başlayalım. Minikube ile kurulum gerçekleştircez. Eğer localinizde minikube kurulu değil ise aşağıdaki linkdeki yazımdan localinize minikube kurulumunu gerçekleştirebilirsiniz.
https://medium.com/devopsturkiye/kubernetes-kurulumu-2-8b15734a7602
Minikube başlatmak için, aşağıdaki komut ile başlatabiliriz.
minikube start — memory=8000 — cpus=4
Minikube clusterımız oluştuğuna göre şimdide kubernetes yaml inceleyelim.
kubectl apply -f cassandra-svc.yamlkubectl get service
Komutlarını çalıştıralım.
Şimdi de cassandra için statefulset objemizi oluşturalım. Bunun için,
kubectl apply -f cassandra-statefulset.yamlkubectl get statefulsetkubectl get pods
Komutlarını terminalden çalıştıralım.
Kurulum tamamlandı. Nodun durumuna bakalım. Bunun için
kubectl exec -it pod_name — nodetool status
Şimdide cassandra cli bağlanalım. Bunun için,
kubectl exec -it pods_name — bash
yada
kubectl exec -it pod_name -- cqlsh
Komutu kullanalım. Podun içine girdikten sonra cassandra cli bağlanmak için “cqslh” komutunu yazalım.
Yukarida görüldüğü gibi cassandra-cli bağlantı sağladık. Şimdide system schemaları listeleyelim. Bunun için,
SELECT * FROM system_schema.keyspaces;ya daDESCRIBE KEYSPACES;
Şimdi de bir tane keyspaces yaratalım. Keyspace postgresql schema oalrak düşünebiliriz. Bunun için,
CREATE KEYSPACE TestDB
WITH REPLICATION =
{ 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
Not: With Replication verinin kaç kopyasının yazılacağı belirtilir. Class property’si verinin kopyasının hangi nodelara yazılacağı replicationSrategy ile belirlenir. İki tip stragety vardır.
- SimpleStrategy: Cluster içerisindeki nodelar replication factor sayısı kadar yazılır. Tek bir data center yapısında kullanılmalıdır.
- NetworkTopologyStrategy: Birden fazla data center yapısında kullanılması gerekir. HEr bir data center da ne kadar kopyanın(replication) tutulacağı söylenir.
Keyspace oluşturduğumuza göre şimdi de bir tane column family yani tablo oluşturalım. Biliyorsunuz ki tanım kısımında bahsettiğim üzere cassandra satır ve sutundan oluşan tablo kullanır. Bunun için ilk olarak keyspace şeçmemiz gerekir.
USE Keyspace_name;CREATE TABLE keyspace_name.table_name(id int primary key, name text,surname text);
Yukaridaki şekilde görüldüğü gibi ;
- keyspace_name -> testdb;
- tablo_name -> Person;
Şimdide bu tabloya bir kayıt ekleyip listeleyelim. Bunun için,
INSERT INTO Person (id, name,surname) values (1,’Deniz’,’TURKMEN’);INSERT INTO Person (id, name,surname) values (2,’Ecem’,’OZLEM’);SELECT * FROM Person;
Görüldüğü gibi başarılı şekilde kayıt tamamlanmıştır.
Not : Tablonun detaylarına bakmak için “describe tablo_name” kullanabilirsiniz.
Simdi de arayüzden kontrol edelim. Bunun ben “dbeaver-ce enterprise” sürümünü açıyorum.
Not: NoSQL veritabanlarını dbaver-ce sadece enterprise sürümde yer almaktadır. Öğrenci mail veya akademik mail iniz ile lisans alabilirsiniz.
Minikube clusterımızla kurulum yaptığımız için service aldığı ip ve port numarası ile giriş yapmalıyız. Service tanımımıza bakacak olursanız tipi “NodePort” dur. Aldığı ip ve port görmek için,
minikube service list
Komutu kullanıyoruz.
Dbeaver arayüzünden New Database Connection -> NoSql -> Cassandra seçiyoruz. Bilgileri girip test connection dedikten sonra başarılı olursa finish diyip database bağlanıyoruz.
Aşağıda şekilde görüldüğü gibi keyspace,tablo ve kayıtımız başarılı şekilde kayıt edilmiş durumdadır.
Not: Başka bir database connect tool kullanırsanız. Deafult olarak,
- Username = cassandra
- Password = cassandra dır.
Minikube Clusterımızın son hali,
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;