Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

L-għan ewlieni ta 'Patroni huwa li jipprovdi Disponibbiltà Għolja għal PostgreSQL. Iżda Patroni huwa biss mudell, mhux għodda lesta (li, b'mod ġenerali, jingħad fid-dokumentazzjoni). Mal-ewwel daqqa t'għajn, wara li waqqfet Patroni fil-laboratorju tat-test, tista' tara x'għodda mill-aqwa hija u kemm titratta faċilment it-tentattivi tagħna biex inkissru l-cluster. Madankollu, fil-prattika, f'ambjent ta 'produzzjoni, kollox mhux dejjem iseħħ daqshekk sabiħ u eleganti bħal f'laboratorju tat-test.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Jien ngħidlek ftit dwari nnifsi. Bdejt bħala amministratur tas-sistema. Ħadem fl-iżvilupp tal-web. Ilni naħdem fid-Data Egret mill-2014. Il-kumpanija hija involuta fil-konsultazzjoni fil-qasam tal-Postgres. U naqdu eżattament Postgres, u naħdmu ma 'Postgres kuljum, għalhekk għandna għarfien espert differenti relatat mal-operazzjoni.

U fl-aħħar tal-2018, bdejna bil-mod nużaw Patroni. U xi esperjenza ġiet akkumulata. Aħna b'xi mod iddijanjostikatiha, irfinajnaha, wasalna għall-aħjar prattiki tagħna. U f’dan ir-rapport se nitkellem dwarhom.

Apparti minn Postgres, inħobb il-Linux. Inħobb nitfaqqa fiha u nesplora, inħobb niġbor il-qlub. Inħobb il-virtwalizzazzjoni, kontenituri, docker, Kubernetes. Dan kollu jinteressani, għax id-drawwiet tal-amministrazzjoni qodma qed jaffettwaw. Inħobb nittratta l-monitoraġġ. U nħobb l-affarijiet tal-postgres relatati mal-amministrazzjoni, jiġifieri r-replikazzjoni, il-backup. U fil-ħin liberu tiegħi nikteb fil-Go. Jien m'iniex inġinier tas-softwer, nikteb biss għalija nnifsi f'Go. U jagħtini pjaċir.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

  • Naħseb li ħafna minnkom jafu li Postgres m'għandux HA (Disponibbiltà Għolja) barra mill-kaxxa. Biex tikseb HA, għandek bżonn tinstalla xi ħaġa, tikkonfiguraha, tagħmel sforz u ġġibu.
  • Hemm diversi għodod u Patroni huwa wieħed minnhom li jsolvi l-HA pjuttost jibred u tajjeb ħafna. Imma billi npoġġuh kollu f’laboratorju tat-test u nħaddmuh, nistgħu naraw li kollox jaħdem, nistgħu nirriproduċu xi problemi, naraw kif Patroni jaqdihom. U naraw li kollox jaħdem tajjeb.
  • Iżda fil-prattika, iffaċċjajna problemi differenti. U se nitkellem dwar dawn il-problemi.
  • Jien ngħidlek kif iddijanjostikajnaha, dak li tweakajna - kemm jekk għenitna jew le.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

  • Mhux se ngħidlek kif tinstalla Patroni, għax tista 'tfittex fuq l-Internet, tista' tħares lejn il-fajls tal-konfigurazzjoni biex tifhem kif jibda kollox, kif huwa kkonfigurat. Tista 'tifhem l-iskemi, arkitetturi, issib informazzjoni dwarha fuq l-Internet.
  • Mhux se nitkellem dwar l-esperjenza ta’ xi ħadd ieħor. Se nitkellem biss dwar il-problemi li ffaċċjajna.
  • U mhux se nitkellem dwar problemi li huma barra minn Patroni u PostgreSQL. Jekk, pereżempju, hemm problemi assoċjati mal-ibbilanċjar, meta l-cluster tagħna waqa’, mhux se nitkellem dwarha.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U ċaħda żgħira qabel ma nibdew ir-rapport tagħna.

Dawn il-problemi kollha li ltqajna magħhom, kellnahom fl-ewwel 6-7-8 xhur ta 'operazzjoni. Maż-żmien, wasalna għall-aħjar prattiki interni tagħna. U l-problemi tagħna sparixxew. Għalhekk, ir-rapport tħabbar madwar sitt xhur ilu, meta kien kollu frisk f’rasi u ftakart kollox perfettament.

Fil-kors tat-tħejjija tar-rapport, diġà qajjejt postmortems qodma, ħares lejn iż-zkuk. U xi wħud mid-dettalji jistgħu jintesew, jew xi wħud minn xi dettalji ma setgħux jiġu investigati bis-sħiħ waqt l-analiżi tal-problemi, għalhekk f'xi punti jista 'jidher li l-problemi mhumiex ikkunsidrati bis-sħiħ, jew hemm xi nuqqas ta' informazzjoni. U għalhekk nitlobkom skużani għal dan il-mument.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

X'inhu Patroni?

  • Dan huwa mudell għall-bini HA. Dak huwa dak li jgħid fid-dokumentazzjoni. U mil-lat tiegħi, din hija kjarifika korretta ħafna. Patroni mhix balla tal-fidda li ssolvi l-problemi kollha tiegħek, jiġifieri trid tagħmel sforz biex taħdem u ġġib benefiċċji.
  • Dan huwa servizz ta 'aġent li huwa installat fuq kull servizz ta' database u huwa tip ta 'sistema init għall-Postgres tiegħek. Jibda Postgres, iwaqqaf, jerġa 'jibda, jikkonfigura mill-ġdid, u jibdel it-topoloġija tal-cluster tiegħek.
  • Għaldaqstant, sabiex jinħażen l-istat tal-cluster, ir-rappreżentazzjoni attwali tiegħu, kif jidher, hemm bżonn ta 'xi tip ta' ħażna. U minn dan il-lat, Patroni ħa t-triq tal-ħażna tal-istat f'sistema esterna. Hija sistema ta 'ħażna ta' konfigurazzjoni distribwita. Jista 'jkun Etcd, Consul, ZooKeeper, jew kubernetes Etcd, jiġifieri waħda minn dawn l-għażliet.
  • U waħda mill-karatteristiċi ta 'Patroni hija li toħroġ l-awtofiler mill-kaxxa, biss billi twaqqafha. Jekk nieħdu Repmgr għal tqabbil, allura l-filer huwa inkluż hemmhekk. B'Repmgr, inġibu bidla, imma jekk irridu autofiler, allura għandna bżonn nikkonfigurawh addizzjonalment. Patroni diġà għandu autofiler barra mill-kaxxa.
  • U hemm ħafna affarijiet oħra. Per eżempju, manutenzjoni ta 'konfigurazzjonijiet, tferrigħ ta' repliki ġodda, backup, eċċ Iżda dan huwa lil hinn mill-ambitu tar-rapport, mhux se nitkellem dwarha.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U riżultat żgħir huwa li l-kompitu ewlieni ta 'Patroni huwa li jagħmel autofile tajjeb u affidabbli sabiex il-cluster tagħna jibqa' operattiv u l-applikazzjoni ma tinnotax bidliet fit-topoloġija tal-cluster.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Imma meta nibdew nużaw Patroni, is-sistema tagħna ssir ftit aktar ikkumplikata. Jekk qabel kellna Postgres, allura meta nużaw Patroni nġibu Patroni innifsu, inġibu DCS fejn jinħażen l-istat. U kollox irid jaħdem b'xi mod. Allura x'jista' jmur ħażin?

