Àwọn ẹ̀rọ àkóso mẹ́ta dàbí àǹfààní mẹ́ta láti yè kúrò nínú òru burú. Ṣùgbọ́n kì í ṣe bẹ́ẹ̀, ìlà jìnnà láàárín àwọn ìgbàgbọ́ méjì yìí ni ó yí àpẹẹrẹ mẹ́ta-ipò tí ó mọ́ gaara padà sí ẹgbẹ́ tí ó dá kíkọ dúró nígbà tí ilé kan bá pàdánù iná. Ọ̀nà VPN láàárín àwọn ibi ń jẹ́ kí àwọn ẹ̀rọ dé ọ̀dọ̀ ara wọn ó sì fi ìṣòro pamọ́ dípò kí ó tún un ṣe. Àwọn ìdìbò ni a ka fún ẹ̀yà etcd kọ̀ọ̀kan, àwọn méjì nínú àwọn ẹ̀yà yẹn sì ṣì lè jókòó lẹ́yìn ẹ̀rọ ìyípadà kan, UPS kan àti ọ̀nà kan.

Àwọn ipò ìṣàkóso mẹ́ta, ẹkùn ìkùnà kan

Ìwọ ń ṣe kubectl get nodes, o rí àwọn àkọsílẹ̀ ìṣàkóso mẹ́ta, o sì forúkọ ẹgbẹ́ náà sílẹ̀ gẹ́gẹ́ bí èyí tí ó wà ní àkókò gíga. Nọ́mbà yẹn ṣàpèjúwe agbára tí a lè ṣètò, kì í ṣe ìyè. Nínú kubeadm tí a kò ní etcd ita, ipò ìṣàkóso kọ̀ọ̀kan tún ń gbà ẹ̀yà kan, nítorí náà àwọn ipò mẹ́ta ń fún ọ ní àwọn olùdìbò mẹ́ta gidi. Bóyá àwọn olùdìbò yẹn kùnà ní ọ̀nà àìsopọ̀ jẹ́ ìbéèrè ọ̀tọ̀ tí àkọsílẹ̀ ipò kò lè dáhùn.

Ẹ̀rọ méjì lórí hypervisor kan, àwọn rack méjì lórí orísun iná kan, àwọn ọ̀nà méjì láti ISP kan: búrẹ́kẹ́ kọ̀ọ̀kan jẹ́ ẹkùn kan tí ó wọ orúkọ ẹ̀rọ méjì. Kọ ibi tí a gbé wọn sí, kí o sì fi àmì sí ohun tí olùdìbò kọ̀ọ̀kan ń pín — hypervisor, PDU, ẹ̀rọ ìyípadà orí rack, àkójọ ìpamọ́, ẹ̀rọ NAT, àkójọ VPN. Lẹ́yìn náà yọ ohun kan tí a pín kúrò lórí bébà kí o sì ka àwọn ìdìbò tí ó kù lẹ́ẹ̀kan sí i. Ẹgbẹ́ tí ó pàdánù olùdìbò méjì nítorí ẹ̀rọ kan tí ó kùnà ti jẹ́ ẹgbẹ́ olùdìbò kan látìgbà tí ó ti bẹ̀rẹ̀; kò sẹ́ni tí ó tí ì bèèrè ìbéèrè yẹn.

Ohun tí pípín sí ibi méjì lè dúró fún àti ohun tí kò lè

Nígbà tí a bá gbé àwọn olùdìbò mẹ́ta sí ibi méjì ní méjì àti ọ̀kan, ẹ̀gbẹ́ tí ó tóbi ń pa ìpínlórí mọ́ nígbà tí ibi kejì bá sọnù, ẹ̀gbẹ́ olùdìbò kan kò sì pa á mọ́ rárá. Àìdọ́gba yẹn jẹ́ ìṣirò, kì í ṣe àtúnṣe. Ẹgbẹ́ etcd kankan tí ó dá lórí ọ̀pọ̀lọ́pọ̀ tí a tẹ́ sí ibi méjì tí ó yàtọ̀ gan-an yóò kùnà nínú ìdánwò "pàdánù ibi kan kí o sì tẹ̀síwájú nínú ìfọwọ́sí", nítorí pé ẹ̀gbẹ́ méjèèjì yóò ní láti di ìdajì àwọn ìdìbò mọ́ ní àkókò kan náà.

Tábìlì tí ó wà nísàlẹ̀ ni ọ̀nà tí ó yá jù láti rí àwọn ìkùnà tí ìwọ ti ra gangan. Ka ìlà kọ̀ọ̀kan báyìí: bí gbogbo ìlà yìí bá sọnù lónìí alẹ́, ṣé àwọn tí ó yè lè ṣì fi ìfọwọ́sí kíkọ kan?

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

Ìdí tí ọ̀nà abẹ́ ilẹ̀ kò fi ní fi ìdìbò kún rárá

VPN jẹ́ gbígbé, kì í ṣe ẹ̀yà. Ó lè jẹ́ kí olùdìbò tí ó wà ní ọ̀nà jìnnà dé, ó sì lè yí pípín padà sí ohun tí ó dàbí àkókò ìdúró lọ́ra, ìyẹn sì ni gbogbo ìkópa rẹ̀ nínú ìpínlórí. Ohun tí ó ń kún ni ìnáwó, nítorí pé ìfọwọ́sí kọ̀ọ̀kan gbọ́dọ̀ kọjá ọ̀nà, etcd sì ń san ìrìn àjò lọ àti padà yẹn nínú àwọn kíkọ tí ó kan àkọsílẹ̀ raft. Ọ̀nà tí ó ń gbọ̀n jẹ́ kí àtúnsẹ̀dá di ìgbìyànjú àti ìdìbò.

