Ikki saytli Kubernetes klasteriga uchta etcd saylovchisi kerakmi?
Ikki VPN sayti bo'ylab uchta boshqaruv tekisligi tuguni katta sayt o'chganda hali ham kvorumni yo'qotadi. Haqiqiy etcd saylovchilarini sanang va qaysi yo'qotishga chidashingizni tanlang.
Uchta boshqaruv tekisligi virtual mashinasi yomon tundan omon qolishning uchta imkoniyatidek tuyuladi. Ammo unday emas, va bu ikki ishonch orasidagi masofa tartibli uch tugunli loyihani bitta bino elektr quvvatini yo'qotganda yozuvlarni qabul qilishni to'xtatadigan klasterga aylantiradi. Saytlar orasidagi VPN aloqasi mashinalarni bir-biriga yetib boradigan qiladi va muammoni hal qilish o'rniga yashiradi. Ovozlar har bir etcd a'zosi bo'yicha sanaladi, va o'sha a'zolardan ikkitasi hali ham bitta kommutator, bitta UPS va bitta liniya orqasida o'tirishi mumkin.
Uchta boshqaruv tuguni, bitta nosozlik domeni
Siz kubectl get nodes ni ishga tushirasiz, uchta boshqaruv tekisligi yozuvini ko'rasiz va klasterni yuqori mavjud deb qayd etasiz. Bu raqam rejalashtiriladigan sig'imni tavsiflaydi, omon qolishni emas. Tashqi etcd'siz saqlanadigan kubeadm ichida har bir boshqaruv tuguni a'zoni ham joylashtiradi, shuning uchun uchta tugun haqiqatan ham uchta saylovchi beradi. O'sha saylovchilar mustaqil ravishda ishdan chiqadimi, bu tugunlar ro'yxati javob bera olmaydigan alohida savol.
Bitta gipervizorda ikkita VM, bitta quvvat manbasida ikkita rack, bitta ISP dan ikkita liniya: har bir juftlik ikkita xost nomini kiygan bitta domendir. Joylashuvni yozing va har bir saylovchi nimani bo'lishishini belgilang — gipervizor, PDU, rack ustidagi kommutator, saqlash massivi, NAT qurilmasi, VPN konsentratori. So'ng qog'ozda har bir umumiy obyektni olib tashlang va qolgan ovozlarni qayta sanang. Bitta ishdan chiqqan xost tufayli ikkita saylovchini yo'qotadigan klaster boshidan beri bitta saylovchili klaster edi; hech kim unga bu savolni hali bermagan.
Ikki sayt bo'linishi nimaga chiday oladi va nimaga olmaydi
Uchta saylovchi ikki saytga ikki va bir qilib joylashtirilsa, ikkinchi sayt yo'qolganda katta tomon kvorumni saqlaydi, bitta saylovchili tomon esa hech qachon saqlamaydi. Bu assimetriya arifmetika, sozlash emas. Aynan ikkita mustaqil sayt bo'ylab tarqalgan ko'pchilikka asoslangan har qanday etcd klasteri "istalgan saytdan ayril va tasdiqlashda davom et" sinovidan o'tmaydi, chunki ikkala tomon bir vaqtda ovozlarning yarmidan ko'pini ushlab turishi kerak bo'lardi.
Quyidagi jadval qaysi nosozliklarni haqiqatan sotib olganingizni ko'rishning eng tez yo'li. Har bir qatorni shunday o'qing: bugun kechqurun bu butun qator yo'qolsa, omon qolganlar hali ham yozuvni tasdiqlay oladimi?
| 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 |
Nima uchun tunnel hech qachon ovoz qo'shmaydi
VPN — bu transport, a'zo emas. U uzoqdagi saylovchini yetib boradigan qilib qo'yishi mumkin va bo'linishni sekin vaqt chegarasiga o'xshab ko'rinadigan narsaga aylantirishi mumkin, va bu uning kvorumga qo'shadigan butun hissasi. U qo'shadigan narsa — xarajat, chunki har bir tasdiqlash aloqadan o'tishi kerak va etcd raft jurnaliga tegadigan yozuvlarda bu borish-kelishni to'laydi. Tebranadigan yo'l replikatsiyani qayta urinishlar va saylovlarga aylantiradi.
Bo'linishlar odamlar sehr kutadigan joy, shuning uchun ular haqida aniq bo'ling. Agar eski rahbar bitta saylovchili tomonda o'tirganda aloqa uzilsa, bu tomon tasdiqlay olmaydi va saylov muddati tugagach rahbar iste'foga chiqadi, ikki saylovchili tomon esa o'rinbosarni saylaydi. etcd ning nosozlik rejimlari bo'yicha qo'llanmasi xatti-harakatni sodda tarzda tavsiflaydi: ko'pchilik tomonida davom etayotgan xizmat, izolyatsiya qilingan tomonda ikkinchi yoziladigan klaster yo'q.
Qaysi uzilishni sotib olayotganingizni hal qiling
Ikki qo'shuv bir — A sayti asosiy bo'lganda va uni yo'qotish kimdir chora ko'rmaguncha boshqaruv tekisligi yozuvlarini yo'qotish deganini qabul qilganda qonuniy loyiha. Uni nuqsonga aylantiradigan narsa — bu qarorni yashirin qoldirish. Uni runbook'ga yozing: boshqaruv tekisligingiz qaysi saytdan omon qoladi va ikkinchi sayt 03:00 da o'chganda operator nima qiladi.
Agar talab o'rniga "istalgan sayt ishdan chiqishi mumkin" bo'lsa, joylashuv har bir saytda ko'pchilikni ushlab turishi kerak va ikki saytda uchta saylovchi buni qila olmaydi. Siz yo haqiqatan mustaqil uchinchi domen qo'shasiz — boshqa provayderdagi kichik hudud u yerga yo'l barqaror bo'lsa ishlaydi — yo alohida etcd bilan ikki klasterga bo'linasiz va bu bo'linishning operatsion xarajatini qabul qilasiz. Hech qanday guvoh yorlig'i bu yo'ldan qochira olmaydi: etcd'da yengil hakam a'zo yo'q, shuning uchun uchinchi saylovchi o'z disk, xotira va tarmoq talablariga ega to'liq a'zodir. Diagrammada "guvoh" deb yozilgan quti chizish guvoh yaratmaydi.
Kvorum xizmat bilan bir xil emas
etcd kvorumi API serverini yozuvlarni qabul qilishga qodir ushlab turadi, va ushlab turadigan narsa shu xolos. Yuk muvozanatlagichning sog'liq tekshiruvlari, ingress, tunnel bo'ylab CNI yetib borishi, hajm biriktirish zonalari va ilova replikatsiyasi har biri o'z javobiga muhtoj. Klaster toza ko'pchilikka ega bo'lishi va baribir foydalanuvchilarga foydali hech narsa taqdim etmasligi mumkin.
So'ng sizda bor deb o'ylagan a'zolikni tasdiqlang, chunki diagrammalar siljiydi:
kubectl -n kube-system get pods -l component=etcd -o wide
kubectl get endpoints kube-apiserver -n default
etcdctl member list -w table
A'zolar ro'yxatini joylashuv chizmasi bilan solishtiring. Agar ikki a'zo bir xil xostga yoki bir xil rackga yechilsa, xato klasterda emas, chizmada, va noto'g'ri topologiya atrofida o'lchamni o'zgartirish faqat o'sha uzilishning qimmatroq versiyasini sotib oladi.
Har qanday uch saylovchili loyihani ma'qullashdan oldin to'rt savolga javob bering: qancha saylovchi birga quvvatdan ayriladi, qaysi saytning yo'qolishi hali ko'pchilikni qoldiradi, tunnel yiqilganda rahbar qayerda o'tiradi va omon qolgan sayt hali nima qila oladi. Ulardan birortasiga "ishonchim komil emas" deyish klaster hali yuqori mavjud emasligini bildiradi. Bu omadi kelgan uchta mashina.