Jista' jinkiser:

  • Postgres jista’ jinkiser. Jista 'jkun kaptan jew replika, wieħed minnhom jista' jonqos.
  • Il-Patruni stess jista’ jkisser.
  • Id-DCS fejn jinħażen l-istat jista' jinkiser.
  • U n-netwerk jista 'jinkisser.

Dawn il-punti kollha se nikkunsidra fir-rapport.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Se nikkunsidra l-każijiet hekk kif isiru aktar kumplessi, mhux mil-lat li l-każ jinvolvi ħafna komponenti. U mil-lat ta 'sentimenti suġġettivi, li dan il-każ kien diffiċli għalija, kien diffiċli li żarmah ... u viċi versa, xi każ kien ħafif u kien faċli li żarmah.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U l-ewwel każ huwa l-aktar faċli. Dan huwa l-każ meta ħadna cluster tad-database u skjerajna l-ħażna DCS tagħna fuq l-istess cluster. Dan huwa l-iżball l-aktar komuni. Dan huwa żball fil-bini ta 'arkitetturi, jiġifieri, il-kombinazzjoni ta' komponenti differenti f'post wieħed.

Allura, kien hemm filer, ejja nittrattaw dak li ġara.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U hawn aħna interessati meta ġara l-filer. Jiġifieri, aħna interessati f'dan il-mument fiż-żmien meta l-istat tal-cluster inbidel.

Iżda l-filer mhux dejjem ikun istantanju, jiġifieri ma jieħu ebda unità ta 'żmien, jista' jiġi ttardjat. Jista 'jkun fit-tul.

Għalhekk, għandu ħin tal-bidu u ħin tat-tmiem, jiġifieri huwa avveniment kontinwu. U naqsmu l-avvenimenti kollha fi tliet intervalli: għandna ħin qabel il-filer, waqt il-filer u wara l-filer. Jiġifieri, aħna nikkunsidraw l-avvenimenti kollha f'din il-kalendarju.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U l-ewwel ħaġa, meta ġara filer, infittxu l-kawża ta 'dak li ġara, x'kienet il-kawża ta' dak li wassal għall-filer.

Jekk inħarsu lejn iż-zkuk, ikunu zkuk klassiċi tal-Patroni. Jgħidilna fihom li s-server sar il-kaptan, u r-rwol tal-kaptan għadda għal dan in-node. Hawnhekk huwa enfasizzat.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Sussegwentement, irridu nifhmu għaliex il-filer ġara, jiġifieri x'avvenimenti seħħew li kkawżaw li r-rwol prinċipali jimxi minn nodu għal ieħor. U f'dan il-każ, kollox huwa sempliċi. Għandna żball fl-interazzjoni mas-sistema tal-ħażna. Il-kaptan induna li ma setax jaħdem ma 'DCS, jiġifieri, kien hemm xi tip ta' problema bl-interazzjoni. U jgħid li ma jistax jibqa’ kaptan u jirriżenja. Din il-linja "demoted self" tgħid eżattament hekk.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Jekk inħarsu lejn l-avvenimenti li ppreċedew il-filer, nistgħu naraw hemm ir-raġunijiet stess li kkawżaw il-problema biex tkompli l-wizard.

Jekk inħarsu lejn il-logs Patroni, naraw li għandna ħafna żbalji, timeouts, jiġifieri l-aġent Patroni ma jistax jaħdem mad-DCS. F'dan il-każ, dan huwa l-aġent Konslu, li qed jikkomunika fuq il-port 8500.

U l-problema hawnhekk hija li Patroni u d-database qed jaħdmu fuq l-istess host. U s-servers tal-Konslu tnedew fuq l-istess node. Billi ħloqna tagħbija fuq is-server, ħloqna problemi għas-servers tal-Konslu wkoll. Ma setgħux jikkomunikaw sew.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Wara xi żmien, meta t-tagħbija naqset, il-Patruni tagħna reġa’ seta’ jikkomunika mal-aġenti. Ix-xogħol normali kompla. U l-istess server Pgdb-2 reġa' sar il-kaptan. Jiġifieri, kien hemm flip żgħir, li minħabba fih in-node rriżenja s-setgħat tal-kaptan, u mbagħad ħaduhom mill-ġdid, jiġifieri, kollox lura kif kien.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U dan jista’ jitqies bħala allarm falz, jew jista’ jitqies li Patroni għamel kollox sew. Jiġifieri, induna li ma setax iżomm l-istat tal-cluster u neħħa l-awtorità tiegħu.

U hawn il-problema qamet minħabba l-fatt li s-servers tal-Konslu huma fuq l-istess hardware bħall-bażijiet. Għaldaqstant, kwalunkwe tagħbija: kemm jekk hija t-tagħbija fuq diski jew proċessuri, taffettwa wkoll l-interazzjoni mal-cluster Konslu.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U ddeċidejna li m'għandux jgħixu flimkien, allokajna cluster separat għall-Konslu. U Patroni kien diġà qed jaħdem ma’ Konslu separat, jiġifieri kien hemm cluster separat ta’ Postgres, cluster separat ta’ Konslu. Din hija struzzjoni bażika dwar kif iġorru u żżomm dawn l-affarijiet kollha sabiex ma tgħix flimkien.

Bħala għażla, tista 'tgħawweġ il-parametri ttl, loop_wait, retry_timeout, jiġifieri tipprova tgħix dawn il-qċaċet tat-tagħbija għal żmien qasir billi żżid dawn il-parametri. Iżda din mhix l-iktar għażla adattata, minħabba li din it-tagħbija tista 'tkun twila fiż-żmien. U aħna sempliċement se mmorru lil hinn minn dawn il-limiti ta 'dawn il-parametri. U dan jista 'ma tantx jgħin.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

L-ewwel problema, kif tifhem, hija sempliċi. Ħadna u poġġejna d-DCS flimkien mal-bażi, sibna problema.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

It-tieni problema hija simili għall-ewwel. Huwa simili peress li għal darb'oħra għandna problemi ta' interoperabilità mas-sistema DCS.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Jekk inħarsu lejn ir-zkuk, naraw li nerġgħu għandna żball ta 'komunikazzjoni. U Patroni jgħid li ma nistax jinteraġixxi mad-DCS sabiex il-kaptan attwali jidħol fil-modalità replika.

Il-kaptan il-qadim isir replika, hawn Patroni jaħdem, kif għandu jkun. Imexxi pg_rewind biex jerġa 'jġib lura r-reġistru tat-tranżazzjonijiet u mbagħad qabbad mal-kaptan il-ġdid biex ilaħħaq mal-kaptan il-ġdid. Hawn Patroni jaħdem kif suppost.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Hawnhekk irridu nsibu l-post li ppreċediet il-filer, jiġifieri dawk l-iżbalji li kkawżawna li jkollna filer. U f'dan ir-rigward, zkuk Patroni huma pjuttost konvenjenti biex jaħdmu magħhom. Huwa jikteb l-istess messaġġi f'ċertu intervall. U jekk nibdew scrolling minn dawn ir-zkuk malajr, allura naraw mir-zkuk li z-zkuk inbidlu, li jfisser li bdew xi problemi. Nirritornaw malajr f’dan il-post, naraw x’jiġri.

