A oes angen tri phleidleisiwr etcd ar glwstwr Kubernetes dwy safle?
Mae tri nod rheolydd ar draws dwy safle VPN yn dal i golli cworwm pan fydd y safle mwyaf yn diffodd. Cyfrifwch bleidleiswyr etcd go iawn a dewiswch y golled rydych yn goroesi.
Mae tri VM rheolydd yn teimlo fel tair cyfle i oroesi noson wael. Nid ydynt, a'r pellter rhwng y ddau gred yw'r hyn sy'n troi dyluniad taclus tri nod yn glwstwr sy'n stopio derbyn ysgrifau pan fydd un adeilad yn colli pŵer. Mae dolen VPN rhwng y safleoedd yn gwneud y peiriannau'n gyrraeddadwy i'w gilydd ac yn cuddio'r broblem yn hytrach na'i thrwsio. Cyfrifir pleidleisiau fesul aelod etcd, a gall dau o'r aelodau hynny o hyd eistedd y tu ôl i un swits, un UPS ac un uwchlwythiad.
Tri nod rheolydd, un parth methiant
Rydych yn rhedeg kubectl get nodes, yn gweld tri chofnod rheolydd ac yn ffeilio'r clwstwr fel un ar gael iawn. Mae'r cyfrif hwnnw'n disgrifio capasiti trefniadwy, nid goroesi. Mewn kubeadm a gedwir heb etcd allanol, mae pob nod rheolydd hefyd yn cynnal aelod, felly mae tri nod yn rhoi tri phleidleisiwr i chi mewn gwirionedd. A yw'r pleidleiswyr hynny'n methu'n annibynnol, mae hynny'n gwestiwn ar wahân na all y rhestr nodau ei ateb.
Dau VM ar un hypervisor, dau rac ar un cyflenwad pŵer, dwy uwchlwythiad gan un ISP: pob pâr yw un parth sy'n gwisgo dau enw gwesteiwr. Ysgrifennwch y lleoliad a nodi beth mae pob pleidleisiwr yn ei rannu — hypervisor, PDU, swits brig rac, arae storio, dyfais NAT, crynodydd VPN. Yna tynnwch bob gwrthrych a rennir ar bapur ac ailgyfrifwch y pleidleisiau sy'n weddill. Mae clwstwr sy'n colli dau bleidleisiwr i un gwesteiwr sydd wedi methu wedi bod yn glwstwr un pleidleisiwr drwy'r amser; nid oedd neb wedi gofyn y cwestiwn iddo eto.
Beth all hollt dwy safle ei oroesi a beth na all
Pan osodir tri phleidleisiwr yn ddau ac un ar draws dwy safle, mae'r ochr fwyaf yn cadw cworwm pan ddiflanna'r safle arall ac nid yw'r ochr un pleidleisiwr byth. Rhifyddeg yw'r anghymesuredd hwnnw, nid tiwnio. Mae unrhyw glwstwr etcd sy'n seiliedig ar fwyafrif ac sy'n wasgaru dros union ddwy safle annibynnol yn methu'r prawf "colli naill safle a pharhau i gyflawni", oherwydd byddai'n rhaid i'r ddwy ochr ddal mwy na hanner y pleidleisiau ar yr un pryd.
Y tabl isod yw'r ffordd gyflymaf o weld pa fethiannau wnaethoch eu prynu mewn gwirionedd. Darllenwch bob rhes felly: os yw'r rhes gyfan hon yn diflannu heno, a all y rhai sy'n goroesi gyflawni ysgrif o hyd?
| 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 |
Pam nad yw'r twnnel byth yn ychwanegu pleidlais
Trafnidiaeth yw VPN, nid aelod. Gall wneud pleidleisiwr o bell yn gyrraeddadwy a gall droi hollt yn rhywbeth sy'n edrych fel goramser araf, a dyna gyfan ei gyfraniad at gworwm. Yr hyn y mae'n ei ychwanegu yw cost, oherwydd bod yn rhaid i bob cyflawniad groesi'r ddolen ac mae etcd yn talu'r daith gron honno ar ysgrifau sy'n cyffwrdd â'r cofnod raft. Mae llwybr sy'n fflapio yn troi atgynhyrchu yn ailgeisiadau ac etholiadau.
Yr holltau yw'r lle y mae pobl yn disgwyl hud, felly byddwch yn fanwl amdanynt. Os yw'r ddolen yn gollwng tra bod yr hen arweinydd yn eistedd ar yr ochr un pleidleisiwr, ni all yr ochr honno gyflawni ac mae'r arweinydd yn camu i lawr unwaith y bydd goramser yr etholiad yn dod i ben, tra bod yr ochr dau bleidleisiwr yn ethol olynydd. Mae canllaw etcd ar foddau methiant yn disgrifio'r ymddygiad yn blaen: gwasanaeth parhaus ar yr ochr fwyafrif, dim ail glwstwr y gellir ysgrifennu iddo ar yr ochr ynysig.
Penderfynwch pa golled rydych yn ei phrynu
Mae dau plws un yn ddyluniad dilys pan fo safle A yn gynradd ac rydych yn derbyn bod ei golli yn golygu colli ysgrifau'r rheolydd nes bod rhywun yn gweithredu. Yr hyn sy'n ei droi'n ddiffyg yw gadael y penderfyniad hwnnw'n ymhlyg. Rhowch ef yn y runbook: pa safle mae eich rheolydd yn goroesi, a beth mae gweithredwr yn ei wneud pan fydd y safle arall yn diffodd am 03:00.
Os mai'r gofyniad yw "gall naill safle fethu", rhaid i'r lleoliad ddal mwyafrif ym mhob safle, ac ni all tri phleidleisiwr dros ddwy safle wneud hynny. Naill ai rydych yn ychwanegu trydydd parth gwirioneddol annibynnol — mae rhanbarth bach mewn darparwr arall yn gweithio os yw'r llwybr iddo'n sefydlog — neu'n hollti'n ddau glwstwr ag etcd ar wahân ac yn derbyn cost gweithredol yr hollt hwnnw. Nid oes unrhyw llwybr byr tyst yn osgoi hyn: nid oes gan etcd aelod gymedrolwr ysgafn, felly mae trydydd pleidleisiwr yn aelod llawn â'i ofynion ei hun am ddisg, cof a rhwydwaith. Nid yw tynnu blwch wedi'i labelu'n dyst ar y diagram yn creu un.
Nid yw cworwm yr un peth â gwasanaeth
Mae cworwm etcd yn cadw'r gweinydd API yn gallu derbyn ysgrifau, a dyna'r cyfan y mae'n ei gadw. Mae gwiriadau iechyd y balancer llwyth, ingress, cyrhaeddedd CNI ar draws y twnnel, parthau atodi cyfrolau ac atgynhyrchu cymwysiadau i gyd angen eu hateb eu hunain. Gall clwstwr ddal mwyafrif glân ac o hyd beidio â chynnig dim defnyddiol i ddefnyddwyr.
Yna cadarnhewch yr aelodaeth rydych chi'n credu sydd gennych, oherwydd mae diagramau'n drifftio:
kubectl -n kube-system get pods -l component=etcd -o wide
kubectl get endpoints kube-apiserver -n default
etcdctl member list -w table
Cymharwch y rhestr aelodau â'r llun lleoliad. Os yw dau aelod yn datrys i'r un gwesteiwr neu'r un rac, y llun sydd o'i le yn hytrach na'r clwstwr, ac nid yw ailfeintio o amgylch topoleg gam yn prynu dim ond fersiwn ddrutach o'r un golled.
Cyn arwyddo unrhyw ddyluniad tri phleidleisiwr, atebwch bedair cwestiwn: faint o bleidleiswyr sy'n colli pŵer gyda'i gilydd, pa golled safle sy'n dal i adael mwyafrif, ble mae'r arweinydd yn eistedd pan fydd y twnnel yn gollwng, a beth all y safle sy'n goroesi ei wneud o hyd. Mae "ddim yn siŵr" ar unrhyw un ohonynt yn golygu nad yw'r clwstwr yn dal ar gael iawn eto. Tri pheiriant yw'r rhain sydd wedi bod yn lwcus.