Programovanie

Ako spolu bežať Cassandru a Kubernetes

Kontajnery sú čoraz populárnejšie pre vývojárov, ktorí chcú nasadiť aplikácie v cloude. Na správu týchto nových aplikácií sa Kubernetes stal de facto štandardom orchestrácie kontajnerov. Kubernetes umožňuje vývojárom vytvárať distribuované aplikácie, ktoré sa automaticky elasticky zväčšujú v závislosti od dopytu.

Spoločnosť Kubernetes bola vyvinutá na ľahké nasadenie, škálovanie a správu pracovných záťaží bez štátnej príslušnosti vo výrobe. Pokiaľ ide o stavové dáta z cloudu, bola tu potreba rovnakého ľahkého nasadenia a rozsahu.

V distribuovaných databázach je Cassandra príťažlivá pre vývojárov, ktorí vedia, že budú musieť rozšíriť svoje údaje - poskytuje prístup k databáze a správe údajov, ktorý je odolný voči chybám, a ktorý môže bežať rovnakým spôsobom na viacerých miestach a v cloudových službách. Pretože všetky uzly v Cassandre sú rovnaké a každý uzol je schopný spracovať požiadavky na čítanie a zápis, v modeli Cassandra neexistuje jediný bod zlyhania. Dáta sa automaticky replikujú medzi zónami zlyhania, aby sa zabránilo strate jednej inštancie ovplyvňujúcej aplikáciu.

Pripojenie Cassandry k Kubernetesovi

Logickým ďalším krokom je spoločné použitie Cassandry a Kubernetesa. Koniec koncov, spustenie distribuovanej databázy spolu s prostredím distribuovanej aplikácie uľahčuje, aby dáta a operácie aplikácií prebiehali blízko seba. Nielenže sa tým zabráni latencii, ale aj to môže pomôcť zlepšiť výkon vo veľkom meradle.

Dosiahnuť to však znamená pochopiť, ktorý systém je zodpovedný. Cassandra už má taký druh odolnosti voči chybám a umiestnenia uzlov, aký dokáže poskytnúť Kubernetes, takže je dôležité vedieť, ktorý systém je zodpovedný za prijímanie rozhodnutí. To sa dosiahne použitím operátora Kubernetes.

Prevádzkovatelia automatizujú proces nasadenia a správy zložitejších aplikácií, ktoré vyžadujú informácie špecifické pre doménu a potrebujú interakciu s externými systémami. Kým neboli vyvinuté operátory, stavové aplikačné komponenty, ako napríklad inštancie databázy, viedli k ďalším zodpovednostiam vývojových tímov, pretože museli vykonať manuálnu prácu, aby svoje inštancie pripravili a spustili stavovým spôsobom.

Existuje niekoľko operátorov pre Cassandru, ktoré vyvinula komunita Cassandra. V tomto príklade použijeme operátor cass, ktorý zostavil a otvoril zdroj údajov DataStax. Podporuje open-source Kubernetes, Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) a Pivotal Container Service (PKS), takže môžete používať službu Kubernetes, ktorá najlepšie vyhovuje vášmu prostrediu.

Inštalácia operátora Cass do vlastného klastra Kubernetes je jednoduchý proces, ak máte základné znalosti o fungovaní klastra Kubernetes. Po overení klastra Kubernetes pomocou nástroja kubectl, nástroja príkazového riadku klastra Kubernetes a cloudovej inštancie Kubernetes (či už je to Kubernetes s otvoreným zdrojom, GKE, EKS alebo PKS) pripojený k miestnemu počítaču, môžete začať používať konfigurácia súborov YAML operátora do vášho klastra.

Nastavujete definície operátora kazety

Ďalšou etapou je použitie definícií pre manifest operátor kazety, triedu úložiska a dátové centrum na klaster Kubernetes.

Krátka poznámka k definícii dátového centra. Toto je založené na definíciách použitých v Cassandre, a nie na odkaze na fyzické dátové centrum.

Hierarchia je nasledovná:

  • Uzol označuje počítačový systém, na ktorom je spustená inštancia Cassandra. Uzol môže byť fyzický hostiteľ, inštancia stroja v cloude, alebo dokonca kontajner Docker.
  • Regál označuje skupinu uzlov Cassandra blízko seba. Rack môže byť fyzický rack obsahujúci uzly pripojené k spoločnému sieťovému prepínaču. V cloudových nasadeniach sa však rack často odvoláva na kolekciu inštancií počítačov, ktoré bežia v rovnakej zóne dostupnosti.
  • Dátové centrum označuje skupinu logických stojanov, ktoré sa obvykle nachádzajú v tej istej budove a sú prepojené spoľahlivou sieťou. V cloudových nasadeniach sa dátové centrá všeobecne mapujú do cloudovej oblasti.
  • Klaster označuje skupinu dátových centier, ktoré podporujú rovnakú aplikáciu. Klastre Cassandra môžu bežať v jednom cloudovom prostredí alebo vo fyzickom dátovom centre alebo môžu byť distribuované na viacerých miestach, aby sa zvýšila odolnosť a znížila latencia.

Teraz sme potvrdili naše konvencie pomenovania, je čas pripraviť definície. Náš príklad používa GKE, ale proces je podobný pre ostatné motory Kubernetes. Existujú tri kroky.

Krok 1

Najskôr musíme spustiť príkaz kubectl, ktorý odkazuje na konfiguračný súbor YAML. Toto použije definície manifestu operátora kazety na pripojený klaster Kubernetes. Manifesty sú popisy objektov API, ktoré popisujú požadovaný stav objektu, v tomto prípade vášho operátora Cassandra. Kompletnú sadu manifestov špecifických pre verziu nájdete na tejto stránke GitHub.

