Ho falla ha Cassandra ho ea Kubernetes: likarolo le tharollo

Ho falla ha Cassandra ho ea Kubernetes: likarolo le tharollo

Re lula re kopana le database ea Apache Cassandra le tlhoko ea ho e sebelisa ka har'a meaho e thehiloeng ho Kubernetes. Sehloohong sena, re tla arolelana pono ea rona ea mehato e hlokahalang, litekanyetso le litharollo tse teng (ho kenyeletsoa kakaretso ea basebetsi) bakeng sa ho fallela Cassandra ho ea K8s.

“Mang kapa mang ea ka busang mosali a ka boela a busa naha”

Cassandra ke mang? Ke mokhoa oa ho boloka o abuoang o etselitsoeng ho laola palo e kholo ea data ha o ntse o netefatsa ho fumaneha ho phahameng ntle le ntlha e le 'ngoe ea ho hlōleha. Morero ha o hloke kenyelletso e telele, kahoo ke tla fana ka likarolo tsa mantlha tsa Cassandra tse tla ba tsa bohlokoa molemong oa sengoloa se itseng:

  • Cassandra e ngotsoe ka Java.
  • Cassandra topology e kenyelletsa maemo a 'maloa:
    • Node - mohlala o le mong o kentsoeng Cassandra;
    • Rack ke sehlopha sa liketsahalo tsa Cassandra, tse kopantsoeng ke tšobotsi e itseng, e leng setsing se le seng sa data;
    • Datacenter - pokello ea lihlopha tsohle tsa maemo a Cassandra a fumanehang setsing se le seng sa data;
    • Cluster ke pokello ea litsi tsohle tsa data.
  • Cassandra e sebelisa aterese ea IP ho tsebahatsa node.
  • Ho potlakisa ts'ebetso ea ho ngola le ho bala, Cassandra e boloka tse ling tsa data ho RAM.

Joale - ho ea molemong oa ho fallela Kubernetes.

Lenane la tlhahlobo bakeng sa phetiso

Ha re bua ka ho falla ha Cassandra ho ea Kubernetes, re tšepa hore ka ho falla ho tla ba bonolo haholoanyane ho laola. Ho tla hlokahala eng bakeng sa see, ke eng e tla thusa ka see?

1. Polokelo ea data

Joalokaha ho se ho hlalositsoe, Cassanda e boloka karolo ea data ho RAM - ho Memtable. Empa ho na le karolo e 'ngoe ea data e bolokiloeng ho disk - ka mokhoa SSTable. Ho kenyelelitsoe mokhatlo ho data ena Lenane la boitlamo - lirekoto tsa litšebelisano tsohle, tseo le tsona li bolokiloeng ho disk.

Ho falla ha Cassandra ho ea Kubernetes: likarolo le tharollo
Ngola setšoantšo sa transaction ho Cassandra

Ho Kubernetes, re ka sebelisa PersistentVolume ho boloka data. Ka lebaka la mekhoa e netefalitsoeng, ho sebetsa le data ho Kubernetes ho ntse ho ba bonolo selemo se seng le se seng.

Ho falla ha Cassandra ho ea Kubernetes: likarolo le tharollo
Re tla abela PersistentVolume ea rona ho pod e 'ngoe le e 'ngoe ea Cassandra

Ho bohlokoa ho hlokomela hore Cassandra ka boeona e fana ka maikutlo a phetisetso ea data, e fanang ka mekhoa e hahelletsoeng bakeng sa sena. Ka hona, haeba u haha ​​​​sehlopha sa Cassandra ho tloha palo e kholo ea li-node, joale ha ho hlokahale hore u sebelise mekhoa e ajoang joaloka Ceph kapa GlusterFS bakeng sa polokelo ea data. Tabeng ena, ho tla ba ho utloahalang ho boloka data ho disk ea moamoheli u sebelisa li-disk tse tsitsitseng tsa sebakeng seo kapa ho hloella hostPath.

Potso e 'ngoe ke hore na u batla ho theha tikoloho e arohaneng bakeng sa bahlahisi bakeng sa lekala ka leng la likarolo. Tabeng ena, mokhoa o nepahetseng e ka ba ho phahamisa node e le 'ngoe ea Cassandra le ho boloka boitsebiso sebakeng sa polokelo e abuoang, ke hore. Ceph le GlusterFS tse boletsoeng e tla ba likhetho tsa hau. Joale mohlahlami o tla ba le bonnete ba hore a ke ke a lahleheloa ke data ea liteko le haeba e 'ngoe ea li-cluster node tsa Kuberntes e lahlehile.

2. Tlhokomelo

Khetho e batlang e sa hanyetsoe ea ho kenya ts'ebetsong ho beha leihlo ho Kubernetes ke Prometheus (re buile ka sena ka botlalo ho tlaleho e amanang). Cassandra e sebetsa joang le barekisi ba metrics bakeng sa Prometheus? Mme, ke eng se bohlokwa le ho feta, ka di-dashboard tse tsamaellanang tsa Grafana?

Ho falla ha Cassandra ho ea Kubernetes: likarolo le tharollo
Mohlala oa ponahalo ea li-graph Grafana bakeng sa Cassandra

Ho na le barekisi ba babeli feela: jmx_exporter и cassandra_exporter.

Re ikhethetse ea pele hobane:

  1. JMX Exporter e ntse e hola ebile e ntse e tsoela pele, athe Cassandra Exporter ha e so khone ho fumana tšehetso e lekaneng ea sechaba. Cassandra Exporter e ntse e sa tšehetse mefuta e mengata ea Cassandra.
  2. U ka e tsamaisa joalo ka javaagent ka ho eketsa folakha -javaagent:<plugin-dir-name>/cassandra-exporter.jar=--listen=:9180.
  3. Ho na le e mong bakeng sa hae dashboad e lekaneng, e sa lumellaneng le Cassandra Exporter.

3. Ho khetha li-primitives tsa Kubernetes

Ho latela sebopeho se kaholimo sa sehlopha sa Cassandra, ha re lekeng ho fetolela ntho e 'ngoe le e' ngoe e hlalositsoeng moo ka mantsoe a Kubernetes:

  • Node ea Cassandra → Pod
  • Cassandra Rack → StatefulSet
  • Cassandra Datacenter → letamo ho tsoa StatefulSets
  • Cassandra Cluster → ???

Ho ile ha fumaneha hore mokhatlo o mong o haelloa ke ho laola sehlopha sohle sa Cassandra hang-hang. Empa haeba ntho e le sieo, re ka e theha! Kubernetes e na le mokhoa oa ho hlalosa lisebelisoa tsa eona molemong ona - Litlhaloso tsa Mohloli oa Tloaelo.

Ho falla ha Cassandra ho ea Kubernetes: likarolo le tharollo
Ho phatlalatsa lisebelisoa tse eketsehileng bakeng sa li-log le litlhokomeliso

Empa Custom Resource ka boeona ha e bolele letho: ka mor'a tsohle, e hloka molaoli. U ka 'na ua hloka ho batla thuso Kubernetes opareitara...

4. Ho khetholla li-pods

Serapeng se ka holimo, re lumellane hore node e le 'ngoe ea Cassandra e tla lekana le pod e le' ngoe ho Kubernetes. Empa liaterese tsa IP tsa li-pods li tla fapana nako le nako. 'Me ho khetholloa ha node ho Cassandra ho itšetlehile ka aterese ea IP ... Hoa etsahala hore ka mor'a hore ho tlosoe pod e' ngoe le e 'ngoe, sehlopha sa Cassandra se tla eketsa node e ncha.

Ho na le tsela ea ho tsoa, ​​eseng e le 'ngoe feela:

  1. Re ka boloka lirekoto ka li-identifiers tsa moamoheli (li-UUID tse khethollang maemo a Cassandra ka mokhoa o ikhethileng) kapa ka liaterese tsa IP le ho li boloka kaofela meahong/litafoleng tse ling. Mokhoa ona o na le mefokolo e 'meli e meholo:
    • Kotsi ea boemo ba morabe bo hlahang haeba li-node tse peli li oela hang-hang. Kamora ho phahama, li-node tsa Cassandra ka nako e le 'ngoe li tla kopa aterese ea IP ho tsoa tafoleng ebe li qothisana lehlokoa bakeng sa sesebelisoa se tšoanang.
    • Haeba node ea Cassandra e lahlehetsoe ke data, re ke ke ra hlola re khona ho e tseba.
  2. Tharollo ea bobeli e bonahala e le ts'ebetso e nyane, empa leha ho le joalo: re ka theha Tšebeletso ka ClusterIP bakeng sa node e 'ngoe le e' ngoe ea Cassandra. Mathata ka ts'ebetsong ena:
    • Haeba ho na le li-node tse ngata sehlopheng sa Cassandra, re tla tlameha ho theha Litšebeletso tse ngata.
    • Karolo ea ClusterIP e sebelisoa ka li-iptables. Sena se ka fetoha bothata haeba sehlopha sa Cassandra se na le li-node tse ngata (1000 ... kapa 100?). Leha ho le joalo ho leka-lekanya ho thehiloeng ho IPVS e ka rarolla bothata bona.
  3. Tharollo ea boraro ke ho sebelisa marang-rang a li-node bakeng sa li-node tsa Cassandra ho e-na le marang-rang a inehetseng a li-pods ka ho nolofalletsa maemo. hostNetwork: true. Mokhoa ona o beha meeli e itseng:
    • Ho nkela diyuniti sebaka. Hoa hlokahala hore node e ncha e be le aterese ea IP e tšoanang le e fetileng (ka maru a kang AWS, GCP sena se batla se le thata ho se etsa);
    • Re sebelisa marang-rang a li-cluster node, re qala ho hlōlisana bakeng sa lisebelisoa tsa marang-rang. Ka hona, ho beha pod e fetang e le 'ngoe le Cassandra sebakeng se le seng sa sehlopha ho tla ba bothata.

5. Li-backups

Re batla ho boloka mofuta o felletseng oa data e le 'ngoe ea Cassandra node ka kemiso. Kubernetes e fana ka tšobotsi e bonolo ea ho sebelisa CronJob, empa mona Cassandra ka boeena o kenya spoke mabiling a rona.

E re ke u hopotse hore Cassandra e boloka tse ling tsa data mohopolong. Ho etsa backup e felletseng, o hloka data ho tsoa memoring (Memtables) fallela ho disk (SSTables). Ka nako ena, node ea Cassandra e khaotsa ho amohela likhokahano, e koala ka ho feletseng ho tloha sehlopheng.

Ka mor'a moo, backup e tla tlosoa (sekhetho) mme morero oa bolokoa (keyspace). 'Me joale ho hlaha hore bekapo feela ha e re fe letho: re hloka ho boloka li-identifiers tsa data tseo node ea Cassandra e neng e ikarabella ho tsona - tsena ke li-tokens tse khethehileng.

Ho falla ha Cassandra ho ea Kubernetes: likarolo le tharollo
Kabo ea li-tokens ho tseba hore na data ea Cassandra node e ikarabella ho eng

Mohlala oa mongolo oa ho nka bekapo ea Cassandra ho tsoa ho Google ho Kubernetes o ka fumanoa ho khokahano ena. Ntho e le 'ngoe feela eo script e sa e nahaneng ke ho tsosolosa data ho node pele e nka snapshot. Ka mantsoe a mang, "backup" ha e etsoe bakeng sa boemo ba hajoale, empa bakeng sa boemo pejana. Empa sena se thusa ho se tlose node ts'ebetsong, e bonahalang e utloahala haholo.

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}"

Mohlala oa bash script bakeng sa ho nka bekapo ho tsoa node e le 'ngoe ea Cassandra

Litharollo tse ikemiselitseng bakeng sa Cassandra ho Kubernetes

Ke eng e sebelisoang hajoale ho tsamaisa Cassandra ho Kubernetes mme ke efe ho tsee e lumellanang hantle le litlhoko tse fanoeng?

1. Litharollo tse thehiloeng ho StatefulSet kapa Helm lichate

Ho sebelisa mesebetsi ea motheo ea StatefulSets ho tsamaisa sehlopha sa Cassandra ke khetho e ntle. U sebelisa chate ea Helm le litempele tsa Go, u ka fa mosebelisi sebopeho se feto-fetohang bakeng sa ho tsamaisa Cassandra.

Hangata sena se sebetsa hantle ... ho fihlela ntho e sa lebelloang e etsahala, joalo ka ho hloleha ha node. Lisebelisoa tse tloaelehileng tsa Kubernetes ha li khone ho ela hloko likarolo tsohle tse hlalositsoeng ka holimo. Ntle le moo, mokhoa ona o na le moeli oa hore na o ka atolosoa hakae bakeng sa ts'ebeliso e rarahaneng: ho khutlisa node, ho boloka, ho hlaphoheloa, ho beha leihlo, jj.

Baemeli:

Lichate tsena ka bobeli li ntle ka ho lekana, empa li ipapisitse le mathata a hlalositsoeng ka holimo.

2. Tharollo e thehiloeng ho Kubernetes Operator

Likhetho tse joalo li khahla haholo hobane li fana ka menyetla e mengata ea ho tsamaisa sehlopha. Bakeng sa ho rala opareitara ea Cassandra, joalo ka database efe kapa efe, mohlala o motle o shebahala joalo ka Sidecar <-> Controller <-> CRD:

Ho falla ha Cassandra ho ea Kubernetes: likarolo le tharollo
Sekema sa taolo ea Node ho opareitara e hlophisitsoeng hantle ea Cassandra

Ha re shebeng li-operator tse teng.

1. Cassandra-opereishene ho tloha instaclustr

  • GitHub
  • Boikemisetso: Alpha
  • License: Apache 2.0
  • E kentsoe ho: Java

Ona ke projeke e ts'episang haholo ebile e nts'etsapele ka mafolofolo ho tsoa k'hamphaning e fanang ka lipehelo tse laoloang tsa Cassandra. Eona, joalo ka ha ho hlalositsoe ka holimo, e sebelisa setshelo sa sidecar se amohelang litaelo ka HTTP. E ngotsoe ka Java, ka linako tse ling e haelloa ke ts'ebetso e tsoetseng pele ea laeborari ea bareki. Hape, opareitara ha e tšehetse Racks e fapaneng bakeng sa Datacenter e le 'ngoe.

Empa opareitara e na le melemo e joalo ka ts'ehetso ea ho beha leihlo, taolo ea sehlopha sa maemo a holimo e sebelisang CRD, esita le litokomane tsa ho etsa li-backups.

2. Navigator ho tloha Jetstack

  • GitHub
  • Boikemisetso: Alpha
  • License: Apache 2.0
  • E kentswe tshebetsong ho: Golang

Polelo e etselitsoeng ho tsamaisa DB-as-a-Service. Hajoale e ts'ehetsa marang-rang a mabeli: Elasticsearch le Cassandra. E na le litharollo tse khahlisang joalo ka taolo ea phihlello ea database ka RBAC (bakeng sa sena e na le navigator-apiserver ea eona e arohaneng). Morero o khahlisang o ka bang bohlokoa ho hlahlobisisa, empa boitlamo ba ho qetela bo entsoe selemo le halofo e fetileng, e leng ho fokotsang bokhoni ba eona ka ho hlaka.

3. Cassandra-opereishene ka vgkowski

  • GitHub
  • Boikemisetso: Alpha
  • License: Apache 2.0
  • E kentswe tshebetsong ho: Golang

Ha baa ka ba e nka e le "ka botebo", kaha boitlamo ba ho qetela ba polokelo bo ne bo feta selemo se fetileng. Nts'etsopele ea opereishene e lahliloe: mofuta oa morao-rao oa Kubernetes o tlalehiloeng o tšehetsoa ke 1.9.

4. Cassandra-opereishene ka Rook

  • GitHub
  • Boikemisetso: Alpha
  • License: Apache 2.0
  • E kentswe tshebetsong ho: Golang

Mosebeletsi eo nts'etsopele ea hae e sa tsoeleng pele ka potlako kamoo re ka ratang kateng. E na le sebopeho sa CRD se nahannoeng hantle bakeng sa tsamaiso ea lihlopha, e rarolla bothata ba ho khetholla li-node tse sebelisang Tšebeletso le ClusterIP ("hack" e tšoanang) ... empa ke tsohle hona joale. Hajoale ha ho na ho beha leihlo kapa li-backups ka ntle ho lebokose (ka tsela, re molemong oa ho beha leihlo re e nkile). Taba e khahlisang ke hore o ka sebelisa ScyllaDB o sebelisa opareitara ena.

NB: Re sebelisitse opareitara ena ka liphetoho tse nyane ho e 'ngoe ea merero ea rona. Ha ho mathata a ileng a hlokomeloa mosebetsing oa opereishene nakong eohle ea ts'ebetso (~ likhoeli tsa 4 tsa ts'ebetso).

5. CassKop ho tloha Orange

  • GitHub
  • Boikemisetso: Alpha
  • License: Apache 2.0
  • E kentswe tshebetsong ho: Golang

Moetsi oa ho qetela lethathamong: boitlamo ba pele bo entsoe ka la 23 Motšeanong 2019. E se e ntse e na le pokellong ea eona ea pokello ea lintho tse ngata tse tsoang lethathamong la rona, lintlha tse ling tse ka fumanoang polokelong ea morero. Opereishene e hahiloe motheong oa opareitara e tsebahalang-sdk. E ts'ehetsa ho beha leihlo ka ntle ho lebokose. Phapang e kholo ho tsoa ho basebelisi ba bang ke tšebeliso CassKop plugin, e kentsoeng Python 'me e sebelisetsoa puisano pakeng tsa li-node tsa Cassandra.

fumanoeng ke

Palo ea mekhoa le likhetho tse ka khonehang tsa ho tsamaisa Cassandra ho Kubernetes lia ipuella: sehlooho se hlokahala.

Mothating ona, o ka leka leha e le efe ea tse ka holimo ka kotsi le kotsi ea hau: ha ho le ea mong oa bahlahisi ea tiisetsang ts'ebetso ea 100% ea tharollo ea bona sebakeng sa tlhahiso. Empa hona joale lihlahisoa tse ngata li shebahala li tšepisa ho leka ho li sebelisa libencheng tsa nts'etsopele.

Ke nahana hore nakong e tlang mosali enoa ea ka sekepeng o tla tla hantle!

PES

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso