Clustering¶
Opomba
Ta funkcija je trenutno tehnični predogled z naslednjimi začasnimi omejitvami:
Če se gruča izgubi (izgubi se kvorum), je edini način obnovitve tovarniška ponastavitev + obnovitev. Pogosto ustvarjajte varnostne kopije. Prihodnje izdaje bodo vključevale sredstva za obnovitev podatkov na disku.
Aktivna/pasivna nastavitev za podporo gručam z dvema vozliščema, bodisi z uporabo sistema etcd Learner ali Mirror, še ni na voljo.
Sistemski čas med vozlišči je treba za zdaj sinhronizirati ročno. Prihodnja izdaja bo vključevala samodejno sinhronizacijo ure.
NetHSM od različice 4.0 naprej podpira grozdenje za neposredno sinhronizacijo podatkov med več NetHSM. To omogoča visoko pogostost generiranja ključev, visoko razpoložljivost in izravnavo obremenitve. Grozd NetHSM temelji na etcd, ki uporablja algoritem soglasja Raft za močno skladnost. To zagotavlja, da so podatki (npr. ključi) v vseh enotah NetHSM vedno pravilni.
Pred vzpostavitvijo gruče NetHSM se seznanite s to tehnologijo in njenimi omejitvami, da se izognete naključnemu izpadu in izgubi podatkov. Poleg tega dokumenta si lahko ogledate tudi dokumentacijo etcd.
Operational Redundancy¶
Vozlišče bomo imenovali NetHSM, za katerega se pričakuje, da bo del gruče. Grozd vozlišč N bo deloval, dokler bodo vsaj (N/2)+1 vozlišča zdrava in dosegljiva. To minimalno število zdravih in dosegljivih vozlišč se imenuje kvorum.
To pomeni naslednje scenarije.
Eno vozlišče je v okvari, kvorum pa je še vedno dosežen¶
Če v gruči s tremi vozlišči eno vozlišče odpove (odpove ali postane nedosegljivo zaradi omrežnih razmer), ostali dve vozlišči nadaljujeta z delom in servisirata zahteve.
Če je okvarjeno vozlišče še vedno zdravo (npr. je šlo le za omrežno težavo), med izolacijo ne bo delovalo (niti samo za branje).
Če se vozlišče obnovi, se ponovno sinhronizira s preostalimi deli gruče in ponovno postane operativno, ne da bi izgubilo podatke.
Če se ne obnovi, ga je treba odstraniti iz gruče (glejte naslednji razdelek), ga tovarniško ponastaviti in postopek združevanja ponoviti od začetka.
Zgodi se delitev omrežja in kvorum je še vedno dosežen¶
To je le posplošitev prejšnjega scenarija. V gruči s petimi vozlišči, kjer so npr. 3 vozlišča na fizični lokaciji A in 2 vozlišči na drugi lokaciji B, bi omrežni problem, ki bi izoliral vozlišči A in B, pomenil naslednje:
Tri vozlišča na lokaciji A izpolnjujejo kvorum (v tem primeru 3), zato še naprej delujejo.
Dve vozlišči na lokaciji B ne izpolnjujeta kvoruma (še vedno 3), zato bosta prenehali delovati (tudi samo za branje).
Če je težava z omrežjem odpravljena, se bosta dve vozlišči brez težav pridružili ostalim trem vozliščem.
Kvorum je trajno izgubljen¶
Zaradi napake, ki povzroči izgubo kvoruma vseh podmnožic gruče, bodo gruča in njeni podatki popolnoma izgubljeni, razen če se napaka odpravi. V tem primeru je treba vozlišča tovarniško ponastaviti in obnoviti varnostno kopijo.
To se lahko zgodi na primer, če v gruči z dvema vozliščema (kjer je kvorum 2) odpove eno vozlišče. V tem primeru odpovedanega vozlišča ni mogoče naknadno odstraniti iz gruče, saj preostalo zdravo vozlišče že ne deluje, ker je izgubilo kvorum.
Zato je priporočljivo, da je v gruči vedno liho število vozlišč in da pogosto izdelujete varnostne kopije.
Da bi bilo jasno, začasno izgubi kvorum (na primer, če ponovno zaženete vsa vozlišča v gruči skupaj ali če so vozlišča izolirana zaradi začasne okvare omrežja), ni težava: ko se ponovno poveže dovolj vozlišč (brez ročnega ponovnega povezovanja), da se doseže kvorum, bo gruča nadaljevala z običajnim delovanjem. Ročno ukrepanje bo potrebno le pri trajnih okvarah, kot so omrežne razdelitve, napačna konfiguracija omrežja, težave z avtentikacijo ali okvare strojne opreme.
Za več informacij si oglejte POGOSTA VPRAŠANJA in odgovore etcd.
Grozd z dvema vozliščema¶
Aktivna/pasivna gruča z dvema vozliščema še ni podprta in bo dodana v prihodnji različici. Priporočamo uvedbo tretjega vozlišča, bodisi tretjega NetHSM bodisi „priče“ etcd, ki bi lahko delovala v katerem koli gostitelju. Glejte naslednji razdelek „Priča“.
Priča¶
Zaradi narave združevanja v gruče s etcd je zanesljivost toliko večja, kolikor več je vozlišč v gruči. Kot je pojasnjeno v razdelku Operativna redundanca, bi bilo najbolje, da bi imele gruče vsaj tri vozlišča, da bi imeli prostor za odpoved, saj bo gruča z dvema vozliščema v celoti odpovedala, če odpove samo eno.
Vendar je funkcija zasnovana tako, da vam za doseganje stabilnega števila vozlišč v gručo ni treba dodati celotne prave naprave NetHSM. Namesto tega lahko sami namestite in dodate vozlišče „priče“. Takšno vozlišče je samo primerek etcd, ki teče na izbranem računalniku (ali v vsebniku) in je povezan s skupnostjo. Prave naprave v gruči ga bodo prepoznale kot navadno vozlišče in bo prejemalo vse podatke in posodobitve iz naprav (seveda pa z njim ne boste mogli izvajati nobenih operacij HSM - samo shranjuje podatke).
Security Considerations¶
Vozlišče priče (ali kdor koli z dostopom do njega) ima neposreden dostop do zaledja za shranjevanje vseh vozlišč v gruči (npr. vse vnose in ustrezne vrednosti lahko izpišete s etcdctl get "/" "0").
Z izjemo različice konfiguracije (/config/version, ki mora biti vedno „1“) so vse vrednosti šifrirane (s ključem naprave za vrednosti, specifične za vozlišče, ali ključi domene za druge vrednosti), kar zagotavlja zaupnost občutljivih podatkov.
Vendar upoštevajte, da lahko zlonamerno vozlišče:
zapisati smeti kot vrednost za kateri koli vnos v shrambo, zaradi česar vozlišča ne bodo uspela dešifrirati (kar lahko pri nekaterih sistemskih vnosih povzroči sesutje).
seznam imen vnosov, kot so uporabniki, imenski prostori in ključi, ki so lahko občutljivi.
Creating a Cluster¶
Vsaka gruča se na začetku začne z enim vozliščem. Nova vozlišča se grozdu pridružijo eno za drugim.
Preparing Nodes¶
Omrežni promet med vozlišči je šifriran in overjen z njihovim potrdilom TLS.
Vsa vozlišča, ki naj bi bila del iste gruče, morajo najprej namestiti skupno overitelja potrdil (CA), ki jim bo omogočal preverjanje, ali so druga vozlišča legitimna.
V nadaljevanju predpostavljamo, da so vsa vozlišča sveže zagotovljena in delujejo.
Networking¶
Nodes must first be reconfigured with their expected final network configuration using the /config/network endpoint (refer to the API documentation).
Ustvarjanje in namestitev CA¶
Uporabniki naj CA ustvarijo na lasten način in v skladu s svojimi operativnimi omejitvami ter se prepričajo, da omogoča vsaj uporabo ključa keyCertSign.
Minimalni CA lahko na primer ustvarite s openssl:
$ openssl genrsa -out CA.key 2048 # create a key
$ openssl req -x509 -new -nodes -key CA.key -sha256 -days 1825 -out CA.pem -addext keyUsage=critical,keyCertSign
Ta CA mora biti zdaj nameščen v vsakem vozlišču.
To do this, first generate a Certificate Signing Request (CSR) from the node with the /config/tls/csr.pem endpoint (refer to the API documentation).
Opomba
Za pravilno avtentikacijo vozlišč zaledni sistem gručenja (etcd) pričakuje, da ima vsako vozlišče potrdilo z ustrezno izpolnjenim poljem Subject Alt Names (SAN). Zlasti vozlišča, za katera se pričakuje, da bodo dosegljiva samo prek svojega IP, morajo imeti v svojem potrdilu ustrezno SAN IP. Za IP SAN se lahko zahtevajo v CSR tako, da se imeni doda predpona „IP:“, kot v openssl:
"subjectAltNames": [ "normalname.org", "IP:192.168.1.1" ]
Glede na pridobljeni CSR (imenujmo ga nethsm.csr) lahko zanj ustvarimo potrdilo, ki je pripravljeno za namestitev. Na primer z openssl:
$ openssl x509 -req -days 1825 -in nethsm.csr -CA CA.pem -copy_extensions copy \
-CAkey CA.key -out new_cert.pem -set_serial 01 -sha256
Then install the obtained new_cert.pem with the /config/tls/cert.pem endpoint (refer to the API documentation).
Končno lahko CA (CA.pem) zdaj namestite s končno točko /config/tls/cluster-ca.pem (glejte dokumentacijo API ` <https://nethsmdemo.nitrokey.com/api_docs/index.html>` __). To je mogoče šele, ko je nameščeno potrdilo TLS podpisano z njim. V nasprotnem primeru bo operacija zavrnjena.
Opomba
Ta postopek je treba ponoviti za vsako vozlišče.
Sinhronizacija ure¶
Prepričajte se, da je bilo vsako vozlišče opremljeno z natančnim sistemskim časom. Če ne, prilagodite njihove ure s končno točko /config/time.
Adding a New Node¶
Dodajanje vozlišča v gručo poteka v dveh korakih:
registracijo dodatka v gruči (prek katere koli njene članice).
sporočite novemu vozlišču, naj se pridruži
Configure a Backup Passphrase¶
Najprej se prepričajte, da je v vozlišču, ki bo uporabljeno za registracijo novega priključka, konfigurirana rezervna gesla (glejte dokumentacijo API končne točke /config/backup-passphrase).
Registracija novega vozlišča¶
Opozorilo
Z registracijo vozlišča se v gručo takoj vključi novo vozlišče in spremeni prag kvoruma, čeprav se vozlišče dejansko še ni pridružilo. Zaradi tega lahko obstoječa vozlišča ne delujejo, dokler se novo vozlišče dejansko ne pridruži. Oglejte si dokumentacijo API ` <https://nethsmdemo.nitrokey.com/api_docs/index.html>` __ in razdelek Operational Redundancy tega dokumenta.
Pri roki imejte naslov IP vozlišča, ki se bo pridružilo. Polni URL (v terminologiji etcd imenovan tudi peer URL ) tega vozlišča bo https://<IP_of_node>:2380 (npr. https://192.168.1.1:2380). Vrata morajo biti 2380, zato se prepričajte, da požarni zid med vozlišči dovoljuje promet TCP na teh vratih.
Pravilnost naslova URL lahko preverite tako, da na vozlišču, ki naj bi se pridružilo, pokličete GET /cluster/members. Ta mora navesti samo enega člana: samega sebe.
Nato registrirajte ta pričakovani naslov URL v katerem koli obstoječem vozlišču gruče (če še nimate gruče, to storite v NetHSM, ki bo služil kot začetno vozlišče gruče). To storite z uporabo končne točke POST /cluster/members (glejte dokumentacijo API ` <https://nethsmdemo.nitrokey.com/api_docs/index.html>` __) in ji posredujete telo JSON, ki vsebuje naslov URL.
Če je postopek uspešen, se vrne telo JSON obrazca:
{
"members": [
{
"name": "",
"urls": [
"https://172.22.1.3:2380"
]
},
{
"name": "9ZVNM2MNWP",
"urls": [
"https://172.22.1.2:2380"
]
}
],
"joinerKit": "eyJiYWNrdXBfc2FsdCI6IkVlUzNPOEhHSEc5NnlNRktrdG1NZmc9PSIsInVubG9ja19zYWx0IjoiU3phMkEvYW13NlhxVWsrdHZMMmFubm5SZFlWd2ZQUjdpZ3IxK1RSdTdVaU14dmh3d0x2NWIvYVNkY2c9IiwibG9ja2VkX2RvbWFpbl9rZXkiOiIyMnNGVlkyelhQUVZ6S1pQenI3MmkwTk1WM3lmQ2k5dGwzeDhUbGtuOXM0WjFOd3JoZkRQTFZIVHp1WVl0YkQxaVZCMlovV3JHUHJlMXlwN0t4U0w4WkxjY2ZUTmUzcFg0WXE4YXNlY0wwREhXNGlIaXlPMlZnPT0ifQ=="
}
ki vsebuje informacije, potrebne za pridružitev novega vozlišča k gruči. Zlasti vsebuje seznam vseh članov gruče (pri čemer je član s praznim imenom novi član). Vsebuje tudi ključ domene, ki je šifriran z gesli za odklepanje in rezervno geslo - zato je treba pred tem konfigurirati rezervno geslo.
Odziv shranite za naslednji korak.
Dejanska pridružitev gruči¶
Vzemite odgovor iz zadnjega koraka in mu dodajte polje backupPassphrase, ki vsebuje rezervno geslo vozlišča, na katerem je bil registriran novi član, ter te podatke prenesite v klic POST /cluster/join (glejte dokumentacijo API ` <https://nethsmdemo.nitrokey.com/api_docs/index.html>` __) v vozlišču, ki naj bi se mu pridružil.
Ob predpostavki, da sta gruča in vozlišče dosegljiva, se izvede dejanska pridružitev, pri čemer se izbrišejo podatki novega udeleženca, da se njegovo stanje sinhronizira s stanjem gruče.
Odvisno od razmer v omrežju in gruči lahko ta operacija traja nekaj deset sekund. Če ta operacija takoj propade (npr. gruča ni bila dosegljiva ali avtentikacija ni uspela), stanje tega vozlišča ne bo izbrisano in pridružitev bo vrnjena. Vendar je takoj, ko je prva pridružitev uspešna, ta operacija dokončna in jo je mogoče razveljaviti le s tovarniško ponastavitvijo.
Če je pridružitev uspešna, se vozlišče znajde v stanju Locked in ga je treba odkleniti z geslom za odklepanje vozlišča, ki je bilo uporabljeno za registracijo. Kasneje je mogoče geslo za odklepanje spremeniti (gesla za odklepanje ostanejo specifična za posamezno vozlišče in se ne delijo med vozlišči).
Opomba
Če je podatkovna zbirka gruče velika ali če je gruča zasedena, lahko traja nekaj časa, da novi član v celoti sinhronizira svoje stanje tudi po uspešni združitvi. V tem času so lahko vsa vozlišča (vključno z novim članom) manj odzivna ali neodzivna. Zlasti novi priključek lahko na začetku vrne napake, ko ga na primer poskušate odkleniti. V tem primeru mu dajte nekaj časa in poskusite znova.
Adding a Witness Node¶
Prepare a Witness¶
Potrebovali boste okolje, v katerem je na voljo etcd v3.6, z naslovom IPv4 (vsaj), ki je dosegljiv drugim članom vaše gruče. Dovoljen mora biti promet TCP na vrata 2380 in z njih.
Ustvarite prazen imenik, v katerem bo etcd hranil svoje podatke, in zapišite njegovo pot (mi bomo uporabili /var/etcd/data). Zagotovite, da ima uporabnik, ki bo zagnal proces, dovoljenje za branje in pisanje v imenik.
V računalnik prenesite potrdilo CA, ki se uporablja za preverjanje pristnosti vozlišč v gruči. Ustvariti bi ga morali v razdelku Ustvarjanje in namestitev CA. Shranili ga bomo v /var/etcd/CA.pem.
Nato boste morali ustvariti potrdilo za pričo in ga podpisati s CA, da bo lahko komunicirala s svojimi vrstniki. To lahko storite na primer prek openssl:
# Create a key
$ openssl genrsa -out witness.key 2048
# Create a CSR with a SAN that corresponds to the witness's IP or hostname
$ openssl req -new -sha256 -key own.key -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=witness" \
-addext "subjectAltName=IP:172.22.1.3" --out witness.csr
# Sign it
$ openssl x509 -req -days 1825 -in witness.csr -CA CA.pem -copy_extensions copy \
-CAkey CA.key -out witness.pem -set_serial 01 -sha256
Dobljene witness.key in witness.pem shranite tudi v /var/etcd.
Register Witness to Cluster¶
Sledite običajnim navodilom iz poglavja Registering a New Node (Registracija novega vozlišča), da obstoječi gruči sporočite dodajanje novega člana z navedenim(-i) naslovom(-i) URL.
Zapišite odgovor grozda: vsebovati mora seznam članov grozda in komplet za pridružitev (tega dela ne boste potrebovali).
Configure etcd¶
Za razliko od naprav NetHSM, ki samodejno izberejo ime vozlišča (z uporabo ID naprave), morate izbrati ime za vsako dodano pričo, pri tem pa poskrbite, da so imena edinstvena. V naslednjih primerih bomo uporabili ime „witness1“.
Z odgovorom NetHSM za registracijo priče pripravite spremenljivke obrazca:
export ETCD_NAME="witness1"
export ETCD_DATA_DIR="/var/etcd/data"
export ETCD_INITIAL_CLUSTER="peer1=url1,peer1=url2,peer2=url1,peer2=url2,..."
export ETCD_INITIAL_ADVERTISE_PEER_URLS="my_url1,my_url2,..."
Ob predpostavki, da je odgovor NetHSM shranjen v datoteki response.json, lahko zadnji dve spremenljivki ustvarite samodejno z naslednjimi izrazi jq:
export ETCD_INITIAL_CLUSTER=$(jq --raw-output '[.members[] | ["\(if .name == "" then "witness1" else .name end)=\(.urls[])"]] | flatten | join(",")' < response.json)
export ETCD_INITIAL_ADVERTISE_PEER_URLS=$(jq --raw-output '.members[] | select(.name=="") | .urls | join(",")' < response.json)
Na primer, v primeru odgovora iz poglavja Registering a New Node (Registracija novega vozlišča) je na voljo:
ETCD_NAME="witness1"
ETCD_DATA_DIR="/var/etcd/data"
ETCD_INITIAL_CLUSTER="witness1=https://172.22.1.3:2380,9ZVNM2MNWP=https://172.22.1.2:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.22.1.3:2380"
Na koncu ustvarite datoteko etcd.conf.yml z uporabo datoteke s predlogo, ki je na voljo v datoteki docs/etcd_witness.conf.template:
$ envsubst < NETHSM_ROOT/docs/etcd_witness.conf.template > /var/etcd/witness.conf.yml
$ cat witness.conf.yml
Tako boste dobili datoteko z obrazcem:
name: witness1
data-dir: /var/etcd/data
log-level: warn
log-format: console
listen-peer-urls: https://0.0.0.0:2380
listen-client-urls: http://localhost:2379
initial-advertise-peer-urls: https://172.22.1.3:2380
advertise-client-urls: http://localhost:2379
initial-cluster: witness1=https://172.22.1.3:2380,9ZVNM2MNWP=https://172.22.1.2:2380
initial-cluster-state: 'existing'
peer-transport-security:
cert-file: witness.pem
key-file: witness.key
client-cert-auth: true
trusted-ca-file: CA.pem
skip-client-san-verification: true
Start etcd¶
Zagon etcd na želeni način (ročno, systemd storitev, vsebnik itd.) in ga usmerite na konfiguracijsko datoteko, ustvarjeno v prejšnjem koraku:
$ cd /var/etcd
$ etcd --config-file witness.conf.yml
Videli bi morali, da se začne, se pridruži gruči in dohiti podatke. Čez nekaj časa boste lahko preverili, ali je zdrava, z odjemalcem etcdctl:
etcdctl get /config/version
Ta ključ mora obstajati in vsebovati vrednost „1“.
Prepričajte se, da se ta proces še naprej izvaja, saj je zdaj pravi član vaše gruče. Če ga morate izključiti, ga najprej ustrezno odstranite iz gruče (glejte namensko poglavje). Če se njegov dosegljivi IP spremeni, posodobite njegov URL iz gruče.
Operating a Cluster¶
Varnostno kopiranje in obnavljanje¶
Varnostno kopiranje deluje enako kot brez gruče in ga lahko zahtevate iz katerega koli vozlišča gruče. Varnostna kopija bo ustvarila podatke za celotno gručo, vključno s polji za posamezna vozlišča (čeprav bodo ta prezrta, razen če se varnostna kopija obnovi v vozlišču, ki ni bilo dodeljeno).
Varnostno kopijo, izdelano v gruči, je mogoče obnoviti v isti gruči, tudi če so bila od takrat dodana ali odstranjena nekatera vozlišča. Takšne obnovitve, opravljene v delujočih gručah, ne bodo vplivale na konfiguracijske vrednosti (samo na ključe, uporabnike, prostore imen), tako kot vsaka druga delna obnovitev.
Obnovitev varnostne kopije v vozlišču, ki ni bilo dodeljeno, bo obnovila polja, značilna za vozlišče (kot so omrežna konfiguracija, certifikati itd.) vozlišča, ki je bilo uporabljeno za ustvarjanje varnostne kopije.
Obnovitev velike varnostne kopije lahko za nekaj časa preobremeni gručo, medtem ko vozlišče, ki izvaja obnovitev, posreduje spremembe drugim vozliščem.
Ta operacija ostaja združljiva z varnostnimi kopijami, narejenimi v prejšnjih različicah NetHSM.
Opomba
Obnovitev varnostne kopije, izdelane v drugem vozlišču Z z drugačnim domenskim ključem, v vozlišču A bo pravilno prepisala domenski ključ vozlišča A kot prej. Če pa je bil A v gruči z vozliščem B, bo vozlišče B postalo neuporabno, saj se domenski ključ Z ne bo obnovil na vozlišču B.
Z drugimi besedami, obnovitev izvajajte le v gruči, katere varnostne kopije so bile izdelane v isti gruči (čeprav so bila vozlišča od takrat morda odstranjena ali dodana). Če želite obnoviti tujo varnostno kopijo v vozlišču, ga najprej varno odstranite iz gruče, nato ga tovarniško ponastavite in obnovite varnostno kopijo.
Čisto odstranjevanje vozlišča¶
Dokler del gruče še vedno izpolnjuje kvorum, je mogoče katerega koli njenega člana uporabiti za odstranitev drugega vozlišča iz gruče, ne glede na to, ali je to vozlišče že nedosegljivo ali pa se pričakuje, da bo.
Najprej morate poznati ID vozlišča, ki ga želite odstraniti, in sicer tako, da na spletni strani GET /cluster/members naštejete vsa vozlišča in poiščete pravo.
Nato ga lahko odstranite s klicem DELETE /cluster/members/<id>. Če je bilo zadevno vozlišče še vedno zdravo, ga boste s tem izolirali od preostanka gruče in onemogočili njegovo delovanje.
Software Updates in Clusters¶
Prihodnje posodobitve bodo označene kot „varne za gruče“ (to naj bi bila večina) ali „nevarne za gruče“.
Posodobitve, ki so varne za gruče, lahko uporabite za vozlišča, ki so del gruče, ne da bi jih prej odstranili iz gruče. Vendar morate tako kot pri vseh operacijah zagotoviti, da to storite na enem vozlišču hkrati in v gruči, kjer odstranitev vozlišča ne zmanjša kvoruma (npr. če posodobitev ne uspe).
Posodobitve, ki niso varne za gručo, je treba uporabiti v izoliranih vozliščih. Skupino morate razstaviti (vozlišča odstraniti eno za drugim), tovarniško ponastaviti vsa vozlišča razen enega, posodobitev uporabiti v vsakem vozlišču, nato pa vsa ponastavljena vozlišča združiti s preostalim vozliščem.
Pred takimi operacijami naredite varnostno kopijo.
Ponovno konfiguriranje obstoječe gruče¶
Changing the Cluster CA¶
Obstoječa gruča (z dvema ali več vozlišči) med delovanjem ne more spremeniti svojega CA gruče. Če morate to potrdilo spremeniti: izberite vozlišče, odstranite vsa druga vozlišča, posodobite CA, nato pa naj se drugi člani ponovno pridružijo.
Changing the Network Configuration of Nodes¶
Če spremenite omrežno konfiguracijo vozlišča (npr. spremenite njegov IP), bodo druga vozlišča samodejno obveščena o posodobitvi. Vendar morate zagotoviti, da take posodobitve izvajate le na enem vozlišču naenkrat in v gruči, v kateri izguba tega vozlišča ne bi povzročila izgube kvoruma.