Tu je príklad príkazu kubectl pre cloud GKE so systémom Kubernetes 1.16:

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

Krok 2

Nasledujúci príkaz kubectl použije konfiguráciu YAML, ktorá definuje nastavenia úložiska, ktoré sa majú použiť pre uzly Cassandra v klastri. Kubernetes používa prostriedok StorageClass ako abstrakčnú vrstvu medzi podmi, ktoré potrebujú trvalé úložisko, a prostriedkami fyzického úložiska, ktoré môže poskytnúť konkrétny klaster Kubernetes. V tomto príklade sa ako typ úložiska používa SSD. Ďalšie možnosti nájdete na tejto stránke GitHub. Tu je priamy odkaz na YAML použitý v konfigurácii úložiska:

apiVersion: storage.k8s.io/v1

druh: StorageClass

metadáta:

názov: server-úložisko

poskytovateľ: kubernetes.io/gce-pd

parametre:

typ: pd-ssd

typ replikácie: žiadny

volumeBindingMode: WaitForFirstConsumer

reclaimPolicy: Odstrániť

Krok 3

Nakoniec znova použijeme kubectl a použijeme YAML, ktorý definuje naše Cassandra Datacenter.

# Veľkosť je určená na prácu na uzloch pracovníkov s výkonom 3 k8s s 1 jadrom / 4 GB RAM

# Dokumenty pre každý parameter nájdete v susednom príklade-cassdc-full.yaml

apiVersion: cassandra.datastax.com/v1beta1

druh: CassandraDatacenter

metadáta:

meno: dc1

spec:

clusterName: cluster1

typ servera: cassandra

serverVersion: "3.11.6"

managementApiAuth:

nezabezpečené: {}

veľkosť: 3

storageConfig:

cassandraDataVolumeClaimSpec:

storageClassName: server-storage

režimy prístupu:

- ReadWriteOnce

zdroje:

žiadosti:

úložisko: 5Gi

konfigurácia:

cassandra-yaml:

autentifikátor: org.apache.cassandra.auth.PasswordAuthenticator

autorizátor: org.apache.cassandra.auth.CassandraAuthorizer

role_manager: org.apache.cassandra.auth.CassandraRoleManager

možnosti jvm:

initial_heap_size: "800M"

max_heap_size: "800 M"

Tento príklad YAML je pre otvorený obraz Apache Cassandra 3.11.6 s tromi uzlami na jednom stojane v klastri Kubernetes. Tu je priamy odkaz. Na tejto stránke GitHub sa nachádza kompletná sada konfigurácií dátových centier špecifických pre databázu.

V tomto okamihu sa budete môcť pozrieť na zdroje, ktoré ste vytvorili. Budú viditeľné vo vašej cloudovej konzole. Napríklad v Google Cloud Console môžete kliknúť na kartu Klastre, pozrieť si, čo je spustené, a pozrieť sa na pracovné zaťaženie. Jedná sa o nasaditeľné výpočtové jednotky, ktoré je možné vytvárať a spravovať v klastri Kubernetes.

Na pripojenie k samotnej nasadenej databáze Cassandra môžete použiť cqlsh, shell príkazového riadku a dotazovať sa na Cassandru pomocou CQL z vášho klastra Kubernetes. Po overení budete môcť odosielať príkazy DDL na vytváranie alebo zmeny tabuliek atď. A manipulovať s údajmi pomocou pokynov DML, ako je napríklad vkladanie a aktualizácia v CQL.

Čo bude ďalej pre Cassandru a Kubernetesa?

Aj keď je pre Apache Cassandra k dispozícii niekoľko operátorov, bol potrebný spoločný operátor. Spoločnosti zapojené do komunity Cassandra, ako Sky, Orange, DataStax a Instaclustr, spolupracujú na vytvorení spoločného operátora pre Apache Cassandra na Kubernetes. Toto úsilie o spoluprácu ide popri existujúcich operátoroch typu open-source a cieľom je poskytnúť podnikom a používateľom konzistentné škálovanie pre výpočty a dáta.

Postupom času bude musieť byť prechod na natívne cloudové aplikácie podporený aj natívnymi cloudovými dátami. To sa bude spoliehať na väčšiu automatizáciu poháňanú nástrojmi ako Kubernetes. Spoločným používaním Kubernetes a Cassandra môžete svoj prístup k údajom cloudovo natívne.

Ak sa chcete dozvedieť viac informácií o Cassandre a Kubernetesovi, navštívte stránku //www.datastax.com/dev/kubernetes. Ďalšie informácie o chode Cassandry v cloude nájdete v DataStax Astra.

Patrick McFadin je viceprezident pre vzťahy s vývojármi v spoločnosti DataStax, kde vedie tím zameraný na úspešnú prácu používateľov servera Apache Cassandra. Pracoval tiež ako hlavný evanjelista pre Apache Cassandra a konzultant pre DataStax, kde pomáhal budovať niektoré z najväčších a vzrušujúcich nasadení vo výrobe. Predtím, než pracoval v DataStaxe, bol viac ako 15 rokov hlavným architektom v Hobsonse a vývojárom Oracle DBA / vývojárom.

Nové technologické fórum poskytuje miesto na preskúmanie a diskusiu o vznikajúcich podnikových technológiách v nebývalej hĺbke a šírke. Výber je subjektívny, založený na našom výbere technológií, ktoré považujeme za dôležité a pre čitateľov najväčší záujem. neprijíma marketingové záruky na zverejnenie a vyhradzuje si právo upravovať všetok prispievaný obsah. Všetky otázky posielajte na adresu [email protected].

$config[zx-auto] not found$config[zx-overlay] not found