Pípín ni ibi tí àwọn ènìyàn ti ń retí iṣẹ́ àrà, nítorí náà jẹ́ pípé nípa wọn. Bí ọ̀nà bá já nígbà tí aṣáájú àtijọ́ jókòó ní ẹ̀gbẹ́ olùdìbò kan, ẹ̀gbẹ́ yẹn kò lè fi ìfọwọ́sí, aṣáájú yóò sì kúrò níbi ipò nígbà tí àkókò ìdìbò bá tán, nígbà tí ẹ̀gbẹ́ olùdìbò méjì yóò yan aláròpo. Ìtọ́nà etcd nípa àwọn ọ̀nà ìkùnà ṣàlàyé ìhùwàsí náà ní kedere: iṣẹ́ tí ó ń lọ lọ́wọ́ ní ẹ̀gbẹ́ ọ̀pọ̀lọ́pọ̀, kò sí ẹgbẹ́ kejì tí a lè kọ sínú ní ẹ̀gbẹ́ tí a ti yà sọ́tọ̀.

Pinnu irú ìdádúró tí ìwọ ń ra

Méjì àti ọ̀kan jẹ́ àpẹẹrẹ tí ó tọ́ nígbà tí Ibi A jẹ́ ibi àkọ́kọ́ tí ìwọ sì gbà pé pípàdánù rẹ̀ túmọ̀ sí pípàdánù àwọn kíkọ ìṣàkóso títí ẹnìkan yóò fi ṣe ohun kan. Ohun tí ó sọ ọ́ di àléébù ni fífi ìpinnu yẹn sílẹ̀ lọ́nà àìkọ́. Kọ ọ́ sínú runbook: ibi wo ni ìṣàkóso rẹ yóò yè kúrò, àti ohun tí olùṣe ń ṣe nígbà tí ibi kejì bá kú ní 03:00.

Bí ìbéèrè bá jẹ́ "ibi kankan lè kùnà" ní àkókò yẹn, ibi tí a gbé wọn sí gbọ́dọ̀ di ọ̀pọ̀lọ́pọ̀ mọ́ ní ibi kọ̀ọ̀kan, àwọn olùdìbò mẹ́ta lórí ibi méjì kò sì lè ṣe bẹ́ẹ̀. Ìwọ yálà ń fi ẹkùn kẹta tí ó yàtọ̀ gan-an kún — ẹkùn kékeré ní olùpèsè mìíràn ń ṣiṣẹ́ bí ọ̀nà síbẹ̀ bá dúró ṣinṣin — tàbí o pín sí ẹgbẹ́ méjì pẹ̀lú etcd ọ̀tọ̀ kí o sì gba ìnáwó iṣẹ́ pípín yẹn. Kò sí ọ̀nà kúkúrú ẹlẹ́rìí kankan tí ó yẹra fún èyí: etcd kò ní ẹ̀yà adájọ́ fẹ́ẹ̀rẹ́, nítorí náà olùdìbò kẹta jẹ́ ẹ̀yà kíkún pẹ̀lú àwọn ìbéèrè rẹ̀ fún disiki, ìrántí àti nẹ́tíwọ́kì. Yíya àpótí tí a kọ "ẹlẹ́rìí" sí lórí àwòrán kò dá ẹlẹ́rìí.

Ìpínlórí kì í ṣe bí iṣẹ́

Ìpínlórí etcd ń pa server API mọ́ ní ipò tí ó lè gba kíkọ, ìyẹn sì ni gbogbo ohun tí ó ń pa mọ́. Àwọn àyẹ̀wò ìlera ẹ̀rọ ìwọ̀ntúnwọ̀n ẹrù, ingress, ìdé CNI kọjá ọ̀nà abẹ́ ilẹ̀, àwọn ẹkùn ìsopọ̀ ìwọ̀n àti àtúnsẹ̀dá ohun èlò kọ̀ọ̀kan nílò ìdáhùn tirẹ̀. Ẹgbẹ́ lè di ọ̀pọ̀lọ́pọ̀ tí ó mọ́ mọ́ kí ó sì má ṣe pèsè ohun èlò kankan fún àwọn olùlò.

Lẹ́yìn náà jẹ́rìí sí ipò ẹ̀yà tí ìwọ rò pé ìwọ ní, nítorí àwọn àwòrán ń lọ:

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

Fi àkójọ àwọn ẹ̀yà wé àwòrán ibi tí a gbé wọn sí. Bí ẹ̀yà méjì bá yanjú sí ẹ̀rọ kan náà tàbí rack kan náà, àwòrán ni ó lòdì, kì í ṣe ẹgbẹ́, pípínpadà ìwọ̀n yí àwòrán tí ó lòdì kò sì ra àfidáwọ́lé tí ó wọ́n jù fún ìdádúró kan náà.

Kí o tó fọwọ́ sí àpẹẹrẹ olùdìbò mẹ́ta kankan, dáhùn ìbéèrè mẹ́rin: àwọn olùdìbò mélòó ló pàdánù iná pọ̀, pípàdánù ibi wo ni ó ṣì fi ọ̀pọ̀lọ́pọ̀ sílẹ̀, ibo ni aṣáájú jókòó nígbà tí ọ̀nà abẹ́ ilẹ̀ bá já, àti kí ni ibi tí ó yè lè ṣì ṣe. "Kò dájú" lórí ọ̀kan nínú wọn túmọ̀ sí pé ẹgbẹ́ kò tíì wà ní àkókò gíga. Ẹ̀rọ mẹ́ta ni wọ́n tí ó ní oríire.

Àwọn àpilẹ̀kọ tó jọra