Þarf Kubernetes-þyrping á tveimur stöðum þrjá etcd-kjósendur?
Þrír stýriplánshnútar á tveimur VPN-stöðum missa enn kvórum þegar stærri staðurinn slokknar. Teljið raunverulega etcd-kjósendur og veljið það tap sem þið lifið af.
Þrír stýriplánsvélar virðast eins og þrjú tækifæri til að lifa af slæmri nótt. Þær eru það ekki, og fjarlægðin milli þessara tveggja trúar er það sem breytir snyrtilegri þriggja hnúta hönnun í þyrpingu sem hættir að taka við skrifum þegar ein bygging missir rafmagn. VPN-tenging milli staðanna gerir vélarnar aðgengilegar hverri annarri og felur vandamálið í stað þess að laga það. Atkvæði eru talin á hvern etcd-meðlim, og tveir þessara meðlima geta enn setið bak við einn rofa, eitt UPS og eina upptengingu.
Þrír stýriplánshnútar, eitt bilunarsvið
Þið keyrið kubectl get nodes, sjáið þrjár stýriplánsfærslur og skráið þyrpinguna sem hátt aðgengilega. Sú tala lýsir skipanlegri getu, ekki lifun. Í kubeadm án ytra etcd hýsir hver stýriplánshnútur einnig meðlim, svo þrír hnútar gefa þér raunverulega þrjá kjósendur. Hvort þessir kjósendur bila óháð er sérstök spurning sem hnútalistinn getur ekki svarað.
Tvær vélar á einum hypervisor, tvö rekki á einni aflgjöf, tvær upptengingar frá einum ISP: hvert par er eitt svið með tveimur hýsilnöfnum. Skrifið staðsetninguna og merkið hvað hver kjósandi deilir — hypervisor, PDU, rofi efst í rekki, geymslufylki, NAT-tæki, VPN-eining. Fjarlægið síðan hvern sameiginlegan hlut á pappír og teljið atkvæðin sem eftir eru upp á nýtt. Þyrping sem missir tvo kjósendur vegna eins bilaðs hýsils hefur alla tíð verið þyrping með einn kjósanda; enginn hafði enn spurt hana þeirrar spurningar.
Hvað tveggja staða skipting getur og getur ekki lifað af
Þegar þrír kjósendur eru settir tveir og einn á tvo staði heldur stærri hliðin kvórum þegar hinn staðurinn hverfur og hliðin með einn kjósanda aldrei. Sú ósamhverfa er reikningur, ekki stilling. Öll etcd-þyrping byggð á meirihluta sem dreift er nákvæmlega á tvo óháða staði fellur á prófinu "misstu hvorn stað sem er og haltu áfram að staðfesta", því báðar hliðar þyrftu samtímis að halda meira en helmingi atkvæðanna.
Taflan hér að neðan er fljótlegasta leiðin til að sjá hvaða bilanir þið keyptuð í raun. Lesið hverja röð þannig: ef öll þessi röð hverfur í nótt, geta þeir sem lifðu af enn staðfest skrif?
| What disappears | Voters left | Writes still commit |
|---|---|---|
| Site B, holding voter 3 | 2 of 3 | Yes |
| Site A, holding voters 1 and 2 | 1 of 3 | No |
| One hypervisor carrying any two voters | 1 of 3 | No |
| The inter-site VPN only | 2 of 3 on one side | Only on the majority side |
Hvers vegna göngin bæta aldrei við atkvæði
VPN er flutningur, ekki meðlimur. Það getur gert fjarlægan kjósanda aðgengilegan og það getur breytt skiptingu í eitthvað sem lítur út eins og hæg tímamörk, og það er öll framlög þess til kvórums. Það sem það bætir við er kostnaður, því hver staðfesting verður að fara yfir tenginguna og etcd borgar þá ferð fram og til baka á skrifum sem snerta raft-logginn. Slóð sem flöktir breytir endurtekningu í endurteknum tilraunum og kosningum.
Skiptingar eru staðurinn þar sem fólk býst við töfrum, svo verið nákvæm með þær. Ef tengingin dettur meðan gamli leiðtoginn situr á hliðinni með einn kjósanda getur sú hlið ekki staðfest og leiðtoginn stígur niður þegar kosningatímamörkin renna út, á meðan hliðin með tvo kjósendur kýs staðgengil. Leiðarvísir etcd um bilunarhami lýsir hegðuninni afdráttarlaust: áframhaldandi þjónusta á meirihlutahliðinni, engin önnur skrifanleg þyrping á einangruðu hliðinni.
Ákveðið hvaða niðurfall þið kaupið
Tveir plús einn er lögmæt hönnun þegar staður A er aðalstaðurinn og þið samþykkið að tap hans þýði tap á skrifum stýriplánsins þar til einhver bregst við. Það sem gerir það að galla er að láta þá ákvörðun vera óbeina. Skrifið hana í runbookið: hvaða staður stýriplánið ykkar lifir af og hvað rekstraraðili gerir þegar hinn staðurinn slokknar klukkan 03:00.
Ef krafan er í staðinn "hvor staður sem er má bila" verður staðsetningin að halda meirihluta á hverjum stað, og þrír kjósendur á tveimur stöðum geta það ekki. Þið bætið annaðhvort við raunverulega óháðu þriðja sviði — lítið svæði hjá öðrum veitanda virkar ef slóðin þangað er stöðug — eða skiptist í tvær þyrpingar með aðskildum etcd og samþykkið rekstrarkostnað þeirrar skiptingar. Engin vottur styttri leið kemst hjá þessu: etcd hefur engan léttan gerðardómsmeðlim, svo þriðji kjósandinn er fullur meðlimur með eigin kröfur um disk, minni og net. Að teikna kassa merktan vott á skýringarmyndina býr ekki til einn.
Kvórum er ekki það sama og þjónusta
etcd-kvórum heldur API-þjóninum færum um að taka við skrifum, og það er allt sem það heldur. Heilsufarseftirlit hleðsludreifisins, ingress, CNI-aðgengi í gegnum göngin, bindisvæði búnaðar og endurtekning forrita þurfa hvert sitt svar. Þyrping getur haldið hreinum meirihluta og samt ekki boðið notendum neitt gagnlegt.
Staðfestið þá aðildina sem þið haldið að þið hafið, því skýringarmyndir reka áfram:
kubectl -n kube-system get pods -l component=etcd -o wide
kubectl get endpoints kube-apiserver -n default
etcdctl member list -w table
Berið saman meðlimaskrána við staðsetningarteikninguna. Ef tveir meðlimir leysast á sama hýsil eða sama rekki er teikningin röng, ekki þyrpingin, og að breyta stærð í kringum rangt sýndarhnit kaupir aðeins dýrari útgáfu af sama niðurfalli.
Áður en þið samþykkið hvaða hönnun sem er með þrjá kjósendur, svarið fjórum spurningum: hve margir kjósendur missa rafmagn saman, hvaða tap staðar skilur enn eftir meirihluta, hvar leiðtoginn situr þegar göngin falla, og hvað lifandi staðurinn getur enn gert. "Ekki viss" á hverri þeirra þýðir að þyrpingin er enn ekki hátt aðgengileg. Þetta eru þrjár vélar sem hafa verið heppnar.