U f'sitwazzjoni normali, iż-zkuk jidhru xi ħaġa bħal din. Is-sid tas-serratura jiġi ċċekkjat. U jekk is-sid, pereżempju, inbidel, allura jistgħu jseħħu xi ġrajjiet li Patroni jrid iwieġeb għalihom. Iżda f'dan il-każ, aħna tajbin. Qegħdin infittxu l-post fejn bdew l-iżbalji.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U wara li skrollja sal-punt fejn bdew jidhru l-iżbalji, naraw li kellna auto-fileover. U peress li l-iżbalji tagħna kienu relatati mal-interazzjoni mad-DCS u fil-każ tagħna użajna l-Konslu, inħarsu wkoll lejn ir-zkuk tal-Konslu, x'ġara hemmhekk.

Meta wieħed iqabbel bejn wieħed u ieħor il-ħin tal-filer u l-ħin fir-zkuk tal-Konslu, naraw li l-ġirien tagħna fil-cluster tal-Konsli bdew jiddubitaw l-eżistenza ta 'membri oħra tal-cluster tal-Konsli.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U jekk tħares lejn il-ġurnali ta 'aġenti Konsli oħra, tista' wkoll tara li hemm xi tip ta 'kollass tan-netwerk għaddej hemmhekk. U l-membri kollha tal-grupp Konslu jiddubitaw l-eżistenza ta 'xulxin. U dan kien l-impetu għall-filer.

Jekk tħares lejn dak li ġara qabel dawn l-iżbalji, tista 'tara li hemm kull xorta ta' żbalji, pereżempju, skadenza, RPC waqa ', jiġifieri, hemm b'mod ċar xi tip ta 'problema fl-interazzjoni tal-membri tal-grupp Konslu ma' xulxin .

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

L-aktar tweġiba sempliċi hija li tissewwa n-netwerk. Imma għalija, bilwieqfa fuq il-podju, faċli ngħid dan. Iżda ċ-ċirkostanzi huma tali li mhux dejjem il-klijent jiflaħ biex isewwi n-netwerk. Jista 'jgħix f'DC u jista' ma jkunx kapaċi jsewwi n-netwerk, jaffettwa t-tagħmir. U għalhekk huma meħtieġa xi għażliet oħra.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Hemm għażliet:

  • L-iktar għażla sempliċi, li hija miktuba, fl-opinjoni tiegħi, anke fid-dokumentazzjoni, hija li tiddiżattiva l-kontrolli Konslu, jiġifieri, sempliċement tgħaddi firxa vojta. U aħna ngħidu lill-aġent Konslu biex ma juża l-ebda kontroll. B'dawn il-kontrolli, nistgħu ninjoraw dawn il-maltempati tan-netwerk u ma nibdewx filer.
  • Għażla oħra hija li tiċċekkja doppjament raft_multiplier. Dan huwa parametru tas-server tal-Konslu nnifsu. B'mod awtomatiku, huwa ssettjat għal 5. Dan il-valur huwa rrakkomandat mid-dokumentazzjoni għal ambjenti ta 'stating. Fil-fatt, dan jaffettwa l-frekwenza tal-messaġġi bejn il-membri tan-netwerk tal-Konsuli. Fil-fatt, dan il-parametru jaffettwa l-veloċità tal-komunikazzjoni tas-servizz bejn il-membri tal-grupp Konslu. U għall-produzzjoni, huwa diġà rakkomandat li titnaqqas sabiex in-nodi jiskambjaw messaġġi aktar spiss.
  • Għażla oħra li ħriġna hija li nżidu l-prijorità tal-proċessi tal-Konslu fost proċessi oħra għall-iskedar tal-proċess tas-sistema operattiva. Hemm tali parametru "sabiħ", huwa biss jiddetermina l-prijorità tal-proċessi li titqies mill-iskedar tal-OS meta l-iskedar. Naqqasna wkoll il-valur sabiħ għall-aġenti Konsuli, i.e. żiedet il-prijorità sabiex is-sistema operattiva tagħti lill-proċessi Konslu aktar ħin biex jaħdmu u jeżegwixxu l-kodiċi tagħhom. Fil-każ tagħna, dan issolvi l-problema tagħna.
  • Għażla oħra hija li ma tużax Konslu. Għandi ħabib li huwa partitarju kbir tal-Eċċd. U regolarment nargumentaw miegħu liema huwa aħjar Eċċd jew Konslu. Iżda f'termini ta 'liema huwa aħjar, aħna normalment naqblu miegħu li Konslu għandu aġent li għandu jkun qed jaħdem fuq kull node b'database. Jiġifieri l-interazzjoni tal-Patroni mal-cluster tal-Konslu tgħaddi minn dan l-aġent. U dan l-aġent isir konġestjoni. Jekk jiġri xi ħaġa lill-aġent, allura Patroni ma jistax jaħdem aktar mal-cluster Konslu. U din hija l-problema. M'hemm l-ebda aġent fil-pjan Etcd. Patroni jista 'jaħdem direttament ma' lista ta 'servers Etcd u diġà jikkomunika magħhom. F'dan ir-rigward, jekk tuża Etcd fil-kumpanija tiegħek, allura Etcd probabbilment tkun għażla aħjar minn Konslu. Iżda aħna fil-klijenti tagħna dejjem huma limitati minn dak li l-klijent għażel u juża. U għandna Konslu fil-biċċa l-kbira għall-klijenti kollha.
  • U l-aħħar punt huwa li tirrevedi l-valuri tal-parametri. Nistgħu ngħollu dawn il-parametri bit-tama li l-problemi tan-netwerk għal żmien qasir tagħna jkunu qosra u ma jaqgħux barra mill-firxa ta 'dawn il-parametri. Dan il-mod nistgħu nnaqqsu l-aggressività ta 'Patroni għall-awtofile jekk iseħħu xi problemi tan-netwerk.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Naħseb ħafna li jużaw Patroni huma familjari ma 'dan il-kmand.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Dan il-kmand juri l-istat attwali tal-cluster. U mal-ewwel daqqa t'għajn, din l-istampa tista' tidher normali. Għandna kaptan, għandna replika, m'hemm l-ebda dewmien ta 'replikazzjoni. Iżda din l-istampa hija normali eżattament sakemm nafu li dan il-cluster għandu jkollu tliet nodi, mhux tnejn.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Għaldaqstant, kien hemm autofile. U wara dan l-awtofile, ir-replika tagħna sparixxa. Irridu nsibu għaliex sparixxa u nġibuha lura, nirrestawrawha. U nerġgħu mmorru fil-zkuk u naraw għaliex kellna auto-fileover.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

F'dan il-każ, it-tieni replika saret il-kaptan. Huwa kollox sew hawn.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U rridu nħarsu lejn ir-replika li waqgħet u li mhix fil-cluster. Niftħu r-zkuk tal-Patroni u naraw li kellna problema waqt il-proċess tal-konnessjoni mal-cluster fl-istadju pg_wind. Biex tikkonnettja mal-cluster, għandek bżonn tirrewind ir-reġistru tat-tranżazzjonijiet, titlob ir-reġistru tat-tranżazzjonijiet meħtieġ mingħand il-kaptan, u tużah biex tlaħħaq mal-kaptan.

F'dan il-każ, m'għandniex log tat-tranżazzjonijiet u r-replika ma tistax tibda. Għaldaqstant, inwaqqfu lil Postgres bi żball. U għalhekk mhuwiex fil-cluster.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Irridu nifhmu għaliex mhux fil-cluster u għaliex ma kienx hemm zkuk. Immorru għand il-kaptan il-ġdid u nħarsu lejn dak li għandu fil-zkuk. Jirriżulta li meta pg_rewind sar, seħħ checkpoint. U wħud mir-reġistri tat-tranżazzjonijiet qodma kienu sempliċement isem ġdid. Meta l-kaptan l-antik ipprova jgħaqqad mal-kaptan il-ġdid u jfittex dawn ir-zkuk, diġà ngħataw isem ġdid, sempliċement ma kinux jeżistu.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Qabbilt timestamps meta ġraw dawn l-avvenimenti. U hemm id-differenza hija litteralment 150 millisekondi, jiġifieri, il-punt ta 'kontroll tlesta fi 369 millisekondi, is-segmenti WAL ġew isem ġdid. U litteralment f'517, wara 150 millisekonda, rewind beda fuq ir-replika l-antika. Jiġifieri, litteralment 150 millisekondi kien biżżejjed għalina sabiex ir-replika ma setgħetx tgħaqqad u taqla '.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

X'inhuma l-għażliet?

Inizjalment użajna slots ta 'replikazzjoni. Ħsibna li kien tajjeb. Għalkemm fl-ewwel stadju ta 'operazzjoni aħna mitfija l-islots. Deher lilna li jekk is-slots jakkumulaw ħafna ta 'segmenti WAL, nistgħu niżlu l-kaptan. Hu se jaqa’. Batejna għal xi żmien mingħajr slots. U indunajna li għandna bżonn is-slots, irritornajna s-slots.

Iżda hawn problema, li meta l-kaptan imur għar-replika, iħassar is-slots u jħassar is-segmenti WAL flimkien mas-slots. U biex neliminaw din il-problema, iddeċidejna li ngħollu l-parametru wal_keep_segments. Huwa default għal 8 segmenti. Għoljaha għal 1 u ħares lejn kemm kellna spazju ħieles. U tajna 000-il gigabytes għal wal_keep_segments. Jiġifieri, meta naqleb, dejjem għandna riżerva ta '16 gigabytes ta' zkuk tat-tranżazzjonijiet fuq in-nodi kollha.

U plus - għadu rilevanti għal kompiti ta 'manutenzjoni fit-tul. Ejja ngħidu li għandna bżonn naġġornaw waħda mir-repliki. U rridu nitfih. Għandna bżonn naġġornaw is-softwer, forsi s-sistema operattiva, xi ħaġa oħra. U meta nitfi replika, l-islott għal dik ir-replika jitneħħa wkoll. U jekk nużaw wal_keep_segments żgħir, allura b'assenza twila ta 'replika, ir-reġistri tat-tranżazzjonijiet jintilfu. Aħna se ngħollu replika, se titlob dawk ir-reġistri tat-tranżazzjonijiet fejn waqfet, iżda jistgħu ma jkunux fuq il-kaptan. U r-replika ma tkunx tista' tikkonnettja lanqas. Għalhekk, inżommu ħażna kbira taʼ rivisti.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Għandna bażi ta 'produzzjoni. Diġà hemm proġetti għaddejjin.

Kien hemm filer. Dħalna u ħares - kollox huwa fl-ordni, ir-repliki huma f'posthom, m'hemm l-ebda dewmien ta 'replikazzjoni. M'hemm l-ebda żbalji fil-zkuk lanqas, kollox huwa fl-ordni.

It-tim tal-prodott jgħid li għandu jkun hemm xi dejta, iżda narawha minn sors wieħed, iżda ma narawhiex fid-database. U rridu nifhmu x’ġara minnhom.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Jidher ċar li pg_rewind qbiżthom. Dan mill-ewwel fhimna, imma morna naraw x’qed jiġri.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Fiz-zkuk, dejjem nistgħu nsibu meta ġara l-filer, min sar il-kaptan, u nistgħu niddeterminaw min kien il-kaptan antik u meta ried isir replika, jiġifieri għandna bżonn dawn ir-zkuk biex insiru nafu l-ammont ta’ zkuk tat-tranżazzjonijiet li intilfet.

Il-kaptan il-qadim tagħna reġa' beda. U Patroni kien irreġistrat fl-autorun. Imniedi Patroni. Imbagħad beda Postgres. B'mod aktar preċiż, qabel ma beda Postgres u qabel ma għamilha replika, Patroni nieda l-proċess pg_wind. Għaldaqstant, huwa ħassar parti mir-zkuk tat-tranżazzjonijiet, niżżel oħrajn ġodda u kkonnettja. Hawn Patroni ħadem bil-għaqal, jiġifieri kif mistenni. Il-cluster ġie restawrat. Kellna 3 nodes, wara l-filer 3 nodes - kollox jibred.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Tlifna xi dejta. U rridu nifhmu kemm tlifna. Qegħdin infittxu biss il-mument meta kellna rewind. Nistgħu nsibuh f'daħliet bħal dawn fil-ġurnal. Ir-rewind beda, għamel xi ħaġa hemmhekk u spiċċa.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Irridu nsibu l-pożizzjoni fir-reġistru tat-tranżazzjonijiet fejn ħalla l-kaptan antik. F'dan il-każ, din hija l-marka. U għandna bżonn it-tieni marka, jiġifieri, id-distanza li biha l-kaptan l-antik huwa differenti minn dak il-ġdid.

Nieħdu l-pg_wal_lsn_diff tas-soltu u nqabblu dawn iż-żewġ marki. U f'dan il-każ, ikollna 17-il megabytes. Ħafna jew ftit, kulħadd jiddeċiedi għalih innifsu. Għax għal xi ħadd 17-il megabytes mhux ħafna, għal xi ħadd huwa ħafna u inaċċettabbli. Hawnhekk, kull individwu jiddetermina għalih innifsu skont il-ħtiġijiet tan-negozju.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Imma x’sibna għalina nfusna?

L-ewwel, irridu niddeċiedu għalina nfusna - għandna dejjem bżonn li Patroni jinxtegħel awtomatikament wara reboot tas-sistema? Ħafna drabi jiġri li rridu mmorru għand il-kaptan il-qadim, naraw kemm mar. Forsi jispezzjona segmenti tar-reġistru tat-tranżazzjonijiet, ara x'hemm. U biex nifhmu jekk nistgħux nitilfu din id-dejta jew jekk hemmx bżonn li nħaddmu l-kaptan antik f'modalità waħedha sabiex niġbdu din id-dejta 'l barra.

U wara dan biss irridu niddeċiedu jekk nistgħux inwarrbu din id-dejta jew nistgħu nirrestawrawha, qabbad dan in-node bħala replika mal-cluster tagħna.

Barra minn hekk, hemm parametru "maximum_lag_on_failover". B'mod awtomatiku, jekk il-memorja tiegħi taqdini, dan il-parametru għandu valur ta' 1 megabyte.

