U haajiridda Cassandra ee Kubernetes: sifooyinka iyo xalalka

U haajiridda Cassandra ee Kubernetes: sifooyinka iyo xalalka

Waxaan si joogto ah ula kulannaa xogta Apache Cassandra iyo baahida loo qabo in lagu shaqeeyo gudaha kaabayaasha Kubernetes-ku-saleysan. Maaddadan, waxaanu ku wadaagi doonaa aragtidayada tillaabooyinka lagama maarmaanka ah, shuruudaha iyo xalalka jira (oo ay ku jirto dulmarka hawlwadeenada) ee loogu haajiro Cassandra ilaa K8s.

"Qof kasta oo dumar xukumi kara wuxuu xukumi karaa gobolka"

Waa kuma Cassandra? Waa nidaam kaydinta qaybsan oo loogu talagalay in lagu maareeyo xog badan iyada oo la hubinayo helitaanka sare iyada oo aan hal dhibic oo guuldarro ah lahayn. Mashruucu si dhib leh ayuu ugu baahan yahay hordhac dheer, markaa waxaan ku siin doonaa oo kaliya sifooyinka ugu muhiimsan ee Cassandra kuwaas oo ku habboonaan doona macnaha maqaal gaar ah:

  • Cassandra waxay ku qoran tahay Java.
  • Cassandra topology waxaa ka mid ah heerar kala duwan:
    • Node - mid la geeyay tusaale ahaan Cassandra;
    • Rack waa koox ka mid ah dhacdooyinka Cassandra, oo ay ku midaysan yihiin qaar ka mid ah sifooyinka, oo ku yaal isla xarunta xogta;
    • Datacenter - ururinta dhammaan kooxaha dhacdooyinka Cassandra oo ku yaal hal xarun xog;
    • Kooxdu waa ururinta dhammaan xarumaha xogta.
  • Cassandra waxay isticmaashaa ciwaanka IP si ay u aqoonsato noodhka.
  • Si loo dedejiyo hawlaha qorista iyo akhrinta, Cassandra waxa ay kaydisaa qaar ka mid ah xogta RAM.

Hadda - u dhaqaaqida dhabta ah ee suurtagalka ah ee Kubernetes.

Liiska hubinta wareejinta

Isagoo ka hadlaya socdaalka Cassandra ee Kubernetes, waxaan rajeyneynaa in tallaabadaas ay noqon doonto mid ku habboon in la maareeyo. Maxaa loo baahan doonaa tan, maxaa ka caawin doona tan?

1. Kaydinta xogta

Sida horeyba loo caddeeyey, Cassanda waxay ku kaydisaa qayb ka mid ah xogta RAM - in Miisaan leh. Laakiin waxaa jira qayb kale oo ka mid ah xogta lagu keydiyo diskka - qaabka SSTable. Qayb ayaa lagu daray xogtan Ballanqaad Log - diiwaanka dhammaan macaamilada, kuwaas oo sidoo kale lagu kaydiyaa disk.

U haajiridda Cassandra ee Kubernetes: sifooyinka iyo xalalka
Ku qor jaantuska wax kala iibsiga gudaha Cassandra

Kubernetes gudaheeda, waxaan u isticmaali karnaa PersistentVolume si aan u kaydiyo xogta. Thanks to habab la xaqiijiyay, la shaqaynta xogta Kubernetes ayaa noqonaysa mid sahlan sannad kasta.

U haajiridda Cassandra ee Kubernetes: sifooyinka iyo xalalka
Waxaan u qoondayn doonaa qayb kasta Cassandra Volume Joogta ah oo u gaar ah

Waxaa muhiim ah in la ogaado in Cassandra lafteedu ay ka tarjumayso ku-noqoshada xogta, iyada oo bixinaysa habab ku dhisan tan. Sidaa darteed, haddii aad ka dhisayso kooxda Cassandra tiro badan oo nood ah, markaa looma baahna in la isticmaalo hababka la qaybiyey sida Ceph ama GlusterFS kaydinta xogta. Xaaladdan oo kale, waxay noqon lahayd mid macquul ah in lagu kaydiyo xogta diskka martida loo yahay iyadoo la adeegsanayo saxanadaha deegaanka ee joogtada ah ama fuulid hostPath.

