Ama-VM amathathu ebhodi lokulawula abonakala njengamathuba amathathu okusinda ubusuku obubi. Akunjalo, futhi ibanga phakathi kwalezi zinkolelo ezimbili yilona elishintsha umklamo ohlanzekile wama-node amathathu ube yiqembu eliyeka ukwamukela imibhalo lapho isakhiwo esisodwa silahlekelwa ugesi. Isixhumanisi se-VPN phakathi kwezindawo senza imishini ifinyeleleke komunye nomunye futhi sicasha inkinga esikhundleni sokusixazulula. Amavoti abalwa ngesisekelo selungu ngalinye le-etcd, futhi amabili alawo malungu asengahlala ngemuva kweswishi elilodwa, i-UPS eyodwa kanye nendlela eyodwa.

Ama-node amathathu ebhodi lokulawula, isizinda esisodwa sokwehluleka

Uqalisa kubectl get nodes, ubona amarekhodi amathathu ebhodi lokulawula futhi ubhalisa iqembu njengelitholakala kakhulu. Leyo nombolo ichaza umthamo ongahlelwa, hhayi ukusinda. Ku-kubeadm ngaphandle kwe-etcd yangaphandle, i-node ngayinye yebhodi lokulawula iphinda isingathe ilungu, ngakho ama-node amathathu akunikeza ngempela abavoti abathathu. Ukuthi labo bavoti behluleka ngokuzimela umbuzo ohlukile ongenakuphendulwa uhlu lwama-node.

Ama-VM amabili ku-hypervisor eyodwa, amarack amabili kugesi owodwa, izindlela ezimbili ezivela ku-ISP eyodwa: iqembu ngalinye liyisizinda esisodwa esigqoke amagama amabili okusingatha. Bhala ukubekwa futhi umake ukuthi umvoti ngamunye wabelana ngani — i-hypervisor, i-PDU, iswishi ephezulu yerack, uhlu lokugcina, idivayisi ye-NAT, isihlanganisi se-VPN. Bese ususa into ngayinye eyabiwe ephepheni futhi ubale kabusha amavoti asele. Iqembu elilahlekelwa abavoti ababili ngenxa yomsingathi oyedwa ohlulekile belilokhu liyiqembu lomvoti oyedwa; akekho owayekade libuza lowo mbuzo.

Yini ukwehlukaniswa kwezindawo ezimbili okungakwazi ukuyimela nokungeke

Lapho abavoti abathathu bebekwa ababili noyedwa ezindaweni ezimbili, uhlangothi olukhulu lugcina i-quorum lapho enye indawo inyamalala futhi uhlangothi lomvoti oyedwa alunqobi nakancane. Lokho kungalingani i-arithmetic, hhayi ukulungisa. Noma yiliphi iqembu le-etcd elisekelwe ebuningini elisatshalaliswe ngqo ezindaweni ezimbili ezizimele lihluleka esivivinyweni esithi "lahlekelwa indawo noma yiyiphi futhi uqhubeke nokuqinisekisa", ngoba izinhlangothi zombili kufanele zibambe ngaphezu kwengxenye yamavoti ngesikhathi esisodwa.

Ithebula elingezansi iyona ndlela eshesha kakhulu yokubona ukuthi yikuphi ukwehluleka oyithengile ngempela. Funda umugqa ngamunye kanje: uma kulobu busuku wonke lo mugqa unyamalala, ingabe abasindile basengaqinisekisa umbhalo?

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

Kungani ithaneli lingalokothi lengeze ivoti

I-VPN iwukuthutha, hhayi ilungu. Ingayenza ifinyeleleke umvoti okude futhi ingaguqula ukwehlukaniswa kube yinto ebukeka njengesikhathi sokulinda esiphuzi, futhi lokho kuwumthelela wayo wonke ku-quorum. Engelsa kubona yizindleko, ngoba ukuqinisekisa ngakunye kufanele kweqe isixhumanisi futhi i-etcd ikhokhela lokho kuhamba nokubuya emibhalweni ethinta irekhodi le-raft. Indlela edlikizayo iguqula ukuphindaphinda kube yimizamo yokuphinda nokukhetha.

