Ana içeriğe geç

🐘 Ubuntu 22.04'te Apache Cassandra Kurulumu ve Çoklu Düğüm Kümesi Yapılandırması

Meta Açıklaması

Ubuntu 22.04 sunucularına Apache Cassandra'yı kurun, güvenlik duvarını ayarlayın ve dayanıklı, master'sız (masterless) bir çoklu düğüm (multi-node) Cassandra kümesi yapılandırıp çalıştırın.


🧠 Aşama 1 – İçeriği Analiz Et (Anlama)

Ana Teknik Konu:

Ubuntu 22.04 işletim sistemi üzerinde Apache Cassandra dağıtılmış NoSQL veritabanı sistemini kurmak ve çoklu düğüm (multi-node) olarak yapılandırmak.

Hangi Problemi Çözüyor?

Master'sız, hataya dayanıklı ve ölçeklenebilir bir veritabanı altyapısı kurarak yüksek erişilebilirlik (high availability) ve büyük hacimli veri yönetimi ihtiyacını karşılamak.

Kullanıcı Hangi Adımları İzliyor?

  1. Güvenlik Duvarı (UFW) yapılandırmasını yapma: Cassandra portlarına izin verme.
  2. Düğümler arası iletişimi doğrulama: Ping komutuyla doğrulama.
  3. Varsayılan Cassandra verilerini silme: Düğümlerden eski veriyi temizleme.
  4. Cassandra yapılandırma dosyasını düzenleme: Seed nodes, listen_address ve rpc_address ayarlarını yapma.
  5. Cassandra servisini başlatma: Çekirdek düğümden başlayarak servisi başlatma.
  6. Küme durumunu kontrol etme: nodetool status komutuyla.
  7. cqlsh ile kümeye bağlanma: Cassandra'ya bağlanarak veri sorgulama.

Kısa Teknik Özet:

Bu rehber, Ubuntu 22.04 üzerinde en az iki sanal sunucu kullanarak Apache Cassandra kümesi kurmayı anlatıyor. Amaç, düğümler arası iletişimi ve küme yapılandırmasını ayarlayarak master'sız, dağıtılmış bir NoSQL veritabanı sistemi oluşturmaktır.


Bu Rehberde Ne Öğreneceksiniz?

Bu kılavuzda, açık kaynaklı, master'sız ve dağıtılmış bir NoSQL veritabanı olan Apache Cassandra'yı birden fazla Ubuntu 22.04 sunucusunda nasıl kuracağınızı öğreneceksiniz. Düğümler arası iletişim için güvenlik duvarı ayarlarını yapacak, çekirdek düğümleri (seed nodes) belirleyecek ve kümenizin kararlı bir şekilde çalıştığını doğrulamak için nodetool yönetim aracını kullanacaksınız.


1. Cassandra Çoklu Düğüm Kümesi Kurulumu

1.1 Gereksinimler

En Az 2 Ubuntu 22.04 Sanal Sunucu (Instance): Her biri en az 2 GB RAM'e sahip ve aynı veri merkezi bölgesinde bulunmalıdır. Sudo yetkili bir non-root kullanıcıya sahip olmalıdır.

Java: Sunucularda OpenJDK 8 veya OpenJDK 11 gibi uyumlu bir Java çalışma zamanı kurulu olmalıdır.

Cassandra: Her sunucuda temel Cassandra kurulumu zaten yapılmış olmalıdır.

Özel Ağ (Internal Network): Tüm düğümlerin birbirleriyle özel (dahili) ağ arayüzleri üzerinden iletişim kurması gereklidir.

💡 Not: Bu rehberde node1 ve node2 adında iki düğüm kullanıldığı varsayılacaktır. Dahili IP adreslerinizi buna göre değiştirin.


2. Güvenlik Duvarını (UFW) Yapılandırma

Çoklu düğüm kümesinin çalışması için, tüm düğümlerin gerekli Cassandra portları üzerinden iletişim kurabilmesi gerekir.

Gerekli Portlar:

  • 7000 (TCP): Düğümler arası komutlar ve veri iletişimi.
  • 9042 (TCP): Yerel taşıma sunucusu (Native Transport Server). cqlsh bu portu kullanır.

2.1 Dahili IP Adreslerini Bulma

Her bir düğümün özel ağ arayüzü IP adresini bulun. Rabisu Bulut platformunda ağ sekmesinden veya komut satırı ile (Ubuntu/Debian için) bulabilirsiniz:

hostname -I | cut -d' ' -f3

Bu komut, sunucuya atanan üçüncü IP adresini (genellikle özel ağ adresi) döndürür.


1. UFW Kurallarını Ekleme

  • Her düğümde, diğer düğümden gelen trafiğe izin veren kuralı uygulayın.

  • node1 üzerinde çalıştırın:


sudo ufw allow from node2-dahili-ip-adresi to node1-dahili-ip-adresi proto tcp port 7000,9042
  • node2 üzerinde çalıştırın (IP adreslerini ters çevirin):

sudo ufw allow from node1-dahili-ip-adresi to node2-dahili-ip-adresi proto tcp port 7000,9042
  • Kümenizdeki her düğüm için bu komutu diğer tüm düğümlerle karşılıklı olarak tekrarlamalısınız.

2. İletişimi Test Etme

  • Güvenlik duvarı kurallarının geçerli olduğunu doğrulamak için düğümler arasında ping atın:

ping -c 3 diger-dugumun-dahili-ip-adresi
  • 3 paket gönderilip 3'ü de alınırsa, iletişim başarılıdır.

3. Varsayılan Cassandra Verilerini Silme

Çoklu düğüm kümesini doğru bir şekilde başlatmak için, her düğümdeki önceki tekli kurulumdan kalan varsayılan verileri silmeliyiz.

3.1 Cassandra Servisini Durdurma:

  • Aşağıdaki komutu kümedeki her bir düğümde çalıştırın:

sudo systemctl stop cassandra

Bu komut, Cassandra arka plan hizmetini durdurur.


4. Varsayılan Veri Setini Silme:

  • Tüm düğümlerde varsayılan veri dizinini silin:

sudo rm -rf /var/lib/cassandra/*
  • Bu komut, -r (özyinelemeli) ve -f (zorla) seçenekleriyle tüm dosya ve klasörleri siler.

4. Cassandra Kümesi Yapılandırması

Şimdi, tüm düğümleri tek bir kümenin üyesi olarak yapılandırmak için /etc/cassandra/cassandra.yaml dosyasını düzenleyeceğiz. node1'i çekirdek düğüm (seed node) olarak atayacağız.

4.1 Yapılandırma dosyasını açın (Her düğümde bu adımı tekrarlayın):


sudo nano /etc/cassandra/cassandra.yaml
  • Aşağıdaki direktifleri güncelleyin:

cluster_name: 'RabisuCassandraCluster'
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "node1-dahili-ip-adresi" # Tüm düğümlerde node1'in IP'si olmalı
listen_address: "hedef-dugum-dahili-ip-adresi" # Düğümün kendi IP adresi
rpc_address: "hedef-dugum-dahili-ip-adresi" # Düğümün kendi IP adresi
endpoint_snitch: GossipingPropertyFileSnitch
auto_bootstrap: false # Yeni küme oluşturulurken zorunludur
  • Dosyayı kaydedin ve kapatın.

1. Cassandra'yı Yeniden Başlatma

Yapılandırmalar tamamlandıktan sonra, Cassandra hizmetini önce çekirdek düğümde başlatarak küme oluşturma sürecini başlatın.

2. Çekirdek Düğümü (node1) Başlatın:


sudo systemctl start cassandra

3. Hizmetin durumunu kontrol edin:


sudo systemctl status cassandra

Diğer Düğüm(ler)i (node2, ...) Başlatın:

-Diğer tüm düğümlerde de aynı komutları çalıştırarak Cassandra hizmetini başlatın ve durumlarını doğrulayın.


4. Çoklu Düğüm Kümesine Bağlanma

Tüm düğümler çalıştığına göre, kümenin kararlı bir şekilde iletişim kurduğunu kontrol edelim.

5.Küme Durumunu Doğrulama:

  • Herhangi bir düğümde nodetool status komutunu çalıştırın:

sudo nodetool status

Çıktı aşağıdaki gibi olmalıdır:


Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 10.124.0.3 991.64 KiB 256 100.0% ... rack1 (node1)
UN 10.124.0.2 413.57 KiB 256 100.0% ... rack1 (node2)
cqlsh ile Bağlanma:


6. Herhangi bir düğümün dahili IP adresini kullanarak kümeye cqlsh ile bağlanın:


cqlsh diger-dugum-dahili-ip-adresi 9042
  • Bağlantı başarılıysa, küme bilgilerinizi sorgulayabilirsiniz:

cqlsh> describe cluster
  • Bağlantıyı sonlandırmak için exit yazın.

Sıkça Sorulan Sorular (SSS)

Soru: Çekirdek Düğüm (Seed Node) ne işe yarar? Cevap: Çekirdek düğümler, kümedeki diğer düğümlerin küme hakkında bilgi edinmek için başvurduğu başlangıç noktalarıdır. Küme kararlılığı için kritiktir.

Soru: Cassandra'nın master'sız mimarisi ne demektir? Cevap: Kümede tek bir ana (master) düğüm yoktur. Tüm düğümler eşittir. Bu, tek hata noktasını (single point of failure) ortadan kaldırır.

Soru: Neden dahili IP adreslerini kullanmalıyım? Cevap: Özel ağ (internal network) arayüzleri, daha düşük gecikme (latency) ve daha yüksek güvenlik sağlar. Üretim ortamlarında tercih edilir.

Soru: auto_bootstrap: false neden gereklidir? Cevap: Bu ayar, küme ilk kez başlatılırken düğümlerin mevcut verileri kopyalamaya çalışmasını engeller. Veri olmayan küme başlatılırken gereklidir.

Soru: cqlsh bağlantısı neden 9042 portunu kullanır? Cevap: 9042, Cassandra'nın istemci bağlantıları için kullandığı varsayılan yerel taşıma (native transport) portudur.


Sonuç

Apache Cassandra'yı Ubuntu 22.04 sunucularınıza başarıyla kurdunuz ve düğümler arası iletişimi ayarlayarak hataya dayanıklı, çoklu düğüm kümenizi oluşturdunuz. Artık yüksek ölçeklenebilirlik gerektiren uygulamalarınız için master'sız bir NoSQL veritabanı altyapısına sahipsiniz.

Küme sorunlarını gidermek için /var/log/cassandra dizinindeki log dosyalarını kontrol etmeyi unutmayın.

Bu dağıtılmış veritabanı çözümünü Rabisu Bulut platformunda hemen kullanabilirsiniz!