Su'aal kale ayaa ah haddii aad rabto inaad abuurto jawi u gaar ah horumariyeyaasha laan kasta oo muuqaal ah. Xaaladdan oo kale, habka saxda ah wuxuu noqon lahaa in kor loo qaado hal noode Cassandra oo lagu kaydiyo xogta kaydinta qaybsan, i.e. Ceph iyo GlusterFS ee la sheegay ayaa noqon doona ikhtiyaarkaaga. Markaa horumariyuhu wuxuu hubin doonaa inuusan lumin doonin xogta tijaabada xitaa haddii mid ka mid ah qanjidhada Kuberntes uu lumo.

2. Korjoogteynta

Doorashada ku dhawaad ​​​​aan la tartamin ee hirgelinta kormeerka Kubernetes waa Prometheus (Waxaan si faahfaahsan uga hadalnay arrintan warbixin la xiriirta). Sidee ayuu Cassandra ula sameynayaa mitirka dhoofiyeyaasha ee Prometheus? Iyo, maxaa ka sii muhiimsan, oo leh dashboards ku habboon Grafana?

U haajiridda Cassandra ee Kubernetes: sifooyinka iyo xalalka
Tusaale ahaan muuqaalka garaafyada ee Grafana ee Cassandra

Waxaa jira laba dhoofiye oo keliya: jmx_ dhoofiye ΠΈ cassandra_dhoofiyaha.

Waxaan u dooranay midda koowaad nafteena sababtoo ah:

  1. Dhoofinta JMX wuu korayaa oo wuu kobcayaa, halka Cassandra Dhoofinta uu awoodi waayay inuu helo taageero bulsho oo ku filan. Dhoofinta Cassandra wali ma taageero badi noocyada Cassandra.
  2. Waxaad u maamuli kartaa sida javaagent adigoo ku daraya calan -javaagent:<plugin-dir-name>/cassandra-exporter.jar=--listen=:9180.
  3. Mid baa u taal isaga dashboad ku filan, kaas oo aan la socon karin Cassandra Exporter.

3. Doorashada Kubernetes primitives

Marka loo eego qaab dhismeedka kore ee kooxda Cassandra, aan isku dayno inaan u turjuno wax kasta oo halkaas lagu sifeeyay ereyada Kubernetes:

  • Cassandra Node β†’ Pod
  • Cassandra Rack β†’ StatefulSet
  • Cassandra Datacenter β†’ barkad ka timid StatefulSets
  • Kooxda Cassandra β†’ ???

Waxa soo baxday in qayb kale oo dheeraad ah ay maqan tahay si ay hal mar u maamusho kooxda Cassandra. Laakiin hadday wax jirin, waan abuuri karnaa! Kubernetes waxay leedahay hab ay ku qeexdo kheyraadkeeda ujeedadan - Qeexitaannada Kheyraadka Gaarka ah.

U haajiridda Cassandra ee Kubernetes: sifooyinka iyo xalalka
Ku dhawaaqida ilo dheeri ah oo loogu talagalay diiwaannada iyo digniinaha

Laakiin Kheyraadka Gaarka ah laftiisa macnaheedu maaha: ka dib oo dhan, waxay u baahan tahay xakameeyaha. Waxaa laga yaabaa inaad u baahato inaad caawimo raadsato Hawlwadeenka Kubernetes...

4. Aqoonsiga kubadaha

Baaragaraafka sare, waxaan ku heshiinay in hal noode Cassandra uu la mid yahay hal boodh oo Kubernetes ah. Laakiin ciwaanka IP-ga ee boodhadhku way kala duwanaan doonaan wakhti kasta. Aqoonsiga noodhka Cassandra wuxuu ku salaysan yahay ciwaanka IP-ga...Waxay soo baxday in ka dib markii mid kasta oo ka mid ah ka saarista boodhka, kooxda Cassandra ay ku dari doonto nood cusub.

