Clustering¶
Märkus
This feature is currently a technical preview with the following temporary limitation:
Active/passive setup to support two-node clusters, either by utilizing etcd Learner or Mirror, is not yet available. Use a Witness node instead.
Seda ei ole veel piisavas arvus tootmiskeskkondades katsetatud ning selles võivad esineda vead.
NetHSM alates versioonist 4.0 toetab klasterdamist, et sünkroonida andmeid otse mitme NetHSMi vahel. See toetab võtmete suure sagedusega genereerimist, tagab suure kättesaadavuse ja koormuse tasakaalustamise. NetHSM klastri aluseks on etcd, mis kasutab Raft konsensusalgoritmi tugeva järjepidevuse tagamiseks. See tagab, et andmed (nt võtmed) on kõikides NetHSMides alati õiged.
Enne NetHSM-klastri loomist tutvuge selle tehnoloogiaga ja selle piirangutega, et vältida juhuslikku katkestust ja andmekaotust. Lisaks käesolevale dokumendile võite tutvuda ka etcd dokumentatsiooniga.
Operational Redundancy¶
Nimetame „sõlme“ NetHSMi, mis peaks olema osa klastrist. Klaster, mis koosneb N sõlmedest, jätkab tööd seni, kuni vähemalt (N/2)+1 sõlmed on terved ja juurdepääsetavad. Seda minimaalset arvu terveid ja juurdepääsetavaid sõlmi nimetatakse kvoorumiks.
Klastris, mis langeb alla selle künnise (nt võrguprobleemi tõttu), ei ole võimalik valida liidrit ning iga sõlme kohalik instants etcd ei suuda enam lugemis- ega kirjutamistoiminguid teostada. See toob kaasa järgmised stsenaariumid.
Üks sõlm läheb maha ja kvoorum on siiski saavutatud¶
Kui kolme sõlme klastris üks sõlm ei tööta (jookseb kokku või muutub võrgu tõttu kättesaamatuks), jätkavad kaks ülejäänud sõlme tööd ja teenindavad päringuid.
If the failed node is still healthy (e.g. it was just a network problem), it will be in the Failed state while isolated, refusing normal operations (not even read-only).
However if the node recovers, it will cleanly resynchronize with the rest of the cluster and exit the Failed state, resuming normal operation without losing data.
Kui seade ei taastu kunagi, tuleb see klastrist eemaldada ning kas läbi viia taastamine, et pääseda ligi selle andmetele (kuid see ei kuulu enam klastrisse), või teha seadmel tehasevaikimisi taastamine ja läbida liitumisprotsess uuesti algusest peale.
Võrgustiku jagunemine toimub ja kvoorum on siiski saavutatud¶
See on lihtsalt eelmise stsenaariumi üldistus. Viie sõlme klastris, kus näiteks 3 sõlme on ühes füüsilises asukohas A ja 2 sõlme teises asukohas B, tähendaks A ja B isoleeriv võrguprobleem järgmist:
Asukohas A asuvad 3 sõlme täidavad kvoorumi (antud juhul 3), seega jätkavad nad tegevust.
The 2 nodes in location B are not meeting the quorum (still 3), so they will enter the Failed state and stop operating (even read-only).
Kui võrguprobleem on lahendatud, ühendavad 2 sõlme puhtalt tagasi 3 ülejäänud sõlme.
Teisisõnu, halvimal juhul tekkiva võrgupartitsiooni korral (klastris, kus on paaritu arv sõlmi) jääb klastri suurem pool töökorras, kuid väiksem pool ei tööta, kuni partitsioon on lahendatud.
Kvoorum on püsivalt kadunud¶
A failure causing all subsets of the cluster to lose quorum will render the cluster completely inoperable (all remaining nodes will be in the Failed state), unless the failure is resolved. In this case, manual recovery must be performed.
See võib juhtuda näiteks siis, kui 2-sõlmelises klastris (kus kvoorum on 2) üks sõlme ebaõnnestub. Sellises olukorras ei saa ebaõnnestunud sõlme pärast seda klastrist puhtalt eemaldada, sest allesjäänud terve sõlme on juba töökõlbmatu, kuna see on kaotanud kvoorumi.
Seetõttu on soovitatav, et klastris oleks alati paaritu arv sõlmi ja et varundataks sageli.
Selgituseks: ajutiselt kvoorumi kaotamine (näiteks kui te taaskäivitate kõik klastri sõlmed koos või kui ajutine võrgurike isoleerib sõlmed) ei ole probleem: kui piisavalt palju sõlmi on uuesti ühendatud (ilma käsitsi uuesti liitumata), et saavutada kvoorum, jätkab klastri normaalset tööd. Ainult püsivad tõrked, näiteks võrgu jagunemine, võrgu valesti konfigureerimine, autentimisprobleemid või riistvararikked, nõuavad käsitsi tegutsemist.
Lisateavet leiate etcd’s KKK.
2-sõlme klastri¶
Kahe sõlme aktiivne/passiivne klaster ei ole veel toetatud ja see lisatakse tulevases versioonis. Soovitame kasutusele võtta kolmanda sõlme, kas kolmanda NetHSMi või etcd „tunnistaja“, mida võib kasutada ükskõik millisel hostil. Vt järgmist jaotist „Tunnistaja“.
Tunnistaja¶
The nature of clustering with etcd makes it more reliable the more nodes there are in the cluster. As explained in the Operational Redundancy section, clusters should ideally have at least 3 nodes to have room to fail, since a 2-node cluster will entirely fail if only one fails.
Funktsiooni ülesehitus on aga selline, et te ei pea oma klastrisse lisama täielikku, tõelist NetHSM-seadet, et saavutada stabiilne sõlmede arv. Selle asemel võite ise juurutada ja lisada „tunnistaja“ sõlme. Selline sõlme on lihtsalt etcd instants, mis töötab teie valitud masinas (või konteineris) ja on ühendatud klastriga. Seda tunnustatakse klastri reaalsete seadmete poolt tavalise sõlmena ja see saab kõik andmed ja uuendused seadmetelt (kuid loomulikult ei saa te sellega teha mingeid HSM-operatsioone - ta ainult salvestab andmeid).
Security Considerations¶
Tunnistussõlm (või igaüks, kellel on sellele juurdepääs) omab otsest ligipääsu kõigi klastri sõlmede salvestussüsteemile (nt saab kõiki kirjeid ja vastavaid väärtusi välja lasta, kasutades etcdctl get "/" "0").
Siiski, välja arvatud konfiguratsiooniversioon (/config/version, mis peaks alati olema „1“), on rangelt kõik väärtused krüpteeritud (kas seadme võtmega sõlme-spetsiifiliste väärtuste puhul või domeeni võtmetega teiste puhul), mis tagab tundlike andmete konfidentsiaalsuse.
Pange aga tähele, et pahatahtlik sõlm võib:
Write garbage as the value for any entry in the store, which will cause nodes to fail decrypting it (which may lead to crashes for some system entries).
List entry names such as users, namespaces and keys, which you may consider sensitive.
Creating a Cluster¶
Iga klaster algab algselt ühest sõlmest. Uued sõlmed liituvad klastriga ükshaaval.
Preparing Nodes¶
Võrguliiklus sõlmede vahel on krüpteeritud ja autenditud nende TLS-sertifikaadi abil.
Kõik sõlmed, mis peaksid kuuluma samasse klastrisse, peavad esmalt paigaldama ühise sertifitseerimisasutuse (CA), mis võimaldab neil kontrollida, et teised sõlmed on seaduslikud.
Järgnevalt eeldame, et kõik sõlmed on äsja kasutusele võetud ja töökorras.
Networking¶
Nodes must first be reconfigured with their expected final network configuration as described in the section Network.
CA loomine ja paigaldamine¶
Kasutajad peaksid looma CA oma vahenditega ja vastavalt oma tegevuspiirangutele, tagades, et see võimaldab vähemalt keyCertSign võtme kasutamist.
Näiteks saab minimaalse CA luua aadressiga 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
See CA tuleb nüüd paigaldada igasse sõlme.
Selleks tuleb kõigepealt luua sõlmest sertifikaadi allkirjastamise taotlus (CSR), nagu on kirjeldatud jaotises „ TLS Certificate“. Kasutades nitroopia, tehakse seda käsuga nitropy nethsm --host $NETHSM_HOST csr --api.
Märkus
To properly authenticate nodes, the clustering backend (etcd) expects that each node has a certificate with a properly filled Subject Alt Names (SAN) field.
Nodes are expected to be reached only via their IP and need to have a proper IP SAN in their certificate.
IP SANs can be requested for the CSR by prefixing „IP:“ to the names, as in openssl:
"subjectAltNames": [ "normalname.org", "IP:192.168.1.1" ]
Kui kasutate „ ” nitroopia, kasutage valikut --san, nt --san "IP:192.168.1.1".
Kui soovite oma sertifikaatide allkirjastamiseks kasutada avalikku sertifitseerimisasutust, peavad teie sõlmed kasutama avalikke IP-aadresse. See tuleneb turvanõudest, mis keelab avalikul sertifitseerimisasutusel väljastada sertifikaate, mille IP-SAN-is on märgitud eraviisiline IP-aadress.
Arvestades saadud CSR-i (nimetame seda nethsm.csr), saame seejärel genereerida selle jaoks sertifikaadi, mis on valmis paigaldamiseks. Näiteks 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
Seejärel installige saadud new_cert.pem vastavalt jaotises „ ” kirjeldatule TLS-sertifikaat (koos nitropy: nitropy nethsm --host $NETHSM_HOST set-certificate --api new_cert.pem).
Finally, the CA (CA.pem) can now be installed. This is only possible once the installed TLS certificate is signed by it. Otherwise, the operation will be rejected.
Argumendid
Argument |
Kirjeldus |
|---|---|
|
The path of the CA file |
näide
$ nitropy nethsm --host $NETHSM_HOST set-cluster-ca-certificate CA.pem
Paigaldatud klastri sertifikaadi väljastaja (CA) saab välja otsida käsuga ` `` nitropy nethsm –host $NETHSM_HOST get-cluster-ca-certificate`.
Information about the /config/tls/cluster-ca.pem endpoint can be found in the API documentation.
Märkus
Seda protsessi tuleb korrata iga sõlme puhul.
Kellasünkroonimine¶
Veenduge, et igale sõlme on määratud õige süsteemiaeg, soovitavalt NTP/NTS-i abil, mitte käsitsi seadistamise teel. Seda saab teha järgmiste seadistuste abil: Time ja NTS/NTP.
Adding a New Node¶
Adding a node to a cluster is done in three steps:
Register the addition to the cluster (through any one of its members)
Tell the new node to join
Kui ta on teistele järele jõudnud, edutage sõlme õppijast täisliikmeks
Configure a Backup Passphrase¶
First make sure a backup passphrase is configured on the node that will be used to register a new joiner as described in the section Backup.
Uue sõlme registreerimine¶
Hoidke käepärast liituva sõlme IP-aadress. Selle sõlme täielik URL (ka peer URL ` etcd` terminoloogias) on https://<IP_of_node>:2380 (nt https://192.168.1.1:2380). Port peab olema 2380, seega tuleb tagada, et sõlmede vaheline tulemüür lubab TCP-liiklust sellel pordil.
You can double-check the URL is correct by listing the cluster members on the node that is expected to join. This should list just one member: itself.
näide
$ nitropy nethsm --host $NETHSM_HOST list-cluster-members
Call GET /cluster/members (refer to the API documentation).
Then register that expected URL on any existing node of the cluster (if you don’t have a cluster yet, do this on the NetHSM that will serve as the initial node of the cluster).
Võimalikud valikud
Valik |
Kirjeldus |
|---|---|
|
Uue sõlme peer-URL (võib määrata mitu korda) |
Argumendid
Argument |
Kirjeldus |
|---|---|
|
Kataloog, kuhu ühendatud andmed salvestatakse |
näide
$ nitropy nethsm --host $NETHSM_HOST add-cluster-member --url https://192.168.1.1:2380 join-data.json
Käsk kuvab klastri liikmed ja salvestab faili andmed, mida uus sõlm vajab klastriga ühinemiseks (sealhulgas ühinemiskomplekti). Säilita see fail järgmise sammu jaoks.
Call the POST /cluster/members endpoint (refer to the API documentation), passing it a JSON body containing the URL.
A successful call returns a JSON body of the form:
{
"members": [
{
"name": "",
"urls": [
"https://172.22.1.3:2380"
],
"learner": true
},
{
"name": "9ZVNM2MNWP",
"urls": [
"https://172.22.1.2:2380"
],
"learner": false
}
],
"joinerKit": "eyJiYWNrdXBfc2FsdCI6IkVlUzNPOEhHSEc5NnlNRktrdG1NZmc9PSIsInVubG9ja19zYWx0IjoiU3phMkEvYW13NlhxVWsrdHZMMmFubm5SZFlWd2ZQUjdpZ3IxK1RSdTdVaU14dmh3d0x2NWIvYVNkY2c9IiwibG9ja2VkX2RvbWFpbl9rZXkiOiIyMnNGVlkyelhQUVZ6S1pQenI3MmkwTk1WM3lmQ2k5dGwzeDhUbGtuOXM0WjFOd3JoZkRQTFZIVHp1WVl0YkQxaVZCMlovV3JHUHJlMXlwN0t4U0w4WkxjY2ZUTmUzcFg0WXE4YXNlY0wwREhXNGlIaXlPMlZnPT0ifQ=="
}
mis sisaldab teavet, mis on vajalik uue sõlme liitumiseks klastriga. Eelkõige loetletakse selles kõik klastri liikmed (kus tühja nimega liige on uus liituja). Samuti sisaldab see domeeni võtit, mis on krüpteeritud nii avamis- kui ka varusõnaga - seega peab varusõna olema eelnevalt konfigureeritud.
Märkus
Notice in the list of members (learner: True in the nitropy output, "learner": true in the REST API response) that the new joiner is a „learner“: it can now
connect to the cluster and receive data from it, but cannot participate until
it is promoted, which will be covered below.
Kuigi see „õppija” kontseptsioon lisab ühe täiendava etapi (edutamine), võimaldab see klastri turvalisemat töötamist, kuna uue sõlme mis tahes probleem ei saa enne selle edutamist põhjustada kogu klastri ebastabiilsust.
Säilita ühendusandmete fail järgmise sammu jaoks (või vastus, kui kasutasid REST-API-d).
Joining the Cluster as a Learner¶
Liituge klastriga selles sõlmes, mis peaks klastriga ühinema, kasutades eelmises etapis saadud andmeid ja selle sõlme varusalasanat, milles uus liituja registreeriti.
Vajalikud valikud
Valik |
Kirjeldus |
|---|---|
|
Selle sõlme varupassifraas, millele uus liituja registreeriti |
Argumendid
Argument |
Kirjeldus |
|---|---|
|
Eelmises etapis kasutatud ühendusandmefaili asukoht |
näide
$ nitropy nethsm --host $NETHSM_HOST join-cluster --backup-passphrase $BACKUP_PASSPHRASE join-data.json
Take the response from the last step and append to it a backupPassphrase field containing the backup passphrase, and pass that data to a call to POST /cluster/join (refer to the API documentation).
Hoiatus
The join call (nitropy nethsm join-cluster or POST /cluster/join) will hang until the new node is manually
promoted (see below). This is normal. When the call returns successfully, it
indicates that join and promotion have been successful. Don’t cancel this join call.
Assuming both the cluster and the node can reach each other, this will enact the actual join, wiping the data on the new joiner to instead synchronize its state with that of the cluster. If this operation fails immediately (e.g. the cluster was not reachable or authentication failed), this node’s state will not be wiped and the join will be reverted. However as soon as a first join is successful, this operation is final and can only be reverted by a factory reset.
Praeguses etapis on uus sõlm liitunud klastriga „ “ õppiva sõlmena: see sünkroniseerib end klastriga, kuid ei ole veel töökorras. Teisalt ei põhjusta sõlmega seotud mis tahes probleemid selles etapis klastrile raskusi, mistõttu on see toiming ohutu.
Liitumise lõpetamiseks tuleb viimase sammuna uus sõlm tõsta täisliikme staatusesse.
Promoting the New Learner¶
Sõltuvalt võrgu- ja klastrioludest võib uue liikme klastriga ühinemine võtta veidi aega. Kui see on toimunud, saab ta edutada õppijast täisliikmeks.
Hoiatus
Promoting a node increases the cluster’s quorum threshold (refer to the API documentation and the Operational Redundancy section of this document). Ensure this new node has a stable connection to the cluster before promoting it.
Võite proovida uut liiget edendada järgmiselt. Liikme ID leiate klastri liikmete loetelu abil.
Argumendid
Argument |
Kirjeldus |
|---|---|
|
The ID of the learner to be promoted |
näide
$ nitropy nethsm --host $NETHSM_HOST promote-cluster-member $MEMBER_ID
Call POST /cluster/members/{MemberID}/promote (refer to the API documentation).
Kui õppija ei ole veel järele jõudnud, siis see ebaõnnestub (HTTP-kood 412 REST-API-s) ja edutamist tuleks hiljem uuesti proovida.
If this promotion is successful, the node will now have fully joined the cluster and the earlier call to /cluster/join will have returned. The node ends up in a Locked state and has to be unlocked with the unlock passphrase of the node that was used for registration. Afterwards the unlock passphrase can be changed (unlock passphrases remain node-specific and are not shared across nodes).
Adding a Witness Node¶
Prepare a Witness¶
Teil on vaja keskkonda, kus on olemas etcd v3.6, mille IPv4-aadress on (vähemalt) teie klastri teiste liikmete poolt kättesaadav. TCP-liiklus pordile 2380 ja sealt peab olema lubatud.
Looge tühi kataloog, kus etcd hakkab oma andmeid hoidma, ja kirjutage üles selle tee (me kasutame /var/etcd/data). Veenduge, et kasutajal, kes protsessi käivitab, on õigus lugeda ja kirjutada kataloogi.
Transfer to the machine the CA certificate that is being used to authenticate
nodes in the cluster. You should have created one in the
Creating and Installing a CA section. We’ll
store it in /var/etcd/CA.pem.
Seejärel peate looma tunnistaja jaoks sertifikaadi ja allkirjastama selle CAga, et ta saaks suhelda oma eakaaslastega. Seda saab teha näiteks veebilehe openssl kaudu:
# 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
Salvesta saadud witness.key ja witness.pem ka /var/etcd.
Register Witness to Cluster¶
Follow the normal instructions from the Registering a New Node section to signal the existing cluster the addition of a new member with the given URL(s).
Keep the join data file written by nitropy nethsm add-cluster-member (or the response from the cluster, if you used the REST API): it contains the list of cluster members and a joiner kit (you won’t need this part).
Configure etcd¶
Erinevalt NetHSMist, mis valivad endale automaatselt sõlme nime (kasutades seadme ID-d), peate te valima nime igale lisatavale tunnistajale, tagades, et nimed on unikaalsed. Järgnevates näidetes kasutame „witness1“.
Koos NetHSM-i vastusega tunnistajaks registreerimisele koostage vormimuutujad:
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,..."
Assuming the join data file written by nitropy (or the NetHSM REST API response) is stored in a response.json file, you can generate these last two variables automatically with the following jq expressions:
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)
For example with the example response provided in the Registering a New Node section, you will have:
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"
Lõpuks looge etcd.conf.yml fail, kasutades docs/etcd_witness.conf.template esitatud mallifaili:
$ envsubst < NETHSM_ROOT/docs/etcd_witness.conf.template > /var/etcd/witness.conf.yml
$ cat witness.conf.yml
See peaks andma teile vormi faili:
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¶
Käivitage etcd oma eelistatud viisil (käsitsi, systemd teenus, konteiner jne), osutades sellele eelmises etapis loodud konfiguratsioonifaili:
$ cd /var/etcd
$ etcd --config-file witness.conf.yml
Sa peaksid nägema, kuidas see käivitub, liituma klastriga õppijana ja jõudma andmetega sammu.
Promote the Witness¶
Lõpuks, mõne aja möödudes, järgige tunnistaja edutamiseks tavalisi juhiseid, mis on toodud veebilehel jaotises „Uue õppija edutamine“. Kui see ei õnnestu, proovige hiljem uuesti.
After a successful promotion, you should be able to check that it is healthy with the etcdctl client:
etcdctl get /config/version
See võti peaks olema olemas ja sisaldama „1“.
Make sure this process keeps running, as it is now a proper member of your cluster. If you need to decommission it, first properly remove it from the cluster. If its reachable IP changes, update its URL from the cluster.
Operating a Cluster¶
Varundamine ja taastamine¶
Varundamine toimib samamoodi nagu ilma klastrita ja seda saab taotleda klastri mis tahes sõlme kaudu. See varundab kogu klastri andmed, kaasa arvatud sõlme-spetsiifilised väljad (kuigi neid ignoreeritakse, kui varukoopia taastamine ei toimu mitteproviseeritud sõlmes).
Klastris tehtud varukoopia saab taastada samas klastris, isegi kui mõned sõlmed on vahepeal lisatud või eemaldatud. Sellised taastamised, mis on tehtud toimivates klastrites, ei mõjuta konfiguratsiooniväärtusi (ainult võtmed, kasutajad, nimeruumid), nagu mis tahes muu osaline taastamine.
Varukoopia taastamine mitteproviseeritud sõlmes taastab selle sõlme spetsiifilised väljad (nt võrgukonfiguratsioon, sertifikaadid jne), mida kasutati varukoopia loomiseks.
Suure varukoopia taastamine võib klastri mõneks ajaks üle koormata, samal ajal kui taastamist rakendav sõlme edastab muudatused teistele.
See toiming ühildub NetHSMi varasemate versioonidega tehtud varundustega.
Märkus
Teises sõlmes Z tehtud varukoopia taastamine sõlmes A erineva domeeni võtmega kirjutab A domeeni võtme korrektselt ümber, nagu varemgi. Kui aga A oli klastris koos sõlme Bga, muutub B töökõlbmatuks, sest Z domeeni võtit ei taastata Bs.
Teisisõnu, tehke taastamist ainult klastris, mille varukoopiad on tehtud samas klastris (kuigi jälle võivad sõlmed olla vahepeal eemaldatud või lisatud). Kui soovite taastada võõrast varukoopiat mõnes sõlmes, eemaldage see kõigepealt ohutult oma klastrist, seejärel tehke tehaseparandused ja taastage varukoopia.
Sõlme eemaldamine puhtalt¶
Niikaua kui klastri mingi osa vastab veel kvoorumile, saab mis tahes selle liikme abil eemaldada klastrist teise sõlme, olenemata sellest, kas see sõlm on juba kättesaamatu või eeldatavalt kättesaamatu.
You first have to know the ID of the node you want to remove, by listing all nodes and looking for the right one. Then it can be removed. If the node in question was still healthy, this will isolate it from the rest of the cluster and transition it to the Failed state.
Argumendid
Argument |
Kirjeldus |
|---|---|
|
The ID of the node to be removed |
näide
$ nitropy nethsm --host $NETHSM_HOST remove-cluster-member $MEMBER_ID
Loetle sõlmed käsuga ` `` GET /cluster/members` ja eemalda üks neist käsuga ` `` DELETE /cluster/members/<id>`.
Märkus
Ka klastriga ühinenud, kuid veel edutamata sõlme saab sel viisil ohutult eemaldada.
Recovering a Failed Node¶
Sõlm, mis teatab seisundist „ Failed“ ( ebaõnnestus), keeldub vastamast enamikule tavapärastele operatsioonidele. Seda on siiski võimalik sulgeda, taaskäivitada, lähtestada , diagnoosida või isoleerida.
Hoiatus
Operatsioonid „ ”, „Failed ”, „ ` ”, „diagnose` ”, „ ` ” ja „force-new` ” kehtivad ainult versioonist 5.0 alates. Versioonis 4.0 lõpetab kvoorumi kaotanud sõlm vastamise kõikidele ja päringutele. See peab taastama tehase seaded.
Tavapärased põhjused, miks sõlm võib olla seisundis „ Failed“ ( ), on järgmised:
Püsivalt kadunud kvoorum.
Ajutine kvoorumi kaotus (nt kui klastrisse lisatakse teine sõlm, kuid see teine sõlm pole veel klastriga ühinenud).
etcdon hetkel taaskäivitumas (nt seetõttu, et sertifikaadid on muutunud või võrk on ümber konfigureeritud).Klaster on väga suure koormuse all (nt väga suure varukoopia taastamise ajal).
Sõltumata põhjusest läheb NetHSM üle seisundisse „ Failed“ alles siis, kui andmebaasiga suhtlemise katsed on ebaõnnestunud vähemalt terve minuti jooksul. Selle eesmärk on vältida väga lühiajaliste ebastabiilsuste põhjustatud valesid üleminekuid.
To help you understand which case your node is in, the diagnose function
remains available and returns information about the current status of
etcd and its database, including logs.
näide
$ nitropy nethsm --host $NETHSM_HOST get-cluster-diagnostics
Kutsu välja ` `` GET /health/diagnose` (vt API dokumentatsiooni).
Märkus
Kui andmebaas muutub taas kättesaadavaks (nt kui kvoorum taastub võrguprobleemi lahendamise tõttu), läheb NetHSM automaatselt seisundist „ Failed” üle varasemasse seisundisse (või jätkab tavapärast käivitumisjärjekorda, kui ta oli just käivitumas), ilma et oleks vaja mingeid käsitsi toiminguid. Pärast probleemi lahendamist kulub kuni minut, enne kui klaster stabiliseerub, HSM tuvastab probleemi lahendamise ja vahetab seisundit.
Kui jõuate järeldusele, et tõrge on püsiv (nt kvoorumi kaotus, mille põhjustanud olukorra lahendamine ei ole võimalik), võite kas:
Taasta seadme tehasevaikimisi seaded ( ) ja seejärel taasta varukoopia.
Isolate the node with
nitropy nethsm force-new-cluster(REST API:POST /cluster/force-new), which will irreversibly forget all other cluster members, recover theetcddata present on disk and reboot. If the underlying failure was cluster-related, the node will follow the normal boot sequence and end up in either the Locked or Operational state depending on the unattended boot setting.
Märkus
If a node is isolated with force-new, it will desynchronized with
the cluster: any new writes on it or the cluster cannot be reconciled. The
node can still rejoin the cluster but will lose all its local
modifications.
The force-new operation, which is only available in the
Failed state, requires authentication as it is potentially destructive.
However since HSM users and roles are not available in that state, the endpoint
expects HTTPS clients to always authenticate with the unlock fake user, and
the latest known unlock passphrase as the password. With nitropy, pass them as
--username unlock --password $UNLOCK_PASSPHRASE:
$ nitropy nethsm --host $NETHSM_HOST --username unlock --password $UNLOCK_PASSPHRASE force-new-cluster
Hoiatus
Pärast versioonist < 5.0 uuendamist on force-new lõpppunkt alati „Unauthorized” (autoriseerimata), kuni HSM on avatud või avamissalasanat on vähemalt üks kord muudetud.
Software Updates in Clusters¶
Tulevased uuendused märgistatakse kui „cluster-safe“ (see peaks olema enamus) või „cluster-unsafe“.
Klasterkindlaid uuendusi saab rakendada klastrisse kuuluvatele sõlmedele, ilma neid eelnevalt klastrist eemaldamata. Kuid nagu kõigi operatsioonide puhul, peaksite tagama, et seda tehakse ühe sõlme kohta korraga ja klastris, kus sõlme eemaldamine ei lähe alla kvoorumi (nt kui uuendamine ebaõnnestub).
Klastrisse mittekuuluvaid uuendusi tuleb rakendada isoleeritud sõlmedele. Te peaksite klastri laiali lammutama (eemaldades sõlmed ükshaaval), lähtestama kõik sõlmed peale ühe, rakendama uuenduse igale sõlmpunktile, seejärel panema kõik lähtestatud sõlmed liituma allesjäänud sõlmedega.
Enne selliseid toiminguid tehke kindlasti varukoopia.
Olemasoleva klastri ümberkonfigureerimine¶
Changing the Cluster CA¶
Olemasolev klastri (kahe või enama sõlme) ei saa muuta oma klastri CA-d töö ajal. Kui teil on vaja seda sertifikaati muuta: valige üks sõlme, eemaldage kõik teised sõlmed, uuendage CA ja laske siis teistel liikmetel uuesti liituda.
Changing the Network Configuration of Nodes¶
Võrgukonfiguratsiooni muutmine (nt IP-aadressi muutmine) teavitab teisi sõlmi automaatselt uuendusest. Te peaksite siiski tagama, et te teete selliseid uuendusi korraga ainult ühes sõlmes ja klastris, kus selle sõlme kaotamine ei põhjusta kvoorumi kadumist.