Hiru kontrol-plano VM gaueko txar bat bizirauteko hiru aukera dirudite. Ez dira, eta bi sinesmen horien arteko distantziak bihurtzen du hiru nodoko diseinu txukun bat eraikin batek argindarra galtzen duenean idazkerak onartzeari uzten dion kluster. Kokalekuen arteko VPN esteka batek makinak elkarrentzat irisgarri egiten ditu eta arazoa ezkutatzen du konpondu beharrean. Bozkak etcd kide bakoitzeko zenbatzen dira, eta kide horietako bi oraindik etengailu baten, UPS baten eta uplink baten atzean egon daitezke.

Hiru kontrol-plano nodo, hutsegite-domeinu bat

kubectl get nodes exekutatzen duzu, hiru kontrol-plano sarrera ikusten dituzu eta klusterra eskuragarritasun handikotzat jasotzen duzu. Zenbaki horrek programagarri den ahalmena deskribatzen du, ez biziraupena. Kanpo etcd gabe mantendutako kubeadm-en, kontrol-plano nodo bakoitzak kide bat ere hartzen du, beraz hiru nodok hiru bozkatzaile ematen dizkizute benetan. Bozkatzaile horiek modu independentean huts egiten duten ala ez, nodo-zerrendak ezin duen erantzun beharreko galdera bereizia da.

Bi VM hipervisor batean, bi rack elikatze-iturri batean, bi uplink ISP batetik: bikote bakoitza domeinu bakarra da, bi host-izen daramatzana. Idatzi kokapena eta markatu bozkatzaile bakoitzak zer partekatzen duen — hipervisorea, PDUa, rackaren goiko etengailua, biltegiratze-multzoa, NAT gailua, VPN kontzentratzailea. Ondoren kendu paperean partekatutako objektu bakoitza eta berriro zenbatu geratzen diren bozkak. Bi bozkatzaile host huts batek galtzen dituen klusterra bozkatzaile bakarreko klusterra izan da denbora osoan; inork ez zion galdera egin oraindik.

Bi kokalekutako zatiketak zer biziraun dezakeen eta zer ez

Hiru bozkatzaile bi eta bat gisa bi kokalekutan kokatzen direnean, alde handienak quoruma mantentzen du beste kokalekua desagertzen denean eta bozkatzaile bakarreko aldeak inoiz ez. Asimetria hori aritmetika da, ez doikuntza. Bi kokaleku independente zehatzetan banatutako gehiengoan oinarritutako etcd kluster orok huts egiten du "galdu edozein kokaleku eta jarraitu konprometitzen" proban, bi aldeek aldi berean bozken erdia baino gehiago eduki beharko luketelako.

Beheko taula azkarrena da benetan zein hutsegite erosi dituzun ikusteko. Irakurri errenkada bakoitza horrela: gaur gauean errenkada oso hau desagertzen bada, bizirik atera direnek idazkera bat konprometitu dezakete oraindik?

What disappearsVoters leftWrites still commit
Site B, holding voter 32 of 3Yes
Site A, holding voters 1 and 21 of 3No
One hypervisor carrying any two voters1 of 3No
The inter-site VPN only2 of 3 on one sideOnly on the majority side

Zergatik tunelek inoiz ez duen bozk bat gehitzen

VPN garraioa da, ez kidea. Urruneko bozkatzaile bat irisgarri egin dezake eta partizio bat timeout geldo baten itxura duen zerbait bihur dezake, eta hori da quorumari egiten dion ekarpen osoa. Gehitzen duena kostua da, konpromiso bakoitzak esteka zeharkatu behar duelako eta etcd-ek joan-etorri hori ordaintzen duelako raft erregistroa ukitzen duten idazkeretan. Flap egiten duen bideak erreplikazioa berriz saiakera eta hauteskunde bihurtzen du.

Partizioak jendeak magia espero duen lekua dira, beraz izan zehatza haiekin. Esteka erortzen bada lider zaharrak bozkatzaile bakarreko aldean eserita dagoen bitartean, alde horrek ezin du konprometitu eta liderrak dimisioa ematen du hauteskunde-timeouta amaitzean, bi bozkatzaileko aldeak ordezko bat aukeratzen duen bitartean. etcd-ren gida hutsegite-moduei buruz jokaera era argian deskribatzen du: zerbitzu jarraitua gehiengoaren aldean, ez bigarren kluster idazgarririk alde isolatuan.

Erabaki zein etenaldi erosten duzun

Bi gehi bat diseinu zilegia da A kokalekua nagusia denean eta haren galerak kontrol-planoaren idazkerak galtzea esan nahi duela onartzen duzunean, norbaitek jardun arte. Akats bihurtzen duena erabaki hori inplizitu uztea da. Jarri runbookean: zein kokalekutatik bizirauten duen zure kontrol-planoak eta zer egiten duen operadoreak beste kokalekua 03:00etan iluntzen denean.

Baldintza "edozein kokalekuk huts egin dezake" bada, kokapenak gehiengoa eduki behar du kokaleku bakoitzean, eta hiru bozkatzaile bi kokalekutan ezin dute hori egin. Edo benetan independentea den hirugarren domeinu bat gehitzen duzu — beste hornitzaile bateko eskualde txiki batek balio du hara doan bidea egonkorra bada — edo etcd bereizitako bi klusterretan zatitzen zara eta zatiketa horren kostu operatiboa onartzen duzu. Ez dago lekuko lasterbiderik hori saihesten duenik: etcd-k ez du arbitro kide arinik, beraz hirugarren bozkatzailea kide osoa da, bere disko, memoria eta sare eskakizunekin. Diagraman lekuko etiketa duen kaxa bat marrazteak ez du lekukorik sortzen.

Quoruma ez da zerbitzua bezalakoa

etcd quorumak API zerbitzaria idazkerak onartzeko gai mantentzen du, eta hori da mantentzen duen guztia. Karga-banatzailearen osasun-egiaztapenek, ingress-ek, tunelean zeharreko CNI irisgarritasunak, bolumenen atxikitze-guneek eta aplikazioen erreplikazioak bakoitzak bere erantzuna behar du. Kluster batek gehiengo garbia eduki dezake eta, hala ere, ez die erabiltzaileei ezer erabilgarririk eskaintzen.

Ondoren berretsi uste duzun kidetza, diagramak desbideratzen direlako:

kubectl -n kube-system get pods -l component=etcd -o wide
kubectl get endpoints kube-apiserver -n default
etcdctl member list -w table

Alderatu kide-zerrenda kokapen-marrazkiarekin. Bi kide host berera edo rack berera ebazten badira, marrazkia da okerra, ez klusterra, eta topologia oker baten inguruan tamaina aldatzeak etenaldi beraren bertsio garestiagoa baino ez du erosten.

Hiru bozkatzaileko edozein diseinu onartu aurretik, erantzun lau galderari: zenbat bozkatzailek galtzen dute argindarra elkarrekin, zein kokalekuren galerak uzten du gehiengo bat oraindik, non esertzen den liderra tunelek huts egiten duenean, eta zer egin dezakeen oraindik bizirik atera den kokalekuak. Horietako edozeinetan "ez nago ziur" esateak klusterra ez dela oraindik eskuragarritasun handikoa esan nahi du. Zortea izan duten hiru makina dira.

Erlazionatutako artikuluak