PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Sissejuhatus

MĂ”ni aeg tagasi seisis mulle ĂŒlesanne luua talitlushĂ€irete taluv klaster, PostgreSQL, mis töötab mitmes andmekeskuses, ĂŒhendatud kiudoptilise kaabli kaudu ĂŒhe linna piires, ja mis suudaks taluda talitlushĂ€iret (nĂ€iteks elektrikatkestust) ĂŒhes andmekeskuses. Tarkvara, mis vastutab talitlushĂ€irete taluvuse eest, on valitud Pacemaker, kuna see on ametlik lahendus RedHat'ilt talitlushĂ€irete taluvate klastrite loomiseks. Selle eelisteks on, et RedHat pakub sellele tuge ja et see lahendus on universaalne (modulaarne). Selle abil saab tagada talitlushĂ€irete taluvuse mitte ainult PostgreSQL-le, vaid ka muudele teenustele, kasutades kas standardmooduleid vĂ”i luues neid vastavalt konkreetsetele vajadustele.

Selle lahenduse kohta tekkis Ă”igustatud kĂŒsimus: kui talitlushĂ€irete taluv on tegelikult talitlushĂ€irete taluv klaster? Selle uurimiseks olen loonud testimisstandardi, mis simuleerib erinevaid talitlushĂ€ireid klastrite sĂ”lmedes, ootab taastumist, taastab talitlushĂ€irenenud sĂ”lme ja jĂ€tkab testimist tsĂŒklis. Alguses kandis see projekt nime hapgsql, kuid aja jooksul hakkas meeldima nimi, kus on ainult ĂŒks tĂ€ishÀÀlik. SeetĂ”ttu hakkan talitlushĂ€irete taluvate andmebaaside (ja nendele viitava float IP) nimetama krogan (videomĂ€ngu tegelane, kellel on kĂ”ik olulised organid dubleeritud), ja sĂ”lmed, klastrid ja kogu projekt – tuchanka (planeet, kus kroganid elavad).