Kif jaħdem? Jekk ir-replika tagħna tkun lura b'1 megabyte ta' dejta fid-dewmien tar-replikazzjoni, allura din ir-replika ma tieħux sehem fl-elezzjonijiet. U jekk f'daqqa waħda jkun hemm fileover, Patroni jħares lejn liema repliki għadhom lura. Jekk ikunu lura minn numru kbir ta 'zkuk tat-tranżazzjonijiet, ma jistgħux isiru kaptan. Din hija karatteristika ta 'sigurtà tajba ħafna li ma tħallikx titlef ħafna dejta.

Iżda hemm problema li d-dewmien tar-replikazzjoni fil-cluster Patroni u DCS jiġi aġġornat f'ċertu intervall. Naħseb li 30 sekonda huwa l-valur ttl default.

Għaldaqstant, jista 'jkun hemm sitwazzjoni fejn hemm dewmien wieħed ta' replikazzjoni għal repliki fid-DCS, iżda fil-fatt jista 'jkun hemm dewmien kompletament differenti jew jista' jkun hemm l-ebda dewmien, jiġifieri din il-ħaġa mhix f'ħin reali. U mhux dejjem jirrifletti l-istampa reali. U mhux ta 'min jagħmel loġika fancy fuqha.

U r-riskju ta 'telf dejjem jibqa'. U fl-agħar każ, formula waħda, u fil-każ medju, formula oħra. Jiġifieri, meta nippjanaw l-implimentazzjoni ta’ Patroni u nevalwaw kemm nistgħu nitilfu dejta, irridu nistrieħu fuq dawn il-formuli u bejn wieħed u ieħor nimmaġinaw kemm nistgħu nitilfu dejta.

U hemm aħbar tajba. Meta l-kaptan antik ikun mexa 'l quddiem, huwa jista' jimxi 'l quddiem minħabba xi proċessi fl-isfond. Jiġifieri, kien hemm xi tip ta 'autovacuum, kiteb id-dejta, ssejvjahom fil-ġurnal tat-tranżazzjonijiet. U nistgħu faċilment ninjoraw u nitilfu din id-dejta. M'hemm l-ebda problema f'dan.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U dan huwa kif ir-zkuk jidhru qishom jekk maximum_lag_on_failover ikun issettjat u jkun seħħ filer, u għandek bżonn tagħżel kaptan ġdid. Ir-replika tevalwa lilha nnifisha bħala inkapaċi li tieħu sehem fl-elezzjonijiet. U hi tirrifjuta li tipparteċipa fit-tellieqa għall-mexxej. U tistenna li jintgħażel kaptan ġdid, sabiex imbagħad tkun tista 'tqabbad miegħu. Din hija miżura addizzjonali kontra t-telf tad-dejta.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Hawnhekk għandna tim tal-prodott li kiteb li l-prodott tagħhom qed ikollu problemi ma 'Postgres. Fl-istess ħin, il-kaptan innifsu ma jistax jiġi aċċessat, minħabba li mhuwiex disponibbli permezz ta 'SSH. U l-awtofile lanqas ma jiġri.

Dan l-host kien sfurzat jerġa' jibda. Minħabba r-reboot, ġara auto-file, għalkemm kien possibbli li jsir auto-file manwali, kif nifhem issa. U wara r-reboot, diġà se naraw dak li kellna mal-kaptan attwali.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Fl-istess ħin, konna nafu minn qabel li kellna problemi bid-diski, jiġifieri diġà konna nafu mill-monitoraġġ fejn għandna nħaffru u x'għandna nfittxu.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Dħalna fil-log postgres, bdejna naraw x'kien qed jiġri hemmhekk. Rajna kommessi li jdumu hemm għal waħda, tnejn, tliet sekondi, li xejn mhu normali. Rajna li l-autovacuum tagħna jibda bil-mod ħafna u stramba. U rajna fajls temporanji fuq id-diska. Jiġifieri, dawn huma kollha indikaturi ta 'problemi bid-diski.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Fittixna fis-sistema dmesg (kernel log). U rajna li għandna problemi b'wieħed mid-diski. Is-subsistema tad-disk kienet is-software Raid. Ħarsa lejn /proc/mdstat u rajna li konna neqsin drive wieħed. Jiġifieri, hemm Raid ta '8 diski, aħna neqsin waħda. Jekk tħares bir-reqqa lejn il-pjastra, allura fl-output tista 'tara li m'għandniex sde hemm. Fl us, kondizzjonalment jitkellem, id-disk waqa '. Dan qajjem problemi tad-disk, u l-applikazzjonijiet esperjenzaw ukoll problemi meta jaħdmu mal-cluster Postgres.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U f'dan il-każ, Patroni ma jgħinna bl-ebda mod, għaliex Patroni m'għandux il-kompitu li jimmonitorja l-istat tas-server, l-istat tad-diska. U rridu nissorveljaw sitwazzjonijiet bħal dawn b'monitoraġġ estern. Żidna malajr il-monitoraġġ tad-disk mal-monitoraġġ estern.

U kien hemm ħsieb bħal dan - jista' l-fencing jew is-software tal-għassies jgħinna? Ħsibna li bilkemm kien jgħinna f’dan il-każ, għax waqt il-problemi Patroni baqa’ jinteraġixxi mal-cluster DCS u ma ra l-ebda problema. Jiġifieri, mil-lat ta 'DCS u Patroni, kollox kien tajjeb mal-cluster, għalkemm fil-fatt kien hemm problemi bid-disk, kien hemm problemi bid-disponibbiltà tad-database.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Fl-opinjoni tiegħi, din hija waħda mill-aktar problemi strambi li rriċerkajt għal żmien twil ħafna, qrajt ħafna zkuk, reġgħet qabadha u sejħilha simulatur ta 'cluster.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Il-problema kienet li l-kaptan antik ma setax isir replika normali, jiġifieri Patroni bedaha, Patroni wera li dan in-node kien preżenti bħala replika, iżda fl-istess ħin ma kienx replika normali. Issa se tara għaliex. Dan huwa dak li żammejt mill-analiżi ta’ dik il-problema.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U kif beda kollox? Bdiet, bħal fil-problema preċedenti, bil-brejkijiet tad-diska. Kellna impenji għal sekonda, tnejn.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Kien hemm waqfiet fil-konnessjonijiet, jiġifieri, il-klijenti tqattgħu.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Kien hemm imblukkar ta’ severità li tvarja.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U, għalhekk, is-subsistema tad-disk ma tantx tirreaġixxi.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U l-aktar ħaġa misterjuża għalija hija t-talba għall-għeluq immedjat li waslet. Postgres għandu tliet modi ta' għeluq:

  • Huwa grazzjuż meta nistennew li l-klijenti kollha jiskonnettjaw waħedhom.
  • Hemm veloċi meta nġiegħlu lill-klijenti jiskonnettjaw għax se ngħalqu.
  • U immedjat. F'dan il-każ, immedjat lanqas biss jgħid lill-klijenti biex jagħlqu, huwa biss jagħlaq mingħajr twissija. U lill-klijenti kollha, is-sistema operattiva diġà tibgħat messaġġ RST (messaġġ TCP li l-konnessjoni hija interrotta u l-klijent m'għandux aktar x'jaqbad).

Min bagħat dan is-sinjal? Il-proċessi ta 'l-isfond ta' Postgres ma jibagħtux tali sinjali lil xulxin, jiġifieri dan huwa kill-9. Ma jibagħtux affarijiet bħal dawn lil xulxin, jirreaġixxu biss għal affarijiet bħal dawn, jiġifieri dan huwa bidu mill-ġdid ta 'emerġenza ta' Postgres. Min bagħatha, ma nafx.

Ħarist lejn l-"aħħar" kmand u rajt persuna waħda li wkoll illoggjat ma' dan is-server magħna, imma kont imbeżża' wisq biex nistaqsi mistoqsija. Forsi kien joqtol -9. Nixtieq nara joqtlu -9 fil-zkuk, għaliex Postgres jgħid li ħa joqtlu -9, iżda ma rajtx fil-zkuk.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Meta nħares aktar, rajt li Patroni ma kitbitx fil-ġurnal għal żmien pjuttost twil - 54 sekonda. U jekk inqabblu żewġ timestamps, ma kien hemm l-ebda messaġġ għal madwar 54 sekonda.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U matul dan iż-żmien kien hemm autofile. Patroni reġa' għamel biċċa xogħol tajba hawn. Il-kaptan antik tagħna ma kienx disponibbli, ġratlu xi ħaġa. U bdiet l-elezzjoni ta’ kaptan ġdid. Kollox ħadem tajjeb hawn. pgsql01 tagħna sar il-mexxej il-ġdid.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Għandna replika li saret kaptan. U hemm it-tieni risposta. U kien hemm problemi bit-tieni replika. Hija ppruvat tikkonfigura mill-ġdid. Kif nifhimha, ippruvat tibdel recovery.conf, terġa 'tibda Postgres u qabbad mal-kaptan il-ġdid. Hija tikteb messaġġi kull 10 sekondi li hi qed tipprova, iżda mhix qed tirnexxi.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U matul dawn l-attentati, sinjal ta 'għeluq immedjat jasal għand il-kaptan antik. Il-kaptan jerġa' jinbeda. U wkoll l-irkupru jieqaf minħabba li l-kaptan l-antik jidħol f'reboot. Jiġifieri, ir-replika ma tistax tikkonnettja magħha, minħabba li hija fil-modalità ta 'għeluq.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

F'xi punt, ħadmet, iżda r-replikazzjoni ma bdietx.

L-unika raden tiegħi hija li kien hemm indirizz kaptan antik f'recovery.conf. U meta deher kaptan ġdid, it-tieni replika xorta ppruvat tikkonnettja mal-kaptan l-antik.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Meta Patroni beda fuq it-tieni replika, in-node beda iżda ma setax jirreplika. U ġie ffurmat dewmien ta 'replikazzjoni, li deher xi ħaġa bħal din. Jiġifieri, it-tliet nodi kollha kienu f'posthom, iżda t-tieni nodu baqa' lura.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Fl-istess ħin, jekk tħares lejn ir-reġistri li nkitbu, tista' tara li r-replikazzjoni ma setgħetx tibda minħabba li r-reġistri tat-tranżazzjonijiet kienu differenti. U dawk ir-reġistri tat-tranżazzjonijiet li joffri l-kaptan, li huma speċifikati f'recovery.conf, sempliċement ma jaqblux għan-node attwali tagħna.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U hawn għamilt żball. Kelli niġi u nara x'kien f'recovery.conf biex nittestja l-ipoteżi tiegħi li konna nikkonnettjaw mal-kaptan ħażin. Imma mbagħad kont qed nittratta dan u ma ġratx f’moħħi, jew rajt li r-replika kienet għadha lura u kellha terġa’ timtela, jiġifieri b’xi mod ħdimt bi traskuraġni. Din kienet il-ġog tiegħi.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Wara 30 minuta, diġà ġie l-admin, jiġifieri erġajt bdejt lil Patroni fuq ir-replika. Diġà temmilha, ħsibt li se jkollha timtela mill-ġdid. U ħsibt - nibda mill-ġdid Patroni, forsi tirriżulta xi ħaġa tajba. L-irkupru beda. U l-bażi saħansitra fetħet, kienet lesta li taċċetta konnessjonijiet.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Ir-replikazzjoni bdiet. Iżda minuta wara waqgħet bi żball li r-reġistri tat-tranżazzjonijiet mhumiex adattati għaliha.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Ħsibt li nerġa' nibda. Erġajt bdejt lil Patroni, u ma bdejtx lil Postgres, imma reġgħet bdejt lil Patroni bit-tama li maġikament tibda d-database.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Ir-replikazzjoni bdiet mill-ġdid, iżda l-marki fir-reġistru tat-tranżazzjonijiet kienu differenti, ma kinux l-istess bħall-attentat ta 'bidu preċedenti. Ir-replikazzjoni waqfet mill-ġdid. U l-messaġġ kien diġà kemmxejn differenti. U ma tantx kien informattiv għalija.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U mbagħad jiġrili - x'jiġri jekk nibda Postgres, f'dan iż-żmien nagħmel checkpoint fuq il-kaptan attwali biex iċċaqlaq il-punt fir-reġistru tat-tranżazzjonijiet ftit 'il quddiem sabiex l-irkupru jibda minn mument ieħor? Barra minn hekk, għad kellna ħażniet ta’ WAL.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Erġajt bdejt lil Patroni, għamilt ftit checkpoints fuq il-master, ftit punti mill-ġdid fuq ir-replika meta nfetħet. U għen. Ħsibt għal żmien twil għaliex għen u kif ħadmet. U bdiet ir-replika. U r-replikazzjoni ma baqgħetx titqatta.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Problema bħal din għalija hija waħda mill-aktar misterjuża, li fuqha għadni naħseb dwar dak li verament ġara hemmhekk.

X'inhuma l-implikazzjonijiet hawn? Patroni jista' jaħdem kif maħsub u mingħajr ebda żball. Iżda fl-istess ħin, din mhix garanzija ta '100% li kollox huwa tajjeb magħna. Ir-replika tista 'tibda, iżda tista' tkun fi stat semi-ħidma, u l-applikazzjoni ma tistax taħdem ma 'replika bħal din, minħabba li se jkun hemm data antika.

U wara l-filer, dejjem għandek bżonn tiċċekkja li kollox huwa fl-ordni mal-cluster, jiġifieri, hemm in-numru meħtieġ ta 'repliki, m'hemm l-ebda dewmien ta' replikazzjoni.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

U hekk kif ngħaddu minn dawn il-kwistjonijiet, se nagħmel rakkomandazzjonijiet. Ippruvajt ngħaqqadhom f'żewġ slides. Probabbilment, l-istejjer kollha jistgħu jingħaqdu f'żewġ slides u jingħadu biss.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Meta tuża Patroni, irid ikollok monitoraġġ. Għandek dejjem tkun taf meta seħħ autofileover, għaliex jekk ma tafx li kellek autofileover, m'għandekx kontroll fuq il-cluster. U dan huwa ħażin.

Wara kull filer, dejjem għandna niċċekkjaw manwalment il-cluster. Irridu niżguraw li dejjem ikollna numru ta’ repliki aġġornati, m’hemmx dewmien fir-replikazzjoni, m’hemmx żbalji fil-logs relatati ma’ streaming replication, ma’ Patroni, bis-sistema DCS.

L-awtomazzjoni tista 'taħdem b'suċċess, Patroni hija għodda tajba ħafna. Jista 'jaħdem, iżda dan mhux se jġib il-cluster fl-istat mixtieq. U jekk ma nsiru nafu biha, inkunu fl-inkwiet.

U Patroni mhux balla tal-fidda. Għad irridu nifhmu kif jaħdem Postgres, kif taħdem ir-replikazzjoni u kif Patroni jaħdem ma' Postgres, u kif tiġi pprovduta l-komunikazzjoni bejn in-nodi. Dan huwa meħtieġ sabiex tkun tista 'tiffissa l-problemi b'idejk.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Kif nindirizza l-kwistjoni tad-dijanjosi? Ġara li naħdmu ma 'klijenti differenti u ħadd ma għandu munzell ELK, u rridu nsolvu r-zkuk billi niftħu 6 consoles u 2 tabs. F'tab waħda, dawn huma r-zkuk Patroni għal kull node, fit-tab l-oħra, dawn huma z-zkuk tal-Konslu, jew Postgres jekk meħtieġ. Huwa diffiċli ħafna li tiġi djanjostikata dan.

Liema approċċi żviluppajt? L-ewwel, dejjem inħares meta l-filer ikun wasal. U għalija dan huwa xkiel. Inħares lejn dak li ġara qabel il-filer, waqt il-filer u wara l-filer. Il-fileover għandu żewġ marki: dan huwa l-ħin tal-bidu u tat-tmiem.

Sussegwentement, infittex fir-reġistri għall-avvenimenti qabel il-filer, li ppreċediet il-filer, jiġifieri nfittex ir-raġunijiet għaliex ġara l-filer.

U dan jagħti stampa ta 'fehim x'ġara u x'jista' jsir fil-futur sabiex ċirkostanzi bħal dawn ma jseħħux (u bħala riżultat, m'hemm l-ebda filer).

U fejn inħarsu s-soltu? Inħares:

  • L-ewwel, liz-zkuk Patroni.
  • Sussegwentement, inħares lejn ir-zkuk Postgres, jew ir-zkuk DCS, skont dak li nstab fir-zkuk Patroni.
  • U r-reġistri tas-sistema kultant ukoll jagħtu fehim ta 'dak li kkawża l-filer.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

Kif inħossni dwar Patroni? Għandi relazzjoni tajba ħafna ma' Patroni. Fl-opinjoni tiegħi, dan huwa l-aqwa li hemm illum. Naf ħafna prodotti oħra. Dawn huma Stolon, Repmgr, Pg_auto_failover, PAF. 4 għodod. Ippruvajthom kollha. Patroni huwa l-favorit tiegħi.

Jekk jistaqsuni: “Nirrakkomanda lil Patroni?”. Jien ngħid iva, għax Patroni jogħġobni. U naħseb li tgħallimt kif issajjarha.

Jekk inti interessat li tara x'problemi oħra hemm ma' Patroni minbarra l-problemi li semmejt, tista' dejjem tiċċekkja l-paġna kwistjonijiet fuq GitHub. Hemm ħafna stejjer differenti u hemm ħafna kwistjonijiet interessanti diskussi. U bħala riżultat, xi bugs ġew introdotti u solvuti, jiġifieri, din hija qari interessanti.

Hemm xi stejjer interessanti dwar nies li jisparaw lilhom infushom fis-sieq. Informattiv ħafna. Taqra u tifhem li mhux meħtieġ li tagħmel dan. Immarkat lili nnifsi.

U nixtieq ngħid grazzi kbir lil Zalando talli żviluppa dan il-proġett, jiġifieri lil Alexander Kukushkin u Alexey Klyukin. Aleksey Klyukin huwa wieħed mill-ko-awturi, m'għadux jaħdem f'Zalando, iżda dawn huma żewġ persuni li bdew jaħdmu ma 'dan il-prodott.

U naħseb li Patroni hija ħaġa sabiħa ħafna. Jien kuntent li teżisti, huwa interessanti magħha. U grazzi kbira lill-kontributuri kollha li jiktbu l-irqajja lil Patroni. Nittama li Patroni jsir aktar maturi, frisk u effiċjenti bl-età. Huwa diġà funzjonali, imma nittama li se jsir saħansitra aħjar. Għalhekk, jekk qed tippjana li tuża Patroni, allura tibżax. Din hija soluzzjoni tajba, tista 'tiġi implimentata u użata.

Dak kollox. Jekk għandek mistoqsijiet, staqsi.

Patroni Failure Stories jew Kif tiġġarraf il-cluster PostgreSQL tiegħek. Alexey Lesovsky

mistoqsijiet

Grazzi tar-rapport! Jekk wara filer xorta trid tħares hemm bir-reqqa, allura għaliex għandna bżonn filer awtomatiku?

Minħabba li huwa ħwejjeġ ġodda. Ilna sena magħha biss. Aħjar li tkun sigur. Irridu nidħlu u naraw li kollox ħadem tassew kif suppost. Dan huwa l-livell ta 'sfiduċja tal-adulti - huwa aħjar li tiċċekkja u tara.

Per eżempju, morna filgħodu u ħares, hux?

Mhux filgħodu, ġeneralment nitgħallmu dwar l-awtofile kważi immedjatament. Nirċievu notifiki, naraw li seħħ fajl awtomatiku. Immorru kważi immedjatament u nħarsu. Iżda dawn il-kontrolli kollha għandhom jinġiebu għal-livell ta' monitoraġġ. Jekk taċċessa Patroni permezz tal-API REST, hemm storja. Mill-istorja tista 'tara l-timestamps meta l-filer ġara. Ibbażat fuq dan, il-monitoraġġ jista 'jsir. Tista 'tara l-istorja, kemm kien hemm avvenimenti. Jekk ikollna aktar avvenimenti, allura seħħ fajl awtomatiku. Tista’ tmur u tara. Jew l-awtomazzjoni tal-monitoraġġ tagħna ċċekkjat li għandna r-repliki kollha f'posthom, m'hemm l-ebda dewmien u kollox huwa tajjeb.

Grazzi!

Grazzi ħafna għall-istorja kbira! Jekk imċaqlaq il-cluster DCS x'imkien 'il bogħod mill-cluster Postgres, allura dan il-cluster jeħtieġ ukoll li jiġi servit perjodikament? X'inhuma l-aħjar prattiki li xi biċċiet tal-cluster DCS jeħtieġ li jiġu mitfija, xi ħaġa li tagħmel magħhom, eċċ.? Kif tgħix din l-istruttura kollha? U kif tagħmel dawn l-affarijiet?

Għal kumpanija waħda, kien meħtieġ li ssir matriċi ta 'problemi, x'jiġri jekk wieħed mill-komponenti jew diversi komponenti jonqsu. Skont din il-matriċi, aħna ngħaddu b'mod sekwenzjali mill-komponenti kollha u nibnu xenarji f'każ ta 'falliment ta' dawn il-komponenti. Għaldaqstant, għal kull xenarju ta' falliment, jista' jkollok pjan ta' azzjoni għall-irkupru. U fil-każ tad-DCS, tiġi bħala parti mill-infrastruttura standard. U l-amministratur jamministraha, u aħna diġà niddependu fuq l-amministraturi li jamministrawha u l-kapaċità tagħhom li jiffissawha f'każ ta 'inċidenti. Jekk ma jkun hemm l-ebda DCS, allura aħna niskjerawha, iżda fl-istess ħin ma nissorveljawx b'mod partikolari, għax m'aħniex responsabbli għall-infrastruttura, iżda nagħtu rakkomandazzjonijiet dwar kif u x'għandna nissorveljaw.

Jiġifieri, fhimt b'mod korrett li għandi bżonn niskonnettja Patroni, tiddiżattiva l-filer, tiddiżattiva kollox qabel ma nagħmel xejn mal-hosts?

Jiddependi fuq kemm għandna nodi fil-cluster DCS. Jekk ikun hemm ħafna nodi u jekk tiddiżattivaw wieħed biss min-nodi (ir-replika), allura l-cluster iżomm kworum. U Patroni jibqa’ operattiv. U xejn ma jiġi attivat. Jekk ikollna xi operazzjonijiet kumplessi li jaffettwaw aktar nodi, li n-nuqqas tagħhom jista 'jrovina l-kworum, allura - iva, jista' jagħmel sens li Patroni titwaqqaf. Għandu kmand korrispondenti - patronictl pause, patronictl jerġa. Aħna nieqaf biss u l-awtofiler ma jaħdimx dak il-ħin. Nagħmlu manutenzjoni fuq il-cluster DCS, imbagħad nieħdu l-pawsa u nkomplu ngħixu.

Grazzi ħafna!

Grazzi ħafna għar-rapport tiegħek! Kif iħossu t-tim tal-prodott dwar id-dejta li tintilef?

It-timijiet tal-prodotti ma jimpurtahomx, u l-mexxejja tat-tim huma inkwetati.

X'garanziji hemm?

Il-garanziji huma diffiċli ħafna. Alexander Kukushkin għandu rapport "Kif tikkalkula RPO u RTO", jiġifieri ħin ta 'rkupru u kemm dejta nistgħu nitilfu. Naħseb li rridu nsibu dawn is-slajds u nistudjawhom. Safejn niftakar, hemm passi speċifiċi dwar kif tikkalkula dawn l-affarijiet. Kemm nistgħu nitilfu tranżazzjonijiet, kemm nistgħu nitilfu dejta. Bħala għażla, nistgħu nużaw replikazzjoni sinkronika fil-livell ta 'Patroni, iżda din hija xabla b'żewġ xfar: jew għandna affidabbiltà tad-dejta, jew nitilfu l-veloċità. Hemm replikazzjoni sinkronika, iżda wkoll ma tiggarantixxix protezzjoni ta '100% kontra telf ta' data.

Alexey, grazzi għar-rapport kbir! Xi esperjenza bl-użu ta 'Patroni għal protezzjoni ta' livell żero? Jiġifieri, flimkien ma 'standby sinkroniku? Din hija l-ewwel mistoqsija. U t-tieni mistoqsija. Int użajt soluzzjonijiet differenti. Użajna Repmgr, iżda mingħajr autofiler, u issa qed nippjanaw li nkludu l-autofiler. U nqisu lil Patroni bħala soluzzjoni alternattiva. X'tista 'tgħid bħala vantaġġi meta mqabbla ma' Repmgr?

L-ewwel mistoqsija kienet dwar repliki sinkroniċi. Ħadd ma juża replikazzjoni sinkronika hawnhekk, għax kulħadd jibża' (Diverse klijenti diġà qed jużawha, fil-prinċipju, ma ndunawx problemi ta 'prestazzjoni - Nota tal-ispeaker). Iżda żviluppajna regola għalina nfusna li għandu jkun hemm mill-inqas tliet nodi fi cluster ta’ replikazzjoni sinkronika, għax jekk ikollna żewġ nodi u jekk il-kaptan jew ir-replika tfalli, allura Patroni jaqleb dan in-node għall-modalità Standalone sabiex l-applikazzjoni tkompli xogħol. F'dan il-każ, hemm riskju ta 'telf ta' data.

Rigward it-tieni mistoqsija, użajna Repmgr u għadna nagħmlu ma 'xi klijenti għal raġunijiet storiċi. X'jista' jingħad? Patroni jiġi b'autofiler barra mill-kaxxa, Repmgr jiġi b'autofiler bħala karatteristika addizzjonali li jeħtieġ li tkun attivata. Irridu nħaddmu d-daemon Repmgr fuq kull node u mbagħad nistgħu nikkonfiguraw l-awtofiler.

Repmgr jiċċekkja jekk in-nodi Postgres humiex ħajjin. Il-proċessi Repmgr jiċċekkjaw l-eżistenza ta 'xulxin, dan mhuwiex approċċ effiċjenti ħafna. jista’ jkun hemm każijiet kumplessi ta’ iżolament tan-netwerk li fihom cluster kbir ta’ Repmgr jista’ jaqa’ f’diversi oħrajn iżgħar u jkompli jaħdem. Jien ilni ma nsegwi Repmgr, forsi kien irranġat ... jew forsi le. Iżda t-tneħħija ta 'informazzjoni dwar l-istat tal-cluster fid-DCS, kif jagħmel Stolon, Patroni, hija l-aktar għażla vijabbli.

Alexey, għandi mistoqsija, forsi waħda lamer. F'wieħed mill-ewwel eżempji, ċċaqlaqt DCS mill-magna lokali għal host remot. Nifhmu li n-netwerk huwa ħaġa li għandha l-karatteristiċi tagħha stess, tgħix waħedha. U x'jiġri jekk għal xi raġuni l-cluster DCS ma jkunx disponibbli? Mhux se ngħid ir-raġunijiet, jista 'jkun hemm ħafna minnhom: mill-idejn mgħawweġ ta' networkers għal problemi reali.

Ma għidtx b'leħen għoli, iżda l-cluster DCS għandu wkoll ikun failover, jiġifieri huwa numru fard ta 'nodi, sabiex jintlaħaq kworum. X'jiġri jekk il-cluster DCS ma jkunx disponibbli, jew ma jkunx jista' jintlaħaq kworum, jiġifieri xi tip ta' qsim tan-netwerk jew falliment tan-node? F'dan il-każ, il-cluster Patroni jidħol fil-modalità read only. Il-cluster Patroni ma jistax jiddetermina l-istat tal-cluster u x'għandek tagħmel. Ma jistax jikkuntattja lid-DCS u jaħżen l-istat il-ġdid tal-cluster hemmhekk, għalhekk il-cluster kollu jidħol fil-qari biss. U jistenna jew għal intervent manwali mill-operatur jew biex DCS jirkupra.

Bejn wieħed u ieħor, DCS isir servizz għalina importanti daqs il-bażi nnifisha?

Iva Iva. F'tant kumpaniji moderni, Service Discovery hija parti integrali mill-infrastruttura. Qed jiġi implimentat anke qabel ma kien hemm database fl-infrastruttura. Relattivament, l-infrastruttura ġiet imnedija, skjerata fid-DC, u immedjatament għandna Service Discovery. Jekk huwa Konslu, allura DNS jista 'jinbena fuqha. Jekk dan huwa Etcd, allura jista 'jkun hemm parti mill-cluster Kubernetes, li fiha kull ħaġa oħra se tkun skjerata. Jidhirli li Service Discovery diġà hija parti integrali mill-infrastrutturi moderni. U jaħsbu dwarha ħafna qabel milli dwar databases.

Grazzi!

Sors: www.habr.com

Żid kumment