Ukwehlukaniswa yindawo lapho abantu balindele umlingo, ngakho qondanisa ngakho. Uma isixhumanisi siwa ngesikhathi umholi omdala ehlezi ohlangothini lomvoti oyedwa, lolo hlangothi alunakho ukuqinisekisa futhi umholi wehla esikhundleni lapho isikhathi sokukhetha siphela, kuyilapho uhlangothi lwabavoti ababili lukhetha obambele. Incwadi ye-etcd emayelana nezimo zokwehluleka ichaza ukuziphatha ngokucacile: isevisi eqhubekayo ohlangothini lobuningi, alikho iqembu lesibili elibhalekayo ohlangothini oluhlukanisiwe.

Nquma ukuthi yikuphi ukuphazamiseka okuthengayo

Okubili kanye nokukodwa kuwumklamo osemthethweni lapho indawo A iyindawo eyinhloko futhi wamukela ukuthi ukuyilahla kusho ukulahlekelwa imibhalo yebhodi lokulawula kuze kube umuntu uthatha isinyathelo. Okukwenza kube ukushiyeka ukuyeka leso sinqumo singacaci. Kubhale ku-runbook: iyiphi indawo ibhodi lakho lokulawula elisinda kuyo, nokuthi umsebenzi wenzani lapho enye indawo icima ngo-03:00.

Uma imfuneko iwukuthi "noma iyiphi indawo ingahluleka", ukubekwa kufanele kubambe ubuningi endaweni ngayinye, futhi abavoti abathathu ezindaweni ezimbili abakwazi lokho. Ufaka isizinda sesithathu esizimele ngempela — isifunda esincane kumhlinzeki omunye siyasebenza uma indlela eya khona izinzile — noma uhlukanisa amaqembu amabili ane-etcd ehlukile futhi wamukele izindleko zokusebenza zalokho kwehlukaniswa. Awekho amaqembu amafushane ofakazi akugwemayo lokhu: i-etcd ayinalo ilungu elilamuli elilula, ngakho umvoti wesithathu uyilungu eliphelele elinezimfuno zalo zediski, imemori nenethiwekhi. Ukudweba ibhokisi elibhalwe "ufakazi" kumdwebo akukwenzi ufakazi.

I-quorum ayifani nesevisi

I-quorum ye-etcd igcina iseva ye-API ikwazi ukwamukela imibhalo, futhi yilokho kuphela eyikugcinayo. Ukuhlolwa kwezempilo kwesilinganisi somthwalo, i-ingress, ukufinyeleleka kwe-CNI ngethaneli, izindawo zokuxhuma ivolumu nokuphindaphinda kohlelo lokusebenza ngakunye kudinga impendulo yako. Iqembu lingaba nobuningi obuhlanzekile futhi linganikezi lutho olusizayo kubasebenzisi.

Bese uqinisekisa ubulungu ocabanga ukuthi unabo, ngoba imidwebo iyadlulela:

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

Qhathanisa uhlu lwamalungu nomdwebo wokubeka. Uma amalungu amabili axazulula kumsingathi oyedwa noma kuerack eyodwa, umdwebo uwona ongalungile hhayi iqembu, futhi ukushintsha usayizi eduze kwethopology engalungile kuthenga kuphela inguqulo ebiza kakhulu yalokho kuphazamiseka.

Ngaphambi kokugunyaza noma yimuphi umklamo wabavoti abathathu, phendula imibuzo emine: bangaki abavoti abalahlekelwa ugesi ndawonye, ukulahlekelwa yikuphi indawo kusashiya ubuningi, umholi uhlala kuphi lapho ithaneli liwa, futhi indawo esindile ingasenza ini. Ukuthi "angiqiniseki" kunoma yikuphi kwalokho kusho ukuthi iqembu alikabi nokutholakala okuphezulu. Yimishini emithathu eye yaba nenhlanhla.

Izihloko ezihlobene