Waxaa jira waddo looga baxo, oo aan ahayn mid keliya:

  1. Waxaan ku hayn karnaa diiwaanada aqoonsiga martida loo yahay (UUID-yada si gaar ah u tilmaamaya dhacdooyinka Cassandra) ama ciwaanada IP-ga oo aan ku kaydinno dhammaan dhismayaasha/miisaska qaarkood. Habkani waxa uu leeyahay laba khasaare oo waaweyn:
    • Khatarta ah in xaalad jinsiyadeed ay dhacdo haddii laba nood ay hal mar dhacaan. Kacitaanka ka dib, qanjidhada Cassandra waxay isku mar ka codsan doonaan ciwaanka IP-ga miiska waxayna u tartami doonaan isla kheyraadka.
    • Haddii qanjirada Cassandra ay lumiso xogteeda, ma awoodno inaan aqoonsanno.
  2. Xalka labaad wuxuu u eg yahay jabsi yar, laakiin si kastaba ha ahaatee: waxaan u abuuri karnaa Adeeg leh ClusterIP mid kasta oo Cassandra ah. Dhibaatooyinka hirgelintan:
    • Haddii ay jiraan nodes badan oo ku jira kutlada Cassandra, waa inaan abuurnaa adeegyo badan.
    • Habka ClusterIP waxaa lagu hirgeliyaa iptables. Tani waxay noqon kartaa dhibaato haddii kooxda Cassandra ay leedahay noodh badan (1000...ama xitaa 100?) Inkastoo dheellitirnaanta ku salaysan IPVS xallin kara dhibaatadan.
  3. Xalka saddexaad waa in la isticmaalo shabakad qanjidhada ah oo loogu talagalay qanjidhada Cassandra halkii laga isticmaali lahaa shabakad u go'an oo pods iyadoo awood u siinaya goobta hostNetwork: true. Habkani wuxuu soo rogayaa xaddidaadyo gaar ah:
    • Si loo beddelo cutubyada. Waa lagama maarmaan in noodhka cusubi lahaado isla cinwaanka IP-ga ee hore (daruuraha sida AWS, GCP tani waa wax aan macquul ahayn in la sameeyo);
    • Anaga oo adeegsanayna shabkada qanjidhada kooxeed, waxaan bilaabeynaa inaan u tartano ilaha shabakada. Sidaa darteed, ku dhejinta wax ka badan hal boodh oo leh Cassandra hal nood kooxeed waxay noqon doontaa dhibaato.

5. Backups

Waxaan rabnaa in aan keydinno nuqul buuxa oo ah hal xog oo Cassandra node ah oo ku saabsan jadwalka. Kubernetes waxay bixisaa sifo ku habboon iyadoo la adeegsanayo CronJob, laakiin halkan Cassandra lafteedu waxay ku hadlaysaa giraangirahayaga.

Aan ku xasuusiyo in Cassandra uu kaydiyo qaar ka mid ah xogta xusuusta. Si aad u samayso kayd buuxa, waxaad u baahan tahay xogta xusuusta (Memtablesu guurto diskka (SSTables). Halkaa marka ay marayso, noodhka Cassandra waxa uu joojiyaa aqbalaadda isku xidhka, isaga oo gebi ahaanba xidhaya kooxda.

Taas ka dib, kaydinta waa la saarayaa (sheygaiyo qorshaha waa la badbaadiyay (meel muhiim ah). Kadibna waxay soo baxday in kaliya nuqulku uusan waxba na siin: waxaan u baahanahay inaan badbaadino aqoonsiga xogta kaas oo ka masuulka ah noodhka Cassandra - kuwani waa calaamado gaar ah.

U haajiridda Cassandra ee Kubernetes: sifooyinka iyo xalalka
Qaybinta calaamadaha si loo aqoonsado waxa xogta Cassandra nodes ay masuul ka tahay

Tusaalaha qoraalka ah ee ka qaadista Cassandra kaabta Google ee Kubernetes waxaa laga heli karaa at xidhiidhkan. Qodobka kaliya ee uusan qoraalku xisaabta ku darin waa dib u dejinta xogta qanjirada ka hor inta aan sawirka la qaadin. Taasi waa, kaydinta looma samaynayo xaaladda hadda jirta, laakiin gobol wax yar ka hor. Laakiin tani waxay ka caawisaa in aan laga saarin noodhka shaqada, taas oo u muuqata mid macquul ah.

set -eu

if [[ -z "$1" ]]; then
  info "Please provide a keyspace"
  exit 1
fi

KEYSPACE="$1"

result=$(nodetool snapshot "${KEYSPACE}")

if [[ $? -ne 0 ]]; then
  echo "Error while making snapshot"
  exit 1
fi

timestamp=$(echo "$result" | awk '/Snapshot directory: / { print $3 }')

mkdir -p /tmp/backup

for path in $(find "/var/lib/cassandra/data/${KEYSPACE}" -name $timestamp); do
  table=$(echo "${path}" | awk -F "[/-]" '{print $7}')
  mkdir /tmp/backup/$table
  mv $path /tmp/backup/$table
done


tar -zcf /tmp/backup.tar.gz -C /tmp/backup .

nodetool clearsnapshot "${KEYSPACE}"

Tusaalaha qoraalka bash-ka ee loogu talagalay qaadashada kaydinta hal noode Cassandra

Xalka diyaarka ah ee Cassandra ee Kubernetes

Maxaa hadda loo isticmaalaa in lagu geeyo Cassandra ee Kubernetes, kee baa kuwan ku habboon shuruudaha la bixiyay?

1. Xalka ku salaysan jaantusyada StatefulSet ama Helm

Isticmaalka hawlaha aasaasiga ah ee StatefulSets si loo maamulo kooxda Cassandra waa ikhtiyaar wanaagsan. Adigoo isticmaalaya jaantuska Helm iyo Go, waxaad siin kartaa isticmaalaha is-dhexgal dabacsan si loo geeyo Cassandra.

Tani waxay badanaa si fiican u shaqeysaa...ilaa wax lama filaan ah ay dhacaan, sida cilad-xumada. Qalabka caadiga ah ee Kubernetes si fudud kuma xisaabtami karo dhammaan sifooyinka kor lagu sharaxay. Intaa waxaa dheer, habkani aad ayuu u xaddidan yahay inta lagu kordhin karo isticmaalka kakan: beddelka noodhka, kaydinta, soo kabashada, kormeerka, iwm.

Wakiilada:

Labada jaantus si siman ayay u wanaagsan yihiin, laakiin waxay ku xiran yihiin dhibaatooyinka kor lagu soo sheegay.

2. Xalka ku salaysan Kubernetes Operator

Ikhtiyaarada noocan oo kale ah ayaa aad u xiiso badan sababtoo ah waxay bixiyaan fursado badan oo lagu maareeyo kooxda. Qaabaynta hawl wadeenka Cassandra, sida xog kasta oo kale, hannaankii wanaagsanaa wuxuu u eg yahay Sidecar <-> Kontorool <-> CRD:

U haajiridda Cassandra ee Kubernetes: sifooyinka iyo xalalka
Nidaamka maaraynta node ee hawl wadeen Cassandra oo si wanaagsan loo nashqadeeyay

Aynu eegno hawlwadeenada jira.

1. Cassandra-operator ka instaclustr

  • GitHub
  • Diyaargarow: Alpha
  • Shatiga: Apache 2.0
  • Laga hirgaliyay: Java

Tani runtii waa mashruuc aad u rajo badan oo si firfircoon u horumarinaya shirkad bixisa hawlgelinta Cassandra la maamulay. Sida kor lagu sharaxay, waxay isticmaashaa weel dhinac-dhinac ah oo aqbala amarada HTTP. Waxaa lagu qoray Java, mararka qaarkood waxaa ka maqan shaqeynta horumarsan ee maktabadda macmiilka-gow. Sidoo kale, hawlwadeenku kuma taageerayo Racks kala duwan hal Datacenter.

Laakin hawlwadeenku waxa uu leeyahay faa'iidooyin ay ka mid yihiin taageerada la socodka, maaraynta kooxda heerka sare ah iyada oo la isticmaalayo CRD, iyo xitaa dukumentiyada samaynta koobab.

2. Navigator ka Jetstack

  • GitHub
  • Diyaargarow: Alpha
  • Shatiga: Apache 2.0
  • Laga hirgaliyay: Golang

Warbixin loogu talagalay in la geeyo DB-as-a-Service. Hadda waxa ay taageertaa laba xog-ururin: Elasticsearch iyo Cassandra. Waxay leedahay xalal xiiso leh sida kontoroolka gelitaanka xogta ee RBAC (tani waxay leedahay navigator-apiserver u gaar ah). Mashruuc xiiso leh oo mudan in si dhow loo eego, laakiin ballan-qaadkii ugu dambeeyay ayaa la sameeyay sannad iyo badh ka hor, taas oo si cad u yaraynaysa awooddeeda.

3. Cassandra-operator by vgkowski

  • GitHub
  • Diyaargarow: Alpha
  • Shatiga: Apache 2.0
  • Laga hirgaliyay: Golang

Uma ay tixgalinin "si dhab ah", maadaama ballan-qaadkii ugu dambeeyay ee kaydka uu ahaa wax ka badan hal sano ka hor. Horumarinta hawl wadeenada waa laga tagay: nooca ugu dambeeyay ee Kubernetes ee la sheegay sida la taageeray waa 1.9.

4. Cassandra-operator ee Rook

  • GitHub
  • Diyaargarow: Alpha
  • Shatiga: Apache 2.0
  • Laga hirgaliyay: Golang

Hawlwadeen horumarkiisu aanu u socon sida ugu dhakhsaha badan ee aanu doonayno. Waxay leedahay qaab dhismeedka CRD oo si wanaagsan looga fikiray oo loogu talagalay maaraynta kooxda, waxay xallisaa dhibaatada aqoonsiga noodhka iyadoo la adeegsanayo Adeegga ClusterIP (isku mid "hack")... laakiin taasi waa dhammaan hadda. Hadda ma jiraan wax kormeer ah ama kayd ah oo ka baxay sanduuqa (sida, waxaan nahay la socodka anagaa qaadanay). Qodob xiiso leh ayaa ah inaad sidoo kale geyn karto ScyllaDB adoo isticmaalaya hawlwadeenkan.

FG: Waxa aanu u isticmaalnay hawlwadeenkan wax ka bedel yar oo ka mid ah mashaariicdayada. Wax dhibaato ah lagama dareemin shaqada hawl-wadeenka intii lagu jiray dhammaan muddada hawlgalka (~ 4 bilood ee hawlgalka).

5. CassKop ka Orange

  • GitHub
  • Diyaargarow: Alpha
  • Shatiga: Apache 2.0
  • Laga hirgaliyay: Golang

Hawl-wadeenka ugu da'da yar liiska: ballanqaadkii ugu horreeyay waxaa la sameeyay Maajo 23, 2019. Horeba hadda waxay ku leedahay arsenal tiro badan oo ka mid ah liiskayaga, faahfaahin dheeraad ah oo laga heli karo kaydka mashruuca. Hawlwadeenku wuxuu ku salaysan yahay hawlwadeenka-sdk ee caanka ah. Waxay taageertaa la socodka ka baxsan sanduuqa. Farqiga ugu weyn ee ka dhexeeya hawlwadeennada kale waa isticmaalka CassKop plugin, oo lagu hirgeliyay Python waxaana loo adeegsaday xidhiidhka ka dhexeeya qanjidhada Cassandra.

natiijooyinka

Tirada hababka iyo fursadaha suurtagalka ah ee loogu wareejinayo Cassandra ilaa Kubernetes lafteeda ayaa u hadasha: mawduucu waa baahi loo qabo.

Marxaladdan, waxaad isku dayi kartaa mid kasta oo ka mid ah kuwan kor ku xusan khatartaada iyo khatartaada: midkoodna horumariyayaashu ma dammaanad qaadaan 100% hawlgalka xalkooda jawi wax soo saar. Laakiin mar hore, alaabooyin badan ayaa u muuqda kuwo rajo leh inay isku dayaan inay ku isticmaalaan kuraasta horumarinta.

Waxaan filayaa in mustaqbalka naagtan markabka saaran ay ku iman doonto anfaca!

PS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment