Te hekenga o Cassandra ki Kubernetes: nga ahuatanga me nga otinga

Te hekenga o Cassandra ki Kubernetes: nga ahuatanga me nga otinga

I nga wa katoa ka tutaki matou ki te papaa raraunga Apache Cassandra me te hiahia ki te whakahaere i roto i te hanganga-a-Kubernetes. I roto i tenei rauemi, ka tohatohahia e matou ta matou tirohanga mo nga huarahi e tika ana, nga paearu me nga otinga o naianei (tae atu ki te tirohanga o nga kaiwhakahaere) mo te heke a Cassandra ki K8s.

"Ko te tangata ka taea te whakahaere i te wahine ka ahei ano te whakahaere i te kawanatanga"

Ko wai a Cassandra? He punaha rokiroki tohatoha i hangaia hei whakahaere i nga pukapuka nui o nga raraunga me te whakarite kia nui te waatea me te kore he waahi kotahi. Ko te kaupapa kaore e hiahiatia he whakaurunga roa, no reira ka hoatu e ahau nga ahuatanga matua o Cassandra ka whai kiko ki te horopaki o tetahi tuhinga motuhake:

  • Ka tuhia a Cassandra ki Java.
  • Ko te topology Cassandra he maha nga taumata:
    • Node - kotahi te tauira Cassandra i tukuna;
    • Ko te Rack he roopu o nga tauira Cassandra, kua whakakotahihia e etahi ahuatanga, kei roto i te pokapū raraunga kotahi;
    • Pokapū Raraunga - he kohinga o nga roopu katoa o nga tauira Cassandra kei roto i te pokapū raraunga kotahi;
    • Ko te Cluster he kohinga o nga pokapū raraunga katoa.
  • Ka whakamahi a Cassandra i tetahi wahitau IP hei tautuhi i tetahi node.
  • Hei tere ake i nga mahi tuhituhi me te panui, ka penapena a Cassandra etahi o nga raraunga i roto i te RAM.

Inaianei - ki te nuku pea ki Kubernetes.

Rarangi arowhai mo te whakawhiti

Ma te korero mo te hekenga o Cassandra ki Kubernetes, ko te tumanako ma te nekehanga ka pai ake te whakahaere. He aha nga mea e hiahiatia ana mo tenei, he aha te awhina i tenei?

1. Te rokiroki raraunga

I te mea kua whakamaramatia, ka penapena a Cassanda tetahi waahanga o nga raraunga i roto i te RAM - in Whakamau. Engari tera ano tetahi waahanga o nga raraunga ka tiakina ki te kopae - kei te ahua SSTable. Ka taapirihia he hinonga ki tenei raraunga Rangitaki Whakaae — nga rekoata o nga whakawhitinga katoa, ka tiakina hoki ki te kopae.

Te hekenga o Cassandra ki Kubernetes: nga ahuatanga me nga otinga
Tuhia te hoahoa tauwhitinga ki Cassandra

I Kubernetes, ka taea e tatou te whakamahi PersistentVolume ki te penapena raraunga. He mihi ki nga tikanga kua whakamatauria, ka ngawari ake te mahi me nga raraunga i Kubernetes ia tau.

Te hekenga o Cassandra ki Kubernetes: nga ahuatanga me nga otinga
Ka tohatohahia ta maatau ake PersistentVolume ki ia pod Cassandra

He mea nui kia mahara ko Cassandra ano te kii i te tukuruatanga raraunga, e tuku ana i nga tikanga hanga-i roto mo tenei. Na reira, ki te hanga koe i te kohinga Cassandra mai i te maha o nga pona, kaore he take ki te whakamahi i nga punaha tohatoha penei i a Ceph me GlusterFS mo te rokiroki raraunga. I tenei take, he mea tika ki te penapena raraunga i runga i te kōpae kaihautu ma te whakamahi kopae tohe a rohe whakapuru ranei hostPath.

Ko tetahi atu patai mena ka hiahia koe ki te hanga i tetahi taiao motuhake mo nga kaiwhakawhanake mo ia peka ahuatanga. I tenei keehi, ko te huarahi tika ko te whakaara i tetahi node Cassandra me te penapena i nga raraunga i roto i te rokiroki tohatoha, i.e. ko te Ceph me GlusterFS kua whakahuahia hei whiringa maau. Na ka tino mohio te kaiwhakawhanake kaore e ngaro nga raraunga whakamatautau ahakoa kua ngaro tetahi o nga kohinga kohinga Kuberntes.

2. Te aroturuki

Ko te kowhiringa kaore i tino tautohetia mo te whakatinana i te aro turuki i Kubernetes ko Prometheus (i korero maatau mo tenei i roto i nga korero pūrongo e pā ana). Kei te pehea a Cassandra me nga kaihokohoko inenga mo Prometheus? A, he aha te mea nui ake, me nga papatohu orite mo Grafana?

Te hekenga o Cassandra ki Kubernetes: nga ahuatanga me nga otinga
He tauira o te ahua o nga kauwhata i Grafana mo Cassandra

E rua noa nga kaihoko ki waho: jmx_kaituku и cassandra_kaituku.

I whiriwhiria e matou te mea tuatahi mo matou na te mea:

  1. Kei te tipu haere, kei te whanake haere a JMX Exporter, ko Cassandra Exporter kaore ano kia nui te tautoko a te hapori. Kaore ano a Cassandra Exporter e tautoko i te nuinga o nga putanga o Cassandra.
  2. Ka taea e koe te whakahaere hei javaagent ma te taapiri haki -javaagent:<plugin-dir-name>/cassandra-exporter.jar=--listen=:9180.
  3. He kotahi mo ia papatohu rawaka, he hotokore ki a Cassandra Exporter.

3. Te kowhiri i nga tikanga o mua o Kubernetes

E ai ki te hanganga o runga ake o te roopu Cassandra, me ngana ki te whakamaori i nga mea katoa e whakaahuatia ana i reira ki nga kupu Kubernetes:

  • Cassandra Node → Pod
  • Cassandra Rack → StatefulSet
  • Cassandra Datacenter → puna mai i StatefulSets
  • Kāhui Cassandra → ???

Te ahua kei te ngaro etahi atu hinonga hei whakahaere i te roopu Cassandra katoa i te wa kotahi. Engari ki te kore tetahi mea, ka taea e tatou te hanga! He tikanga ta Kubernetes hei tautuhi i ana ake rauemi mo tenei kaupapa - Whakaritenga Rauemi Ritenga.

Te hekenga o Cassandra ki Kubernetes: nga ahuatanga me nga otinga
Te whakapuaki rauemi taapiri mo nga raarangi me nga matohi

Engari ko te Rauemi Ritenga ake ehara i te mea: i muri i nga mea katoa, me hiahia kaiwhakahaere. Me rapu awhina koe Kaiwhakahaere Kubernetes...

4. Tautuhinga Pod

I te kōwae i runga ake nei, i whakaae mātou ka ōrite te kōpuku Cassandra ki te kōpuku kotahi ki Kubernetes. Engari ka rereke nga wahitau IP o nga pene i ia wa. A ko te tohu o te node i Cassandra i runga i te wahitau IP ... Ka puta mai i muri i ia tangohanga o te putea, ka whakauruhia e te kohinga Cassandra tetahi waahanga hou.

He huarahi ki waho, ehara i te mea kotahi anake:

  1. Ka taea e tatou te pupuri i nga rekoata ma nga kaitautuhi kaihautu (UUID e tohu motuhake ana i nga tauira Cassandra) ma nga wahitau IP ranei ka penapena katoa ki etahi hanganga/tepu. Ko te tikanga e rua nga tino kino:
    • Ko te tupono ka puta mai tetahi ahuatanga iwi mena ka taka nga pona e rua i te wa kotahi. Whai muri i te pikinga, ka tono nga nodes Cassandra i tetahi wahitau IP mai i te teepu ka whakataetae mo taua rauemi.
    • Mena kua ngaro nga raraunga o te node Cassandra, ka kore e taea e matou te tautuhi.
  2. Ko te otinga tuarua te ahua he hack iti, engari ahakoa: ka taea e tatou te hanga Ratonga me ClusterIP mo ia node Cassandra. Nga raruraru me tenei whakatinanatanga:
    • Mena he maha nga waahanga kei roto i te roopu Cassandra, me hanga e matou he maha o nga Ratonga.
    • Ka whakatinanahia te ahuatanga ClusterIP ma te iptables. Ka raru pea tenei mena he maha nga (1000... 100 ranei?) te kohinga Cassandra. Ahakoa te whakataurite i runga i te IPVS ka taea te whakaoti i tenei raru.
  3. Ko te otinga tuatoru ko te whakamahi i te whatunga o nga pona mo nga pona Cassandra hei utu mo te whatunga kua whakatapua o nga pona ma te whakahohe i te tautuhinga. hostNetwork: true. Ka whakatauhia e tenei tikanga etahi here:
    • Hei whakakapi i nga waeine. He mea tika kia rite tonu te wahitau IP o te node hou ki to mua (i roto i nga kapua penei i te AWS, GCP kaore e taea te mahi);
    • Ma te whakamahi i te whatunga o nga kohinga kohinga, ka timata taatau ki te whakataetae mo nga rauemi whatunga. Na reira, ka nui ake i te kotahi te peera me Cassandra ki runga i te kohinga tautau kotahi ka raru.

5. Pūrua

Kei te pirangi matou ki te penapena i tetahi putanga katoa o nga raraunga kotahi a Cassandra node i runga i te raarangi. Ka whakarato a Kubernetes i tetahi waahanga ngawari ki te whakamahi CronJob, engari i konei ko Cassandra tonu te tuku korero i roto i a maatau wira.

Kia whakamahara ahau ki a koe kei te rongoa a Cassandra i etahi o nga raraunga ki te mahara. Hei hanga i te taapiri katoa, me hiahia koe i nga raraunga mai i te mahara (Mepurangi) neke ki te kōpae (SSTtables). I tenei wa, ka mutu te whakaae a Cassandra node ki nga hononga, ka kati rawa atu i te tautau.

Whai muri i tenei, ka tangohia te taapiri (hopuāhua) ka tiakina te kaupapa (mokowāmatua). Na ka puta ko te taapiri noa kaore e hoatu he mea ki a maatau: me tiaki e maatau nga tohu tohu raraunga na te Cassandra node te kawenga - he tohu motuhake enei.

Te hekenga o Cassandra ki Kubernetes: nga ahuatanga me nga otinga
Te tohatoha o nga tohu hei tautuhi he aha nga raraunga kei a Cassandra nodes te kawenga

Ka kitea he tauira tuhi mo te tango i te taapiri Cassandra mai i a Google i Kubernetes i tenei hononga. Ko te mea anake kaore e whakaarohia e te tuhinga ko te tautuhi i nga raraunga ki te pona i mua i te tango i te whakaahua. Arā, ka mahia te taapiri ehara mo te ahuatanga o naianei, engari mo te ahua o mua. Engari ka awhina tenei kia kaua e tangohia te node i te mahi, he ahua tino arorau.

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

He tauira o te tuhinga bash mo te tango i te taapiri mai i tetahi node Cassandra

Nga otinga kua rite mo Cassandra i Kubernetes

He aha te mea e whakamahia ana i tenei wa ki te tuku i a Cassandra ki Kubernetes a ko wai o enei e tino pai ana ki nga whakaritenga kua tohua?

1. Nga otinga i runga i nga mahere StatefulSet, Helm ranei

Ko te whakamahi i nga mahi a StatefulSets hei whakahaere i te kohinga Cassandra he pai te whiringa. Ma te whakamahi i te tūtohi Helm me nga tauira Haere, ka taea e koe te whakarato ki te kaiwhakamahi he atanga ngawari mo te tuku i a Cassandra.

Ko te tikanga ka pai tenei... kia tupu ra ano tetahi mea ohorere, penei i te korenga o te node. Kaore e taea e nga taputapu Kubernetes paerewa te whai whakaaro ki nga ahuatanga katoa i whakaahuatia i runga ake nei. I tua atu, he iti noa tenei huarahi ki te pehea e taea ai te whakawhānui atu mo nga whakamahinga uaua ake: te whakakapi node, te taapiri, te whakaora, te aroturuki, me era atu.

Māngai:

He rite tonu te pai o nga tūtohi e rua, engari kei raro i nga raru kua whakaahuatia i runga ake nei.

2. Nga otinga i runga i te Kaiwhakahaere Kubernetes

He pai ake enei whiringa na te mea he maha nga huarahi hei whakahaere i te roopu. Mo te hoahoa i tetahi kaiwhakahaere Cassandra, penei i etahi atu paparangi raraunga, he ahua pai te ahua o te Sidecar <-> Kaiwhakahaere <-> CRD:

Te hekenga o Cassandra ki Kubernetes: nga ahuatanga me nga otinga
Ko te kaupapa whakahaere node i roto i tetahi kaiwhakahaere Cassandra i hangaia pai

Kia titiro tatou ki nga kaiwhakahaere o naianei.

1. Cassandra-kaiwhakahaere mai i te instaclustr

  • GitHub
  • Riri: Arepa
  • Raihana: Apache 2.0
  • I whakatinanahia ki: Java

He kaupapa tino pai me te kaha te whakawhanake mai i tetahi kamupene e tuku ana i nga mahi whakahaere a Cassandra. Ka rite ki te korero i runga ake nei, e whakamahi ana i tetahi ipu tahataha e whakaae ana ki nga whakahau ma te HTTP. I tuhia ki Java, i etahi wa ka ngaro te mahi tino matatau o te whare pukapuka kiritaki-haere. Ano, kaore te kaiwhakahaere e tautoko i nga Racks rereke mo tetahi Raraunga Raraunga.

Engari he pai nga painga o te kaiwhakahaere penei i te tautoko mo te aro turuki, te whakahaere roopu taumata-tiketike ma te whakamahi i te CRD, tae atu ki nga tuhinga mo te hanga taapiri.

2. Kaiwhakatere mai i Jetstack

  • GitHub
  • Riri: Arepa
  • Raihana: Apache 2.0
  • I whakatinanahia ki: Golang

He korero i hangaia hei tuku i te DB-as-a-Ratonga. E tautoko ana i tenei wa e rua nga papaa raraunga: Elasticsearch me Cassandra. Kei a ia nga otinga whakamere penei i te mana urunga raraunga ma te RBAC (mo tenei kei a ia ano te kaiwhakatere-apiserver motuhake). He kaupapa whakamere e tika ana kia ata tirohia, engari ko te kaupapa whakamutunga i mahia kotahi tau me te hawhe ki muri, e tino whakaiti ana i tona kaha.

3. Cassandra-kaiwhakahaere na vgkowski

  • GitHub
  • Riri: Arepa
  • Raihana: Apache 2.0
  • I whakatinanahia ki: Golang

Kaore i whakaarohia e ratou he "tino nui", na te mea ko te tukunga whakamutunga ki te putunga kua neke atu i te kotahi tau ki muri. Kua whakarerea te whakawhanaketanga o te kaiwhakahaere: ko te putanga hou o Kubernetes i ripoatahia e tautokohia ana ko 1.9.

4. Cassandra-kaiwhakahaere na Rook

  • GitHub
  • Riri: Arepa
  • Raihana: Apache 2.0
  • I whakatinanahia ki: Golang

He kaiwhakahaere kaore e tere haere ana te whanaketanga ki ta maatau e pai ai. Kei a ia he hanganga CRD kua whakaarohia mo te whakahaere roopu, ka whakaoti i te raruraru o te tautuhi i nga pona ma te whakamahi i te Ratonga me te ClusterIP (te taua "hack") ... engari ko te mea mo tenei wa. I tenei wa kaore he aroturuki, he taapiri ranei i waho o te pouaka (ma te ara, ma matou e aro turuki i tangohia e matou). Ko tetahi mea whakamiharo ka taea e koe te tuku ScyllaDB ma te whakamahi i tenei kaiwhakahaere.

NB: I whakamahia e matou tenei kaiwhakahaere me nga whakarereketanga iti i tetahi o a maatau kaupapa. Kaore he raruraru i kitea i roto i nga mahi a te kaiwhakahaere i te wa katoa o te mahi (~ 4 marama o te mahi).

5. CassKop no Orange

  • GitHub
  • Riri: Arepa
  • Raihana: Apache 2.0
  • I whakatinanahia ki: Golang

Ko te kaiwhakahaere iti rawa o te raarangi: ko te tuunga tuatahi i mahia i te 23 o Mei, 2019. Inaianei kei roto i tana taonga te maha o nga ahuatanga mai i ta maatau rarangi ingoa, he maha atu nga korero ka kitea i roto i te putunga kaupapa. Ka hangaia te kaiwhakahaere i runga i te kaupapa rongonui rongonui-sdk. Ka tautokohia te aroturuki i waho o te pouaka. Ko te rereketanga nui mai i etahi atu kaiwhakahaere ko te whakamahinga mono CassKop, ka whakatinanahia i roto i te Python ka whakamahia mo te whakawhitiwhiti korero i waenga i nga pona Cassandra.

kitenga

Ko te maha o nga huarahi me nga whiringa ka taea mo te kawe i a Cassandra ki Kubernetes e korero ana mo ia ano: kei te hiahia te kaupapa.

I tenei wa, ka taea e koe te whakamatau i tetahi o nga mea i runga ake nei i runga i to raru me to tupono: kaore tetahi o nga kaihanga e whakamana 100% te mahi o ta raatau otinga i roto i te taiao whakaputa. Engari inaianei, he maha nga hua e pai ana ki te whakamatau ki te whakamahi i nga taurangi whanaketanga.

Ki taku whakaaro a muri ake nei ka whai hua tenei wahine i runga i te kaipuke!

PS

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero