Cassandra ve Kubernetes birlikte nasıl çalıştırılır

Bulutta uygulama dağıtmak isteyen geliştiriciler için konteynerler giderek daha popüler hale geldi. Bu yeni uygulamaları yönetmek için Kubernetes, konteyner düzenlemesi için fiili bir standart haline geldi. Kubernetes, geliştiricilerin talebe bağlı olarak otomatik olarak elastik olarak ölçeklenen dağıtılmış uygulamalar oluşturmasına olanak tanır.

Kubernetes, üretimde durum bilgisiz uygulama iş yüklerini zahmetsizce dağıtmak, ölçeklendirmek ve yönetmek için geliştirildi. Durum bilgili, bulutta yerel veriler söz konusu olduğunda, aynı dağıtım ve ölçekleme kolaylığına ihtiyaç vardır.

Dağıtılmış veritabanlarında Cassandra, verilerini ölçeklendirmeleri gerektiğini bilen geliştiriciler için caziptir - birden çok konumda ve bulut hizmetlerinde aynı şekilde çalışabilen, tamamen hataya dayanıklı bir veritabanı ve veri yönetimi yaklaşımı sağlar. Cassandra'daki tüm düğümler eşit olduğundan ve her düğüm okuma ve yazma isteklerini işleyebildiğinden, Cassandra modelinde tek bir hata noktası yoktur. Uygulamayı etkileyen tek bir örneğin kaybını önlemek için veriler hata bölgeleri arasında otomatik olarak çoğaltılır.

Cassandra'yı Kubernetes'e Bağlama

Bir sonraki mantıksal adım, Cassandra ve Kubernetes'i birlikte kullanmaktır. Sonuçta, dağıtılmış bir uygulama ortamıyla birlikte çalışacak dağıtılmış bir veritabanı elde etmek, veri ve uygulama işlemlerinin birbirine yakın olmasını kolaylaştırır. Bu yalnızca gecikmeyi önlemekle kalmaz, aynı zamanda performansın geniş ölçekte iyileştirilmesine de yardımcı olabilir.

Ancak bunu başarmak, hangi sistemin sorumlu olduğunu anlamak anlamına gelir. Cassandra, Kubernetes'in sunabileceği türden bir hata toleransı ve düğüm yerleşimine zaten sahiptir, bu nedenle kararların alınmasından hangi sistemin sorumlu olduğunu bilmek önemlidir. Bu, bir Kubernetes operatörü kullanılarak elde edilir.

Operatörler, alana özel bilgiler gerektiren ve harici sistemlerle etkileşim kurması gereken daha karmaşık uygulamaları devreye alma ve yönetme sürecini otomatikleştirir. Operatörler geliştirilinceye kadar, veritabanı örnekleri gibi durum bilgisi olan uygulama bileşenleri, örneklerini durum bilgisi içeren bir şekilde hazırlayıp çalıştırmak için manuel çalışmayı üstlenmeleri gerektiğinden, geliştirme ekipleri için ekstra sorumluluklara yol açtı.

Cassandra topluluğu tarafından geliştirilen Cassandra için birden fazla operatör vardır. Bu örnek için, DataStax tarafından bir araya getirilen ve açık kaynaklı olan cass-operator'u kullanacağız. Açık kaynaklı Kubernetes, Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) ve Pivotal Container Service (PKS) destekler, böylece ortamınıza en uygun Kubernetes hizmetini kullanabilirsiniz.

Kubernetes kümesini çalıştırma konusunda temel bilgiye sahipseniz, kendi Kubernetes kümenize bir kaset operatörü yüklemek basit bir işlemdir. Kubernetes kümenizin kimliği doğrulandıktan sonra kubectl, Kubernetes küme komut satırı aracı ve Kubernetes bulut örneğiniz (açık kaynaklı Kubernetes, GKE, EKS veya PKS) yerel makinenize bağlandığında, cass- operatör yapılandırması YAML dosyalarını kümenize aktarın.

Kaset operatörü tanımlarınızı ayarlama

Bir sonraki aşama, kaset operatörü bildirimi, depolama sınıfı ve veri merkezi için tanımları Kubernetes kümesine uygulamaktır.

Veri merkezi tanımına ilişkin hızlı bir not. Bu, fiziksel bir veri merkezine referans yerine Cassandra'da kullanılan tanımlara dayanmaktadır.

Bunun hiyerarşisi aşağıdaki gibidir:

  • Bir düğüm, Cassandra örneğini çalıştıran bir bilgisayar sistemini ifade eder. Bir düğüm, fiziksel bir ana bilgisayar, buluttaki bir makine örneği veya hatta bir Docker konteyneri olabilir.
  • Bir raf, birbirine yakın bir dizi Cassandra düğümünü ifade eder. Raf, ortak bir ağ anahtarına bağlı düğümleri içeren fiziksel bir raf olabilir. Bununla birlikte, bulut dağıtımlarında bir raf, genellikle aynı kullanılabilirlik bölgesinde çalışan makine örneklerinin bir koleksiyonunu ifade eder.
  • Bir veri merkezi, genellikle aynı binada bulunan ve güvenilir bir ağ ile birbirine bağlanan mantıksal raflar koleksiyonunu ifade eder. Bulut dağıtımlarında, veri merkezleri genellikle bir bulut bölgesine eşlenir.
  • Bir küme, aynı uygulamayı destekleyen bir veri merkezleri koleksiyonunu ifade eder. Cassandra kümeleri tek bir bulut ortamında veya fiziksel veri merkezinde çalışabilir veya daha fazla dayanıklılık ve daha az gecikme için birden çok konuma dağıtılabilir

Şimdi adlandırma kurallarını onayladık, tanımları oluşturma zamanı. Örneğimiz GKE kullanmaktadır, ancak süreç diğer Kubernetes motorları için benzerdir. Üç adım var. 

Aşama 1

Öncelikle, bir YAML yapılandırma dosyasına başvuran bir kubectl komutu çalıştırmamız gerekir. Bu, cass-operator manifestinin tanımlarını bağlı Kubernetes kümesine uygular. Manifestler, nesnenin istenen durumunu, bu durumda Cassandra operatörünüzün, tanımlayan API nesne açıklamalarıdır. Sürüme özgü bildirimlerin eksiksiz bir seti için bu GitHub sayfasına bakın.

Kubernetes 1.16 çalıştıran GKE bulutu için örnek bir kubectl komutunu burada bulabilirsiniz:

kubectl create -f //raw.githubusercontent.com/datastax/cass-operator/v1.3.0/docs/user/cass-operator-manifests-v1.16.yaml

Adım 2

Sonraki kubectl komutu, bir kümedeki Cassandra düğümleri için kullanılacak depolama ayarlarını tanımlayan bir YAML yapılandırması uygular. Kubernetes, StorageClass kaynağını, kalıcı depolamaya ihtiyaç duyan bölmeler ve belirli bir Kubernetes kümesinin sağlayabileceği fiziksel depolama kaynakları arasında bir soyutlama katmanı olarak kullanır. Örnek, depolama türü olarak SSD kullanır. Daha fazla seçenek için bu GitHub sayfasına bakın. Aşağıda, depolama yapılandırmasında uygulanan YAML'ye doğrudan bağlantı verilmiştir:

apiVersion: storage.k8s.io/v1

tür: StorageClass

meta veriler:

  isim: sunucu-depolama

provizyon: kubernetes.io/gce-pd

parametreler:

  tür: pd-ssd

  çoğaltma türü: yok

volumeBindingMode: WaitForFirstConsumer

reclaimPolicy: Sil

Aşama 3

Son olarak, tekrar kubectl kullanarak, Cassandra Veri Merkezimizi tanımlayan YAML uyguluyoruz.

# 1 çekirdek / 4 GB RAM ile 3 k8s çalışan düğümlerinde çalışmak üzere boyutlandırıldı

# Her parametrenin dokümanları için komşu example-cassdc-full.yaml'ye bakın

apiVersion: cassandra.datastax.com/v1beta1

tür: CassandraDatacenter

meta veriler:

  isim: dc1

spec:

  clusterName: cluster1

  serverType: cassandra

  serverVersion: "3.11.6"

  managementApiAuth:

    güvensiz: {}

  boyut: 3

  storageConfig:

    cassandraDataVolumeClaimSpec:

      storageClassName: sunucu depolama

      accessModes:

        - ReadWriteOnce

      kaynaklar:

        istek:

          depolama: 5Gi

  yapılandırma:   

    cassandra-yaml:

      authenticator: org.apache.cassandra.auth.PasswordAuthenticator

      yetkilendirici: org.apache.cassandra.auth.CassandraAuthorizer

      role_manager: org.apache.cassandra.auth.CassandraRoleManager

    jvm seçenekleri:

      initial_heap_size: "800 milyon"

      max_heap_size: "800 milyon"

Bu örnek YAML, Kubernetes kümesinde bir rafta üç düğüm bulunan açık kaynaklı bir Apache Cassandra 3.11.6 görüntüsü içindir. İşte doğrudan bağlantı. Bu GitHub sayfasında, veritabanına özgü eksiksiz bir veri merkezi konfigürasyonları seti vardır.

Bu noktada, yarattığınız kaynaklara bakabileceksiniz. Bunlar bulut konsolunuzda görünecektir. Örneğin Google Cloud Console'da Kümeler sekmesini tıklayıp neyin çalıştığını görebilir ve iş yüklerine bakabilirsiniz. Bunlar, Kubernetes kümesinde oluşturulabilen ve yönetilebilen konuşlandırılabilir bilgi işlem birimleridir.

Dağıtılmış Cassandra veritabanına bağlanmak için cqlsh, komut satırı kabuğu kullanabilir ve Kubernetes kümenizden CQL kullanarak Cassandra'yı sorgulayabilirsiniz. Doğrulandıktan sonra, tablolar vb. Oluşturmak veya değiştirmek için DDL komutları gönderebilir ve CQL'de ekleme ve güncelleme gibi DML talimatlarıyla verileri işleyebilirsiniz.

Cassandra ve Kubernetes için sırada ne var?

Apache Cassandra için birkaç operatör mevcut olsa da, ortak bir operatöre ihtiyaç vardır. Cassandra topluluğunda yer alan Sky, Orange, DataStax ve Instaclustr gibi şirketler, Kubernetes üzerinde Apache Cassandra için ortak bir operatör oluşturmak için işbirliği yapıyor. Bu işbirliği çabası, mevcut açık kaynak operatörleriyle birlikte devam ediyor ve amaç, kuruluşlara ve kullanıcılara hesaplama ve veriler için tutarlı bir ölçeklendirme yığını sağlamaktır.

Zamanla, bulut tabanlı uygulamalara geçiş, bulut tabanlı verilerle de desteklenmelidir. Bu, Kubernetes gibi araçların yönlendirdiği daha fazla otomasyona dayanacaktır. Kubernetes ve Cassandra'yı birlikte kullanarak, veri bulutu için yaklaşımınızı yerel hale getirebilirsiniz.

Cassandra ve Kubernetes hakkında daha fazla bilgi edinmek için lütfen //www.datastax.com/dev/kubernetes adresini ziyaret edin. Cassandra'yı bulutta çalıştırma hakkında daha fazla bilgi için DataStax Astra'ya göz atın. 

Patrick McFadin, DataStax'ta geliştirici ilişkilerinden sorumlu Başkan Yardımcısıdır ve kendini Apache Cassandra kullanıcılarını başarılı kılmaya adamış bir ekibi yönetmektedir. Ayrıca, Apache Cassandra'da baş müjdeci ve DataStax danışmanı olarak çalıştı ve burada üretimdeki en büyük ve heyecan verici dağıtımlardan bazılarının oluşturulmasına yardımcı oldu. DataStax'tan önce, Hobsons'ta baş mimar ve 15 yılı aşkın süredir Oracle DBA / geliştiriciydi.

-

Yeni Teknoloji Forumu, ortaya çıkan kurumsal teknolojiyi benzeri görülmemiş bir derinlik ve genişlikte keşfetmek ve tartışmak için bir mekan sağlar. Seçim özneldir, önemli olduğuna inandığımız ve okuyucuların en çok ilgisini çeken teknolojileri seçmemize dayanır. yayın için pazarlama materyallerini kabul etmez ve katkıda bulunan tüm içeriği düzenleme hakkını saklı tutar. Tüm sorularınızı [email protected] adresine gönderin.