Praegu on juhtkond lubanud ava projekt avatud lÀhtekoodiga kogukonnale MIT litsentsi alusel.README tÔlgitakse peagi inglise keelde (sest oodatakse, et peamised kasutajad on Pacemakeri ja PostgreSQL'i arendajad), ja vana vene versioon README-st otsustasin kujundada (osaliselt) selle artikli kujul.

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Klastrid seadistatakse virtuaalmasinates VirtualBox. Kokku seadistatakse 12 virtuaalmasinat (kokku 36GiB), mis moodustavad 4 talitlushĂ€irete taluvat klastrit (erinevad variandid). Esimesed kaks klastrit koosnevad kahest PostgreSQL serverist, mis asuvad erinevates andmekeskustes, ja ĂŒhine server witness c quorum device (mis asub odavas virtuaalmasinas kolmandas andmekeskuses), mis lahendab mÀÀramatuse 50%/50%, andes oma hÀÀle ĂŒhe poole kasuks. Kolmas klaster asub kolmes andmekeskuses: ĂŒks peamine, kaks alamkĂ€sku, ilma quorum device. Neljas kluster koosneb neljast PostgreSQL serverist, kaks igas andmekeskuses: ĂŒks peamine, teised koopiad, ja kasutab samuti witness c quorum device. Neljas talub kahe serveri vĂ”i ĂŒhe andmekeskuse tĂ”rget. Seda lahendust saab vajadusel laiendada suurema arvu koopiaid.

Aja tĂ€psuse teenus ntpd on samuti konfigureeritud töökindluse tagamiseks, aga seal kasutatakse ntpd (orphan mode). Ühine server witness töötab kesksena NTP-serverina, jagades oma aega kĂ”ikidele klustereile, nii et kĂ”ik serverid on omavahel sĂŒnkroniseeritud. Kui witness ĂŒks neist puruneb vĂ”i isoleeritakse, hakkab klusterist ĂŒks serveritest oma aega jagama (kliendi sees). TĂ€iendav vahemĂ€letav HTTP proxy on samuti seadistatud witness, mille kaudu saavad teised virtuaalmasinad juurdepÀÀsu Yum-repositoritele. Tegelikult on sellised teenused nagu aja tĂ€psus ja proksi kindlasti paigutatud eraldi serveritele, samas kui katsekeskkonnas on need paigutatud witness ainult virtualiseerimise ja ruumi sÀÀstmiseks.

Versioonid

v0. Töötab CentOS 7 ja PostgreSQL 11 peal VirtualBox 6.1.

Klustrite struktuur

KĂ”ik klustid on mĂ”eldud paigutamiseks mitmes andmekeskuses, ĂŒhendatud ĂŒhte lamedasse vĂ”rku ja peavad taluma ĂŒhe andmekeskuse tĂ”rget vĂ”i vĂ”rgu eraldamist. SeetĂ”ttu teostada kasutatakse kaitseks split-brain standardeid Pacemakeri tehnoloogia, mida nimetatakse STONITH (Shoot The Other Node In The Head) vĂ”i fencing. Selle pĂ”hiolemus: kui klusteri sĂ”lmed hakkavad kahtlema, et mĂ”ne sĂ”lmega on midagi valesti, nĂ€iteks ei vasta vĂ”i kĂ€itub ebaĂ”igesti, siis nad sunnivad selle vĂ€lja lĂŒlitama lĂ€bi 'vĂ€listest' seadmetest, nagu IPMI juhtimiskaart vĂ”i UPS. Kuid see töötab ainult siis, kui ĂŒhel serveri tĂ”rkel IPMI vĂ”i UPS jĂ€tkub töötamine. Siin on aga planeeritud kaitse mĂ€rksa katastroofilisema tĂ”rke eest, kui kogu andmekeskus ebaĂ”nnestub (nĂ€iteks kaotab toite). Sellises tĂ”rkes ei tööta kĂ”iked stonith-seadmed (IPMI, UPS jne) samuti.

Selle asemel pĂ”hineb sĂŒsteemi pĂ”himĂ”te kvoorumil. KĂ”igil sĂ”lmedel on hÀÀl ja töötada saavad ainult need, kes nĂ€evad rohkem kui pooli kĂ”igist sĂ”lmedest. Seda 'pool+1' nimetatakse kvoraum. Kui kvoorumit ei saavutata, otsustab sĂ”lm, et ta on vĂ”rgu isolatsioonis ja peab oma ressursid vĂ€lja lĂŒlitama, st see on selline split-brain kaitse. Kui tarkvara, mis vastutab sellise kĂ€itumise eest, ei tööta, siis peab tööle minema watchdog, nĂ€iteks IPMI alapĂ”hine.

Kui sĂ”lmede arv on paarisarv (klaster kahes andmekeskuses), siis vĂ”ib tekkida nn mÀÀramatuse olukord 50%/50% (viiskĂŒmmend viiskĂŒmmend), kui vĂ”rgu isoleerimine jagab klastrit tĂ€pselt pooleks. SeetĂ”ttu paarisarvude puhul lisandub quorum device — mitteressursside intensiivne demon, mida saab kĂ€ivitada kĂ”ige odavamas virtuaalmasinas kolmandas andmekeskuses. Ta annab oma hÀÀle ĂŒhelt segmendilt (keda ta nĂ€eb) ja sellega lahendab 50%/50% mÀÀramatuse. Server, kus quorum device tööle hakkab, nimetan ma witness (terminoloogia repmgr-ist, mulle meeldis see).

Ressursid vĂ”ivad liikuda ĂŒhest kohast teise, nĂ€iteks rikkest pĂ”hjustatud serveritest korralike serverite juurde, vĂ”i sĂŒsteemiadministraatorite kĂ€sul. Et kliendid teaksid, kus asuvad vajalikke ressursse (kuhu minna?), kasutatakse ujuvad IP-d (float IP). Need on IP-d, mida Pacemaker saab liikuda sĂ”lmede vahel (kĂ”ik asub tasases vĂ”rgus). IgaĂŒhed sĂŒmboliseerivad ressursi (teenust) ja asuvad seal, kuhu tuleb ĂŒhenduda, et pÀÀseda sellele teenusele (meie juhul andmebaasile).

Tuchanka1 (tiheduse skeem)

Struktuur

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Idee oli see, et meil on palju vĂ€ikese koormuse andmebaase, mille jaoks pole mĂ”istlik hoida spetsiaalset slave-serverit hot standby reĆŸiimis lugemiseks (selliste ressursside raiskamine pole vajalik).

Iga andmevariandis on ĂŒks server. Igasse serverisse on paigaldatud kaks PostgreSQL instantsi (PostgreSQL'i terminoloogias nimetatakse neid klusteriteks, kuid segaduse vĂ€ltimiseks nimetan ma neid instantsideks (sarnaselt teiste andmebaasidega), ja klusteriteks ainult Pacemaker'i klastri). Üks instants töötab meistrina ning ainult tema pakub teenuseid (ainult temale osutatakse float IP). Teine instants töötab orjana teises andmevariandis ja hakkab teenuseid pakkuma ainult juhul, kui tema meister peaks rikki minema. Kuna suurema osa ajast osutab teenuseid (tĂ€idab pĂ€ringud) ainult ĂŒks kahest instantsist (meister), optimeeritakse serveri ressursid meistri jaoks (mĂ€lu eraldamine shared_buffers’ile jne), kuid nii, et teisest instantsist jĂ€tkuks piisavalt ressurssi (kuigi mitte optimaalseks töötamiseks failisĂŒsteemi kaudu) ĂŒhe allika rikke korral. Orjad ei osuta teenuseid (ei tĂ€ida read only pĂ€ringuid), kui klastri normaalne töö toimub, et vĂ€ltida ressursisĂ”da meistriga samal masinal.

Kaks sĂ”lme tekitavad tĂ”rget ainult asĂŒnkroonse replikatsiooni korral, kuna sĂŒnkroonse korral viib orja rike meistri seiskumiseni.

Witness'i rike

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Witness'i rike (quorum device) kÀsitlen ma ainult klastri Tuchanka1 puhul, teistega on lugu sama. Witness'i rikke korral klastri struktuuris midagi ei muutu, kÔik töötab edasi nii nagu varem. Kuid kvoorum suureneb 2-lt 3-le ja seetÔttu muutuda mis tahes jÀrgmine rike fataalseks klastri jaoks. TÔenÀoliselt tuleb kiiresti parandada.

Tuchanka1 rike

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Ühe andmevariandi rike Tuchanka1 jaoks. Sellisel juhul witness annab oma hÀÀle teisele sĂ”lmele teises andmevariandis. Seal muutub endine orja meisteriks, mistĂ”ttu töötavad mĂ”lemad meistrid samas serveris ja neid suunatakse mĂ”lemale nende float IP-le.

Tuchanka2 (klassikaline)

Struktuur

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Klassikaline skeem kahe sĂ”lmega. Ühel töötab meister, teisel orjand. MĂ”lemad saavad tĂ€ita pĂ€ringuid (orjand ainult read only), seega suunatakse mĂ”lemale float IP: krogan2 — meistrile, krogan2s1 — orjale. TĂ”rgetaluvus on nii meistril kui orjal.

Kaks sĂ”lme tekitavad tĂ”rget ainult asĂŒnkroonse replikatsiooni korral, sest sĂŒnkroonse korral viib orja rike meistri seiskumiseni.

Tuchanka2 rike

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Ühe andmevariandi rike witness hÀÀletab teise poolt. Ainult ĂŒhes töötavas andmekeskuses tĂ”stetakse master ja sellele osutavad mĂ”lemad float IP: master ja slave. Muidugi peab instants olema seadistatud nii, et tal on piisavalt ressursse (ĂŒhenduse piirid jne) samaaegselt vĂ”tma kĂ”ik ĂŒhendused ja pĂ€ringud nii masterilt kui slaveilt float IP-lt. See tĂ€hendab, et normaalses töökorralduses peab tal olema piisav varu piirides.

Tuchanka4 (palju slave'e)

Struktuur

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Juba teine ÀÀrmus. On Andmebaase, kuhu tuleb vĂ€ga palju read-only pĂ€ringuid (typical case for high-load website). Tuchanka4 on olukord, kus slave'e vĂ”ib olla kolm vĂ”i enam, et selliseid pĂ€ringuid töödelda, kuid siiski mitte liiga palju. Kui slave'e on vĂ€ga palju, tuleb vĂ€lja mĂ”elda hierarhiiline replikatsioonisĂŒsteem. Minimaalsetel juhtudel (pildil) asub igas kahes andmekeskuses kaks serverit, millel igas on ĂŒks PostgreSQL instants.

Veel ĂŒheks selle skeemi omaduseks on see, et siin on vĂ”imalik korraldada ĂŒks sĂŒnkroonse replikatsiooni. See on seadistatud nii, et replikatsioon toimuks, kui vĂ”imalik, teise andmekeskuse poole, mitte replikale samas andmekeskuses, kus on master. Masterile ja igale slave'ile osutab float IP. HĂ€sti, slave'ide vahel on vajalik pĂ€ringute tasakaalustamine mingisuguse sql proxy, nĂ€iteks kliendi poolel. Erinevat tĂŒĂŒpi klientidele vĂ”ib olla vajalik erinev tĂŒĂŒp sql proxy, ja ainult kliendi arendajad teavad, kellele milline on vajalik. See funktsionaalsus vĂ”ib olla rakendatud nii vĂ€list daemonina kui ka kliendi teegina (connection pool) jne. KĂ”ik see ulatub vĂ€ljapoole teemat andmebaasi hooldekeskust (hooldus SQL proxy saab rakendada sĂ”ltumatult, koos kliendi hooldusega).

Tuchanka4 rike

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Ühe andmekeskuse (st kahe serveri) rikke korral hÀÀletab witness teise poolt. Tulemuseks on see, et teises andmekeskuses toimivad kaks serverit: ĂŒhel töötab master ja sellele osutab master float IP (read-write pĂ€ringute vastuvĂ”tmiseks); teisel serveril töötab slave sĂŒnkroonse replikatsiooniga ja sellele osutab ĂŒks slave float IP (read only pĂ€ringute jaoks).

Esimene asi, mida tuleb mĂ€rkida: töötavad slave float IP ei ole kĂ”ik, vaid ainult ĂŒks. Ja selle Ă”ige töö tagamiseks on vajalik, et sql proxy suunĂ€hkuna kĂ”ik taotlused ainus alles jÀÀnud float IP; ja kui sql proxy ei, siis saab loetleda kĂ”ik float IP orjad komadega URL-is ĂŒhendamiseks. Sel juhul libpq ĂŒhendus on esimese töökorras oleva IP-ga, nii on see automaatse testimise sĂŒsteemis seadistatud. VĂ”ib-olla muudes teekides, nĂ€iteks JDBC-s, ei pruugi see toimida ja on vajalik sql proxy. See on nii seadistatud, kuna float IP orjadele on seadistatud keeld ĂŒheaegselt ĂŒhes serveris tĂ”usta, et nad saaksid vĂ”rdselt jaotuda orjade serverite vahel, kui neid töötab mitu.

Teine: isegi andmekeskuse rikke korral sĂ€ilib sĂŒnkroonne replikatsioon. Ja isegi kui toimub teine rike, see tĂ€hendab, et jÀÀnud andmekeskuses rikki lĂ€heb ĂŒks kahest serverist, kaob klaster ehk ei paku teenuseid, kuid siiski sĂ€ilitab teavet kĂ”igi kinnitatud tehingute kohta, mille kohta ta andis kinnituse (teabe kaotust teise rikke korral ei toimu).

Tuchanka3 (3 andmekeskust)

Struktuur

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

See on klaster olukorraks, kus on kolm tĂ€ielikult toimivat andmekeskust, igas neist on tĂ€ielikult töötav andmebaasi server. Sellisel juhul quorum device pole vajalik. Ühes andmekeskuses töötab master, kahes teises - orjad. Replikatsioon on sĂŒnkroonne, tĂŒĂŒpi ANY (slave1, slave2), see tĂ€hendab, et kliendile saadetakse kinnitamine, kui ĂŒks orjadest esmalt vastab, et ta on kinnituse vastu vĂ”tnud. Ressursside jaoks on mÀÀratud ĂŒks float IP jaoks master ja kaks orjade jaoks. Erinevalt Tuchanka4-st on kĂ”ik kolm float IP talitlushĂ€irekindlad. Read-only SQL-pĂ€ringute tasakaalustamiseks vĂ”ib kasutada sql proxy (eraldi talitlushĂ€irekindlusega) vĂ”i jagada poolele klientidest ĂŒks orja float IP ja teisele poolele teine.

Tuchanka3 talitlushÀire

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Ühe andmekeskuse talitlushĂ€ire korral jÀÀb kaks. Ühes on master ja masteri float IP, teises - orja ja mĂ”lemad orjade float IP (instansil peab olema kahekordne ressursside varu, et vastu vĂ”tta kĂ”ik ĂŒhendused mĂ”lemalt orja float IP-lt). Masterite ja orja vahel on sĂŒnkroonne replikatsioon. Klaster sĂ€ilitab samuti teavet kinnitatud ja kinnitatud tehingute kohta (teabe kaotust ei toimu) kahe andmekeskuse hĂ€vitamise korral (kui need ei hĂ€vinud samaaegselt).

Maailma struktuuri ja juurutamise pÔhjalikku kirjeldust ma siia ei pane. Kes soovib katsetada, vÔib selle kÔik lugeda README-st. Toetan ainult automaatse testimise kirjelduse.

Automaatse testimise sĂŒsteem

Klusterite tĂ”rkevastupidavuse testimiseks, simuleerides erinevaid tĂ”rkeid, on loodud automaatse testimise sĂŒsteem. See kĂ€ivitatakse skripti kaudu test/failure. Skript vĂ”ib vĂ”tta parameetritena klusterite numbrid, mida soovitakse testida. NĂ€iteks see kĂ€sk:

test/failure 2 3

testib ainult teist ja kolmandat klusterit. Kui parameetreid ei ole, siis testitakse kÔiki klustreid. KÔiki klustreid testitakse paralleelselt ja tulemus kuvatakse tmux-i paneelis. Tmux kasutab eraldi tmux-serverit, seega saab skripti kÀivitada default tmux-ist, tekib sissekÔrvalne tmux. Soovitan kasutada terminali suure aknaga ja vÀikese fondiga. Testimise alguses taastatakse kÔik virtuaalmasinad skripti lÔpulejÔudmise hetke snapshotile. setup.

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Terminal on jagatud veergudeks testitavate klusterite arvu jÀrgi, vaikimisi (kuid fotol) on neid neli. Veergude sisu selgitab Tuchanka2 nÀitel. Paneelid fotol on nummerdatud:

  1. Siin kuvatakse testide statistika. Veerud:
    • failure — testi (funktsiooni skriptis) nimetus, mis simuleerib tĂ”rket.
    • reaction — keskmine aeg sekundites, mille jooksul kluster taastab oma töökorrasoleku. Mitu mÔÔdetakse skripti kĂ€ivitamise algusest, mis simuleerib tĂ”rget, kuni hetkeni, mil kluster taastab oma töökorrasoleku ja suudab jĂ€tkata teenuste osutamist. Kui aeg on vĂ€ga lĂŒhike, nĂ€iteks kuus sekundit (see juhtub mitme orjaga klusterites (Tuchanka3 ja Tuchanka4)), tĂ€hendab see, et tĂ”rge sattus asĂŒnkroonsesse orja ja ei mĂ”jutanud töövĂ”imet, klustereis ei toimunud olekumuutusi.
    • deviation — nĂ€itab vÀÀrtuse hajuvust (tĂ€psust) reaction «standardhĂ€lbe» meetodit.
    • count — kui sageli on seda testi teostatud.
  2. KokkuvÔtte pÀevik vÔimaldab hinnata, millega kluster praegu tegeleb. Kuvatakse iteratsiooni (testi) number, ajatemple ning operatsiooni nimetus. Liialt pikk tÀitmine (> 5 minutit) viitab mingile probleemile.
  3. heart (sĂŒda) - praegune aeg. TöövĂ”ime hindamiseks visuaalne ĂŒlevaade meistrid tema tabelisse kirjutatakse pidevalt praegune aeg, kasutades meistri float IP-d. Edu korral kuvatakse tulemus selles paneelis.
  4. beat (pulss) - "praegune aeg", mis on varem skripti poolt salvestatud heart meistrisse, nĂŒĂŒd loetakse orjast tema float IP kaudu. See vĂ”imaldab visuaalselt hinnata orja töövĂ”imet ja replikatsiooni. Tuchanka1-s ei ole orje, kellel oleks float IP (ei ole orje, kes teenuseid pakuvad), kuid seal on kaks instantsi (DB), seega kuvatakse siin mitte beat, vaid heart teise instantsi.
  5. Klastri oleku jÀlgimine utiliidi kaudu pcs mon. NÀitab struktuuri, ressursside jaotust sÔlmedes ja muud kasulikku teavet.
  6. Siin kuvatakse sĂŒsteemi jĂ€lgimine iga klastris oleva virtuaalmasina kohta. Selliseid paneele vĂ”ib olla rohkem - nii palju virtuaalmasinaid, kui klastril on. Kaks graafikut CPU Load (virtuaalmasinatel on kaks protsessorit), virtuaalmasina nimi, System Load (nimetatakse Load Average, sest see on keskmine 5, 10 ja 15 minuti jooksul), protsesside andmed ja mĂ€lu jaotumine.
  7. Skripti jĂ€lgimine, mis teostab testimist. Rikkumise korral - Ă€kilise töö katkemise vĂ”i lĂ”putu ootamise tsĂŒkli korral - saab siit nĂ€ha selle kĂ€itumise pĂ”hjust.

Testimine toimub kahes etapis. Esmalt lĂ€bib skript kĂ”ik testiliigid, valides juhuslikult virtuaalmasina, millele test rakendada. SeejĂ€rel toimub lĂ”pmatu testimistsĂŒkkel, virtuaalsed masinad ja rikkumine valitakse iga kord juhuslikult. Skripti Ă€kiline lĂ”petamine (alumine paneel) vĂ”i lĂ”putu ootamise tsĂŒkkel (rohkem kui 5 minuti jooksul ĂŒhe operatsiooni tĂ€itmise aeg, see on nĂ€htav jĂ€lgimises) nĂ€itab, et mĂ”ni test selle klastris ebaĂ”nnestus.

Iga test koosneb jÀrgmiste toimingute seeriast:

  1. Funktsiooni kÀivitamine, mis simuleerib riket.
  2. Valmis? - klassi töövÔime taastumise ootamine (kui kÔik teenused on saadaval).
  3. Klastri taastumise ooteaeg kuvatakse (reaction).
  4. Repair - klass "parandatakse". PÀrast seda peaks see naasma tÀielikult töövÔimelisse olekusse ja olema valmis jÀrgmisteks riketeks.

Siin on nimekiri testidest koos kirjeldusega, mida nad teevad:

  • ForkBomb: loob "MĂ€lu ĂŒletĂ€itmine" fork-bombiga.
  • OutOfSpace: tĂ€idab ketast. Kuid test on pigem sĂŒmboolne, arvestades vĂ€hest koormust, mis testimise kĂ€igus tekib; ketta tĂ€itumisel PostgreSQL tavaliselt ei crash'ita.
  • Postgres-KILL: tapab PostgreSQL kĂ€suga killall -KILL postgres.
  • Postgres-STOP: peatab PostgreSQL kĂ€suga killall -STOP postgres.
  • PowerOff: "lĂŒlitab vĂ€lja" virtuaalmasina kĂ€suga VBoxManage controlvm "virtuaalmasin" poweroff.
  • Reset: taaskĂ€ivitab virtuaalmasina kĂ€suga VBoxManage controlvm "virtuaalmasin" reset.
  • SBD-STOP: peatab SBD deemonit kĂ€suga killall -STOP sbd.
  • ShutDown: saadab virtuaalmasinale kĂ€su SSH kaudu systemctl poweroff, sĂŒsteem lĂ”petab korralikult töö.
  • UnLink: vĂ”rgusisene isolatsioon, kĂ€sk VBoxManage controlvm "virtuaalmasin" setlinkstate1 off.

Testimise lĂ”petamine kas standardse kĂ€su tmux "kill-window" kaudu Ctrl-b &, vĂ”i kĂ€suga "detach-client" Ctrl-b d: sellega test lĂ”petatakse, tmux suletakse, virtuaalmasinad lĂŒlitatakse vĂ€lja.

Testimisel tuvastatud probleemid

  • Praegusel hetkel watchdog deemon sbd töötab jĂ€lgitavate deemonite peatamisega, kuid mitte nende hangumisega. SeetĂ”ttu kĂ€ituvad puudused, mis pĂ”hjustavad ainult hangumist, valesti Corosync ja Pacemaker, kuid siiski ei hangu sbd. Kontrollimiseks Corosync juba olemas PR#83 (GitHubis sbd), vastu vĂ”etud harusse master. Lubati (PR#83), et ka Pacemaker’ile tuleb midagi sarnast, loodan, et RedHat 8 tehakse. Kuid sellised "puudused" on teoreetilised, neid on hĂ”lbus kunstlikult imiteerida nĂ€iteks killall -STOP corosync, kuid kunagi ei esine need reaalses elus.

  • Uus Pacemaker versioonis CentOS 7 on vale sync_timeout on quorum device, mille tagajĂ€rjel ĂŒhe sĂ”lme tĂ”rke korral oli teise sĂ”lme taaskĂ€ivitamine teatud tĂ”enĂ€osusega, kuhu meistrilt pidanuks minema. Probleem lahendati sync_timeout on quorum device installeerimise kĂ€igus (skriptis setup/setup1). See parandamine ei olnud arendajate poolt vastu vĂ”etud Pacemaker, selle asemel lubati nad infrastruktuuri ĂŒmber kujundada nii, et see ajaks automaatselt vĂ€lja selle ajutise vahe.

  • Kui andmebaasi konfigureerimisel on mÀÀratud, et LC_MESSAGES (tekstisĂ”numites) vĂ”ib kasutada Unicode'i, nĂ€iteks ru_RU.UTF-8, siis kĂ€ivitamisel postgres keskkonnas, kus locale ei ole UTF-8, nĂ€iteks tĂŒhjas keskkonnas (siin pacemaker+pgsqlms(paf) kĂ€ivitab postgres), siis logis kuvatakse UTF-8 tĂ€htede asemel kĂŒsimĂ€rgid. PostgreSQL arendajad ei jĂ”udnud kokkuleppele, mida sel juhul teha. See on lahendatav, tuleb paigaldada LC_MESSAGES=en_US.UTF-8 andmebaasi instantsi konfigureerimisel (loomisel).

  • Kui wal_receiver_timeout on seadistatud (vaikimisi 60s), siis testides PostgreSQL-STOP master'is klastrites tuchanka3 ja tuchanka4 ei toimu replikatsiooni uuesti ĂŒhendamist uue master'iga. Replikatsioon on seal sĂŒnkroonne, seega peatub mitte ainult tööline, vaid ka uus master. Seda saab vĂ€ltida, seades wal_receiver_timeout=0 PostgreSQL seadistamisel.

  • Harva olen tĂ€heldanud PostgreSQL replikatsiooni seiskumist testis ForkBomb (mĂ€lude ĂŒlekĂŒllus). PĂ€rast ForkBombi ei pruugi töötajad mĂ”nikord uuesti uue master'iga ĂŒhendada. Olen sellist olukorda kohanud ainult klastrites tuchanka3 ja tuchanka4, kus sĂŒnkroonse replikatsiooni tĂ”ttu seiskus master. Probleem lahendus ennast mĂ”ne aja pĂ€rast (umbes kahe tunni pĂ€rast). Vajalik on tĂ€iendav uurimine, et see lahendada. SĂŒmpptomid sarnanevad varasema veaga, mis on pĂ”hjustatud muust tegurist, kuid on sama mĂ”ju.

Krogani pildiallikas on Deviant Art autori loal:

PostgreSQL ja Pacemaker pÔhinevate tÔrkeaatust peetavate klastrite modelleerimine

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster