Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Inleiding

'n Tyd gelede het ek die taak gekry om 'n failover-kluster te ontwikkel vir PostgreSQL, wat werksaam is in verskeie datasentrums wat deur vesel in dieselfde stad verbind is, en in staat is om die mislukking (byvoorbeeld verduistering) van een datasentrum te weerstaan. As 'n sagteware wat verantwoordelik is vir foutverdraagsaamheid, het ek gekies Pasaangeër, want dit is die amptelike oplossing van RedHat vir die skep van failover-klusters. Dit is goed omdat RedHat ondersteuning daarvoor bied, en omdat hierdie oplossing universeel (modulêr) is. Met die hulp daarvan sal dit moontlik wees om fouttoleransie nie net vir PostgreSQL te verskaf nie, maar ook vir ander dienste, hetsy deur gebruik te maak van standaardmodules of om dit vir spesifieke behoeftes te skep.

By hierdie besluit het 'n redelike vraag ontstaan: hoe foutverdraagsaam sal 'n failover-kluster wees? Om dit te ondersoek, het ek 'n toetsbank ontwikkel wat verskeie foute op die nodusse van die groepie simuleer, wag vir herstel, herstel die mislukte nodus en voortgaan om in 'n lus te toets. Aanvanklik is hierdie projek hapgsql genoem, maar mettertyd het ek verveeld geraak met die naam, wat net een vokaal het. Daarom het ek begin om foutverdraagsame databasisse te noem (en swewende IP's wat na hulle wys) krogan ('n karakter uit 'n rekenaarspeletjie, waarin alle belangrike organe gedupliseer word), en nodusse, trosse en die projek self is tuchanka (die planeet waar die krogans woon).

Die bestuur het dit nou goedgekeur open 'n projek vir die oopbrongemeenskap onder die MIT-lisensie. Die README sal binnekort in Engels vertaal word (omdat die Pacemaker- en PostgreSQL-ontwikkelaars na verwagting die hoofverbruikers sal wees), en ek het besluit om die ou Russiese weergawe van die README (gedeeltelik) in die vorm van hierdie artikel uit te reik.

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Klusters word op virtuele masjiene ontplooi VirtualBox. In totaal sal 12 virtuele masjiene ontplooi word (36GiB in totaal), wat 4 failover-klusters vorm (verskillende opsies). Die eerste twee groepe bestaan ​​uit twee PostgreSQL-bedieners wat in verskillende datasentrums geleë is en 'n gemeenskaplike bediener Getuig c kworum toestel (gehuisves op 'n goedkoop virtuele masjien in 'n derde datasentrum) wat onsekerheid oplos 50% / 50%deur 'n mens se stem uit te bring. Die derde groepering in drie datasentrums: een meester, twee slawe, nr kworum toestel. Die vierde groep bestaan ​​uit vier PostgreSQL-bedieners, twee per datasentrum: een meester, die res is replikas, en gebruik ook Getuig c kworum toestel. Die vierde oorleef die mislukking van twee bedieners of een datasentrum. Hierdie oplossing kan opgeskaal word na meer replikas indien nodig.

Tyddiens ntpd ook herkonfigureer vir fouttoleransie, maar dit gebruik die metode van ntpd (wees modus). Gedeelde bediener Getuig dien as 'n sentrale NTP-bediener, wat sy tyd na alle groepe versprei, en sodoende alle bedieners met mekaar sinchroniseer. As Getuig misluk of geïsoleer blyk te wees, dan sal een van die groepbedieners (binne die groep) sy tyd begin versprei. Hulpkas HTTP-instaanbediener ook opgewek tot Getuig, met sy hulp het ander virtuele masjiene toegang tot Yum-bewaarplekke. In werklikheid sal dienste soos akkurate tyd en instaanbediener heel waarskynlik op toegewyde bedieners aangebied word, en in die stand waarop hulle gehuisves word Getuig net om die aantal virtuele masjiene en spasie te bespaar.

weergawes

v0. Werk met CentOS 7 en PostgreSQL 11 op VirtualBox 6.1.

Klusterstruktuur

Alle klusters is ontwerp om in verskeie datasentrums geleë te wees, verenig in een plat netwerk en moet mislukking of netwerkisolasie van een datasentrum weerstaan. Dis hoekom is onmoontlik gebruik om teen te beskerm gesplete brein standaard Pasaangeër tegnologie genoem STONITH (Skiet Die Ander Node In Die Kop) of omheining. Die essensie daarvan: as die nodusse in die groep begin vermoed dat iets fout is met een of ander nodus, dit nie reageer of verkeerd optree nie, dan skakel hulle dit met geweld af deur middel van "eksterne" toestelle, byvoorbeeld 'n IPMI- of UPS-beheerkaart. Maar dit sal slegs werk in gevalle waar, met 'n enkele mislukking van die IPMI-bediener of UPS, hulle aanhou werk. Dit beplan ook om teen 'n baie meer katastrofiese mislukking te beskerm wanneer die hele datasentrum misluk (byvoorbeeld, is ontkrag). En met so 'n weiering, alles stonith-toestelle (IPMI, UPS, ens.) sal ook nie werk nie.

In plaas daarvan is die stelsel gebaseer op die idee van 'n kworum. Alle nodusse het 'n stem, en slegs diegene wat meer as die helfte van alle nodusse sien, kan werk. Hierdie getal "half + 1" word genoem kworum. As die kworum nie bereik word nie, dan besluit die nodus dat dit in netwerkisolasie is en moet sy hulpbronne afskakel, m.a.w. dit is so gesplete breinbeskerming. As die sagteware wat vir hierdie gedrag verantwoordelik is nie werk nie, dan behoort 'n waghond, byvoorbeeld, gebaseer op IPMI, te werk.

As die aantal nodusse ewe is ('n groepering in twee datasentrums), dan kan die sogenaamde onsekerheid ontstaan 50% / 50% (Vyftig vyftig) wanneer netwerkisolasie die groep presies in die helfte verdeel. Daarom word dit bygevoeg vir 'n ewe aantal nodusse kworum toestel - 'n veeleisende daemon wat op die goedkoopste virtuele masjien in die derde datasentrum uitgevoer kan word. Hy gee sy stem aan een van die segmente (wat hy sien), en los daardeur die 50%/50% onsekerheid op. Die bediener waarop die kworumtoestel sal loop, het ek gebel Getuig (terminologie van repmgr, ek het daarvan gehou).

Hulpbronne kan van plek tot plek beweeg, byvoorbeeld van foutiewe bedieners na diensbares, of op bevel van stelseladministrateurs. Sodat kliënte kan weet waar die hulpbronne geleë is wat hulle benodig (waar om aan te sluit?), drywende IP (dryf IP). Dit is die IP's wat Pacemaker om die nodusse kan beweeg (alles is in 'n plat netwerk). Elkeen van hulle simboliseer 'n hulpbron (diens) en sal geleë wees waar jy moet koppel om toegang tot hierdie diens te kry (in ons geval, die databasis).

Tuchanka1 (saamgeperste skema)

Struktuur

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Die idee was dat ons baie klein databasisse met 'n lae vrag het, waarvoor dit nie winsgewend is om 'n toegewyde slawebediener in warm bystandmodus te onderhou vir leesalleen-transaksies (daar is nie nodig vir so 'n vermorsing van hulpbronne nie).

Elke datasentrum het een bediener. Elke bediener het twee PostgreSQL-gevalle (in PostgreSQL-terminologie word hulle groepe genoem, maar om verwarring te voorkom, sal ek hulle gevalle noem (na analogie van ander databasisse), en ek sal net Pacemaker-klusters groepe noem). Een geval werk in meestermodus, en slegs dit verskaf dienste (slegs float IP lei daartoe). Die tweede instansie werk as 'n slaaf vir die tweede datasentrum, en sal slegs dienste lewer as sy meester misluk. Aangesien die meeste van die tyd slegs een van die twee instansies (die meester) dienste sal verskaf (versoeke uitvoer), is alle bedienerhulpbronne geoptimaliseer vir die meester (geheue word toegeken vir die shared_buffers-kas, ens.), maar sodat die tweede instansie het ook genoeg hulpbronne (alhoewel vir nie-optimale werk deur die lêerstelselkas) ingeval een van die datasentrums misluk. Die slaaf verskaf nie dienste nie (voer nie leesalleen-versoeke uit nie) tydens normale klusterwerking, sodat daar geen oorlog vir hulpbronne met die meester op dieselfde masjien is nie.

In die geval van twee nodusse is fouttoleransie slegs moontlik met asinchrone replikasie, aangesien met sinchrone replikasie, die mislukking van die slaaf sal lei tot die stop van die meester.

versuim om te getuig

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

versuim om te getuig (kworum toestel) Ek sal net vir die Tuchanka1-kluster oorweeg, dieselfde storie sal met al die ander wees. As getuie misluk, sal niks in die groepstruktuur verander nie, alles sal aanhou werk op dieselfde manier as wat dit gewerk het. Maar die kworum sal 2 uit 3 word, en daarom sal enige volgende mislukking noodlottig wees vir die groep. Dit moet nog dringend gedoen word.

Verwerping Tuchanka1

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Mislukking van een van die datasentrums vir Tuchanka1. In hierdie geval Getuig bring sy stem na die tweede nodus in die tweede datasentrum. Daar verander die voormalige slaaf in 'n meester, gevolglik werk albei meesters op dieselfde bediener en albei hul float-IP's wys na hulle.

Tuchanka2 (klassiek)

Struktuur

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Die klassieke skema van twee nodusse. Die meester werk aan die een, die slaaf werk aan die tweede. Albei kan versoeke uitvoer (die slaaf is slegs leesalleen), dus word daar na albei verwys deur float-IP: krogan2 is die meester, krogan2s1 is die slaaf. Beide die meester en die slaaf sal foutverdraagsaamheid hê.

In die geval van twee nodusse is fouttoleransie slegs moontlik met asinchrone replikasie, want met sinchrone replikasie sal die mislukking van die slaaf lei tot die stop van die meester.

Verwerping Tuchanka2

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

As een van die datasentrums misluk Getuig stem vir die tweede. Op die enigste werkende datasentrum sal die meester verhoog word, en beide vlottende IP's sal daarna verwys: meester en slaaf. Natuurlik moet die instansie op so 'n manier gekonfigureer word dat dit genoeg hulpbronne (verbindingslimiete, ens.) het om gelyktydig alle verbindings en versoeke van die meester- en slaafvlot-IP te aanvaar. Dit wil sê, tydens normale werking moet dit 'n voldoende marge vir limiete hê.

Tuchanka4 (baie slawe)

Struktuur

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Reeds nog 'n uiterste. Daar is databasisse wat baie leesalleen-versoeke het ('n tipiese geval van 'n hoogs gelaaide webwerf). Tuchanka4 is 'n situasie waar daar drie of meer slawe kan wees om sulke versoeke te hanteer, maar steeds nie te veel nie. Met 'n baie groot aantal slawe sal dit nodig wees om 'n hiërargiese replikasiestelsel uit te vind. In die minimum geval (in die prentjie), het elk van die twee datasentrums twee bedieners, wat elk 'n PostgreSQL-instansie het.

Nog 'n kenmerk van hierdie skema is dat dit reeds moontlik is om een ​​sinchrone replikasie hier te organiseer. Dit is gekonfigureer om, indien moontlik, na 'n ander datasentrum te repliseer, en nie na 'n replika in dieselfde datasentrum as die meester nie. Die meester en elke slaaf word aangedui deur 'n float IP. Vir goed, tussen die slawe sal dit nodig wees om 'n soort balansering van versoeke te doen sql instaanbediener, byvoorbeeld, aan die kliëntkant. Verskillende tipes kliënte kan verskillende tipes van vereis sql instaanbediener, en net die kliëntontwikkelaars weet wie watter een nodig het. Hierdie funksionaliteit kan óf deur 'n eksterne daemon óf deur 'n kliëntbiblioteek (verbindingspoel), ens. Dit alles is buite die bestek van die databasis failover cluster (failover SQL-instaanbediener kan onafhanklik geïmplementeer word, tesame met kliënt-failover).

Verwerping Tuchanka4

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

As een datasentrum (d.w.s. twee bedieners) misluk, stem getuies vir die tweede een. As gevolg hiervan werk twee bedieners in die tweede datasentrum: die meester werk op een, en die meester-float-IP wys daarna (om lees-skryf-versoeke te ontvang); en 'n slaaf met sinchrone replikasie loop op die tweede bediener, en een van die slaaf-float-IP's wys daarna (vir leesalleen-versoeke).

Die eerste ding om op te let: nie alle slawe-float-IP's sal werk nie, maar slegs een. En om korrek daarmee te werk, sal dit nodig wees sql instaanbediener herlei alle versoeke na die enigste oorblywende float IP; en as sql instaanbediener nee, jy kan alle float IP-slawe geskei deur kommas in die verbinding-URL lys. In daardie geval, met libpq die verbinding sal wees na die eerste werkende IP, soos gedoen in die outomatiese toetsstelsel. Miskien in ander biblioteke, byvoorbeeld JDBC, sal dit nie werk nie en is dit nodig sql instaanbediener. Dit word gedoen omdat float IP vir slawe verbied word om gelyktydig op een bediener te styg, sodat hulle eweredig onder slawebedieners versprei word as daar verskeie van hulle is.

Tweedens: selfs in die geval van 'n datasentrumfout, sal sinchroniese replikasie gehandhaaf word. En selfs as 'n sekondêre mislukking plaasvind, dit wil sê, een van die twee bedieners faal in die oorblywende datasentrum, sal die groepering, hoewel dit ophou om dienste te lewer, steeds inligting behou oor al die toegewyde transaksies waarvoor dit die verbintenis bevestig het (daar sal wees geen verlies inligting oor sekondêre mislukking).

Tuchanka3 (3 datasentrums)

Struktuur

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Dit is 'n groepering vir 'n situasie waar daar drie ten volle funksionerende datasentrums is, wat elk 'n ten volle funksionerende databasisbediener het. In hierdie geval kworum toestel nie nodig nie. 'n Meester werk in een datasentrum, en slawe werk in die ander twee. Replikasie is sinchronies, soos ENIGE (slaaf1, slaaf2), dit wil sê, die kliënt sal 'n verbintenisbevestiging ontvang wanneer enige van die slawe die eerste is om te reageer dat hy die verbintenis aanvaar het. Hulpbronne word aangedui deur een vlottende IP vir meester en twee vir slawe. Anders as Tuchanka4, is al drie vlottende IP's foutverdraagsaam. Om leesalleen SQL-navrae te balanseer, kan jy gebruik sql instaanbediener (met aparte fouttoleransie), of ken een slaaf-IP-sweef toe aan die helfte van die kliënte, en die tweede aan die ander helfte.

Verwerping Tuchanka3

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

As een van die datasentrums misluk, bly twee oor. In een word die meester- en vlot-IP van die meester verhoog, in die tweede word die slaaf- en beide slaaf-sweef-IP's (daar moet 'n dubbele hulpbronreserwe op die instansie wees om alle verbindings van beide slaaf-float-IP's te aanvaar). Sinchroniese replikasie tussen meesters en slawe. Die groep sal ook inligting stoor oor toegewyde en bevestigde transaksies (daar sal geen verlies aan inligting wees nie) in die geval van vernietiging van twee datasentrums (indien hulle nie terselfdertyd vernietig word nie).

Ek het besluit om nie 'n gedetailleerde beskrywing van die lêerstruktuur en ontplooiing in te sluit nie. As jy wil rondspeel, kan jy dit alles in die README lees. Ek gee slegs 'n beskrywing van outomatiese toetsing.

Outomatiese toetsstelsel

Om die fouttoleransie van trosse met nabootsing van verskeie foute na te gaan, is 'n outomatiese toetsstelsel gemaak. Geloods deur 'n draaiboek test/failure. Die skrif kan die aantal groepe wat jy wil toets as parameters neem. Byvoorbeeld, hierdie opdrag:

test/failure 2 3

sal slegs die tweede en derde groepie toets. As parameters nie gespesifiseer is nie, sal alle trosse getoets word. Alle trosse word parallel getoets en die resultaat word in die tmux-paneel vertoon. Tmux gebruik 'n toegewyde tmux-bediener, sodat die skrip onder die verstek tmux uitgevoer kan word, wat lei tot 'n geneste tmux. Ek beveel aan om die terminale in 'n groot venster en met 'n klein lettertipe te gebruik. Voordat die toets begin word, word alle virtuele masjiene teruggerol na 'n momentopname wanneer die skrif eindig setup.

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Die terminaal word in kolomme verdeel volgens die aantal getoetste trosse, by verstek (in die skermkiekie) is daar vier van hulle. Ek sal die inhoud van die kolomme beskryf deur Tuchanka2 as voorbeeld te gebruik. Die panele in die skermkiekie is genommer:

  1. Dit is waar toetsstatistieke vertoon word. Luidsprekers:
    • mislukking — die naam van die toets (funksie in die skrif) wat die mislukking naboots.
    • reaksie — die rekenkundige gemiddelde tyd in sekondes waarvoor die groep sy werkverrigting herstel het. Dit word gemeet vanaf die begin van die draaiboek wat die mislukking naboots, en tot die oomblik wanneer die groep sy gesondheid herstel en in staat is om voort te gaan om dienste te lewer. As die tyd baie kort is, byvoorbeeld ses sekondes (dit gebeur in groepe met verskeie slawe (Tuchanka3 en Tuchanka4)), beteken dit dat die wanfunksie op 'n asinchroniese slaaf beland het en geensins prestasie beïnvloed het nie, was daar geen groepstaatskakelaars.
    • afwyking - toon die verspreiding (akkuraatheid) van die waarde reaksie deur die standaardafwykingsmetode.
    • tel Hoeveel keer is hierdie toets uitgevoer.
  2. 'n Kort log laat jou toe om te evalueer wat die groep tans doen. Die iterasie (toets) nommer, tydstempel en bewerkingsnaam word vertoon. Te lang uitvoering (> 5 minute) dui op 'n soort probleem.
  3. hart (hart) is die huidige tyd. Vir visuele prestasie assessering meester die huidige tyd word voortdurend na sy tabel geskryf deur die meester se float-IP te gebruik. As dit suksesvol is, word die resultaat in hierdie paneel vertoon.
  4. klop (pols) - "huidige tyd", wat voorheen deur die draaiboek aangeteken is hart te bemeester, lees nou uit slaaf deur sy float IP. Laat jou toe om die prestasie van 'n slaaf en replikasie visueel te assesseer. Daar is geen slawe met float IP in Tuchanka1 nie (daar is geen slawe wat dienste lewer nie), maar daar is twee gevalle (DB), so dit sal nie hier gewys word nie klopEn hart tweede instansie.
  5. Monitering van die toestand van die groepering met behulp van die hulpprogram pcs mon. Toon die struktuur, verspreiding van hulpbronne deur nodusse en ander nuttige inligting.
  6. Dit vertoon stelselmonitering vanaf elke virtuele groepmasjien. Daar kan meer sulke panele wees - hoeveel virtuele masjiene die groep het. Twee grafieke SVE-lading (twee verwerkers in virtuele masjiene), virtuele masjien naam, Stelsel laai (Genoem Load Gemiddeld omdat dit gemiddeld oor 5, 10 en 15 minute was), prosesdata en geheuetoewysing.
  7. Spoor die skrif op wat die toetse uitvoer. In die geval van 'n wanfunksie - 'n skielike onderbreking van werk of 'n eindelose wagsiklus - hier kan jy die rede vir hierdie gedrag sien.

Toetsing word in twee fases uitgevoer. Eerstens gaan die skrif deur alle soorte toetse, en kies lukraak 'n virtuele masjien waarop hierdie toets toegepas word. Dan word 'n eindelose toetssiklus uitgevoer, virtuele masjiene en 'n wanfunksie word elke keer willekeurig gekies. Skielike beëindiging van die toetsskrif (onderste paneel) of 'n eindelose waglus vir iets (> 5 minute tyd om een ​​bewerking te voltooi, dit kan in die spoor gesien word) dui aan dat sommige van die toetse op hierdie groepie misluk het.

Elke toets bestaan ​​uit die volgende bewerkings:

  1. Begin 'n funksie wat 'n fout naboots.
  2. Gereed? - wag vir die herstel van die groep se gesondheid (wanneer alle dienste gelewer word).
  3. Trosherstel-uitteltyd word gewys (reaksie).
  4. Fix - die tros is "herstel". Daarna moet dit terugkeer na 'n ten volle operasionele toestand en gereed vir die volgende wanfunksie.

Hier is 'n lys van toetse met 'n beskrywing van wat hulle doen:

  • Vurkbom: Skep "Uit geheue" met 'n vurkbom.
  • Uit spasie uit: die hardeskyf is vol. Maar die toets is eerder simbolies, met die onbeduidende las wat tydens toetsing geskep word, wanneer die hardeskyf oorloop, misluk PostgreSQL gewoonlik nie.
  • Postgres-KILL: maak PostgreSQL dood met die opdrag killall -KILL postgres.
  • postgres-STOP: hang PostgreSQL met die opdrag killall -STOP postgres.
  • Skakel af: "de-energiseer" die virtuele masjien met die opdrag VBoxManage controlvm "виртуалка" poweroff.
  • Herstel: herlaai die virtuele masjien met die opdrag VBoxManage controlvm "виртуалка" reset.
  • SBD STOP: skort die SBD-demoon op met die opdrag killall -STOP sbd.
  • Afsluit: via SSH stuur 'n opdrag na die virtuele masjien systemctl poweroff, sluit die stelsel grasieus af.
  • ontkoppel: netwerk isolasie, opdrag VBoxManage controlvm "виртуалка" setlinkstate1 off.

Beëindig die toets met die standaard tmux-opdrag "kill-window" ctrl-b&, of deur opdrag "losmaak-kliënt" ctrl-bd: terselfdertyd word toetsing voltooi, tmux is gesluit, virtuele masjiene word afgeskakel.

Probleme wat tydens toetsing geïdentifiseer is

  • Op hierdie oomblik waghond daemon sbd hanteer om waargenome daemone te stop, maar nie om hulle te vries nie. En gevolglik word wanfunksies verkeerd uitgewerk, wat slegs tot 'n vriespunt lei Corosync и Pasaangeër, maar nie hang nie sbd... Vir tjek Corosync het reeds PR#83 (op GitHub by sbd), in die tak aanvaar meester. Hulle het belowe (in PR#83) dat daar iets soortgelyks vir Pacemaker sal wees, ek hoop dat deur Rooi Hoed 8 sal so maak. Maar sulke "wanfunksies" is spekulatief, kan maklik kunsmatig nageboots word deur bv. killall -STOP corosyncmaar ontmoet nooit in die regte lewe nie.

  • У Pasaangeër in die weergawe vir CentOS 7 verkeerd gestel sync_timeout у kworum toestel, as gevolg daarvan as een nodus misluk het, het die tweede nodus met 'n mate van waarskynlikheid herlaai, waarheen die meester veronderstel was om te verhuis. Genees deur vergroting sync_timeout у kworum toestel tydens ontplooiing (in skrif setup/setup1). Hierdie wysiging is nie deur die ontwikkelaars aanvaar nie Pasaangeër, in plaas daarvan het hulle belowe om die infrastruktuur op so 'n manier te herwerk (in 'n onbepaalde toekoms) dat hierdie tydsverloop outomaties bereken word.

  • As jy tydens databasiskonfigurasie gespesifiseer het LC_MESSAGES (teksboodskappe) Unicode kan gebruik word, bv. ru_RU.UTF-8, dan by opstart postgres in 'n omgewing waar die plek nie UTF-8 is nie, sê, in 'n leë omgewing (hier pasaangeër+pgsqlms(paf) begin postgres), dan in die log in plaas van UTF-8 letters sal daar vraagtekens wees. Die PostgreSQL-ontwikkelaars het nooit saamgestem oor wat om in hierdie geval te doen nie. Dit kos, moet jy sit LC_MESSAGES=en_US.UTF-8 wanneer 'n DB-instansie gekonfigureer (skep) word.

  • As wal_receiver_timeout ingestel is (by verstek is dit 60s), dan wanneer PostgreSQL-STOP op die meester in tuchanka3- en tuchanka4-klusters getoets word Replikasie koppel nie weer aan 'n nuwe meester nie. Replikasie daar is sinchronies, so nie net die slaaf stop nie, maar ook die nuwe meester. Kry deur wal_receiver_timeout=0 te stel wanneer PostgreSQL gekonfigureer word.

  • Ek het soms gesien hoe PostgreSQL-replikasie in die ForkBomb-toets hang (geheue-oorloop). Na ForkBomb kan slawe soms nie weer aan die nuwe meester koppel nie. Ek het dit net in tuchanka3- en tuchanka4-klusters gesien, waar die meester gehang het as gevolg van die feit dat replikasie sinchronies is. Die probleem het vanself verdwyn, na 'n lang tyd (ongeveer twee uur). Meer navorsing is nodig om dit reg te stel. Die simptome is soortgelyk aan die vorige gogga, wat deur 'n ander oorsaak veroorsaak word, maar met dieselfde gevolge.

Krogan foto geneem uit afwykende Art met die toestemming van die skrywer:

Modellering van failover-klusters gebaseer op PostgreSQL en Pacemaker

Bron: will.com

Voeg 'n opmerking