Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ny tanjona lehibe amin'ny Patroni dia ny manome ny fahafahana ambony ho an'ny PostgreSQL. Fa modely fotsiny i Patroni fa tsy fitaovana efa vita (izay, amin'ny ankapobeny, voalaza ao amin'ny antontan-taratasy). Raha vao jerena, rehefa nanangana an'i Patroni tao amin'ny laboratoara fitsapana ianao, dia ho hitanao ny maha-zava-dehibe azy io ary ny fomba mora amin'ny fikarakarana ny ezaka ataontsika handrava ny cluster. Na izany aza, amin'ny fampiharana, amin'ny tontolo famokarana, ny zava-drehetra dia tsy mitranga foana amin'ny fomba tsara tarehy sy kanto toy ny ao amin'ny laboratoara fitsapana.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Hitantara kely aminareo momba ny tenako aho. Nanomboka tamin'ny naha-mpiandraikitra ny rafitra aho. Niasa tamin'ny fampivoarana tranonkala. Niasa tao amin'ny Data Egret aho nanomboka tamin'ny 2014. Ny orinasa dia mirotsaka amin'ny consulting amin'ny sehatry ny Postgres. Ary manompo Postgres marina izahay, ary miara-miasa amin'ny Postgres isan'andro, noho izany dia manana fahaiza-manao samihafa mifandraika amin'ny fandidiana izahay.

Ary tamin'ny faran'ny taona 2018 dia nanomboka nampiasa tsikelikely ny Patroni izahay. Ary nisy traikefa nanangona. Nahita izany izahay, nampifanaraka azy, tonga tamin'ny fomba fanao tsara indrindra. Ary amin'ity tatitra ity dia hiresaka momba azy ireo aho.

Ankoatra ny Postgres, tiako ny Linux. Tiako ny mitsambikina ao anatiny sy mikaroka, tiako ny manangona cores. Tiako ny virtoaly, container, docker, Kubernetes. Mahaliana ahy izany rehetra izany, satria misy fiantraikany amin'ny fahazaran'ny admin taloha. Tiako ny miatrika ny fanaraha-maso. Ary tiako ny postgres zavatra mifandraika amin'ny fitantanana, izany hoe replication, backup. Ary amin'ny fotoana malalaka aho dia manoratra ao amin'ny Go. Tsy injeniera rindrambaiko aho fa manoratra ho an'ny tenako fotsiny ao amin'ny Go. Ary mahafaly ahy izany.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

  • Heveriko fa maro aminareo no mahafantatra fa ny Postgres dia tsy manana HA (High Availability) ivelan'ny boaty. Mba hahazoana HA dia mila mametraka zavatra ianao, manamboatra azy, manao ezaka ary mahazo izany.
  • Misy fitaovana maromaro ary i Patroni dia iray amin'izy ireo izay mamaha ny HA tena mahafinaritra sy tsara. Saingy amin'ny fametrahana azy rehetra ao amin'ny laboratoara fitsapana sy ny fampandehanana azy, dia hitantsika fa miasa daholo izany, afaka mamerina olana sasany isika, jereo ny fomba nanompoan'i Patroni azy ireo. Ary ho hitantsika fa miasa tsara daholo izany.
  • Saingy tamin'ny fampiharana dia niatrika olana samihafa izahay. Ary hiresaka momba ireo olana ireo aho.
  • Holazaiko aminao ny fomba nahitanay azy io, inona no novainay - na nanampy anay izany na tsia.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

  • Tsy hilaza aminao ny fomba fametrahana an'i Patroni aho, satria afaka google amin'ny Internet ianao, azonao atao ny mijery ny fichier configuration mba hahatakarana ny fomba nanombohan'izany rehetra izany, ny fomba nanamboarana azy. Azonao atao ny mahatakatra ny tetika, ny maritrano, ny fitadiavana fampahalalana momba izany amin'ny Internet.
  • Tsy hiresaka momba ny traikefan'olon-kafa aho. Ny olana natrehanay ihany no horesahiko.
  • Ary tsy hiresaka olana any ivelan'ny Patroni sy PostgreSQL aho. Raha misy, ohatra, ny olana mifandray amin'ny fifandanjana, rehefa nirodana ny cluster, dia tsy hiresaka momba izany aho.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary fandavana kely alohan'ny hanombohantsika ny tatitra.

Ireo olana rehetra sendra anay ireo dia nanana azy ireo tao anatin'ny 6-7-8 volana voalohany niasana. Rehefa nandeha ny fotoana, dia tonga tamin'ny fanao tsara indrindra izahay. Ary nanjavona ny olanay. Noho izany, nambara ny tatitra tokony ho enim-bolana lasa izay, raha vao tao an-dohako izany rehetra izany ary tsaroako tsara izany rehetra izany.

Teo am-panomanana ny tatitra dia efa nanangana postmortem taloha aho, nijery ny hazo. Ary mety ho hadino ny pitsopitsony sasany, na ny tsipiriany sasany tsy azo nohadihadiana tanteraka nandritra ny famakafakana ny olana, ka amin’ny fotoana sasany dia toa tsy voadinika tanteraka ny olana, na misy ny tsy fahampian’ny vaovao. Ary noho izany dia miangavy anao aho mba hiala tsiny amin'izao fotoana izao.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Inona no atao hoe Patroni?

  • Ity dia modely amin'ny fananganana HA. Izany no voalaza ao amin'ny antontan-taratasy. Ary raha ny fahitako azy dia tena fanazavàna marina tokoa izany. Patroni dia tsy bala volafotsy hamaha ny olanao rehetra, izany hoe mila manao ezaka ianao mba hahomby sy hitondra tombony.
  • Izy io dia serivisy mpandraharaha izay napetraka amin'ny serivisy angon-drakitra rehetra ary karazana rafitra init ho an'ny Postgres anao. Manomboka Postgres, mijanona, mamerina, manitsy, ary manova ny topolojian'ny cluster.
  • Noho izany, mba hitahiry ny toetry ny cluster, ny fanehoana azy amin'izao fotoana izao, araka ny hita, dia ilaina ny karazana fitahirizana. Ary avy amin'io fomba fijery io, i Patroni dia nandray ny lalan'ny fitehirizana fanjakana amin'ny rafitra ivelany. Izy io dia rafitra fitehirizana fanamafisam-peo zaraina. Mety ho Etcd, Consul, ZooKeeper, na kubernetes Etcd, izany hoe iray amin'ireo safidy ireo.
  • Ary ny iray amin'ireo mampiavaka an'i Patroni dia ny famoahana ny autofiler avy ao anaty boaty, amin'ny alàlan'ny fametrahana azy fotsiny. Raha raisinay ny Repmgr ho fampitahana, dia tafiditra ao ny filer. Miaraka amin'ny Repmgr dia mahazo fifandimbiasana isika, fa raha mila autofiler isika dia mila manamboatra izany fanampiny. Patroni dia efa manana autofiler ivelan'ny boaty.
  • Ary misy zavatra maro hafa koa. Ohatra, ny fikojakojana ny configurations, fandatsahana replika vaovao, backup, sns. Fa izany dia mihoatra noho ny tatitry ny tatitra, tsy hiresaka momba izany aho.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary ny vokatra kely dia ny asa lehibe ataon'i Patroni dia ny fanaovana autofile tsara sy azo ianteherana mba hijanonana amin'ny asa ny cluster ary tsy hitan'ny fampiharana ny fiovan'ny topology cluster.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Saingy rehefa manomboka mampiasa Patroni isika, dia mihasarotra kokoa ny rafitra misy antsika. Raha teo aloha isika dia nanana Postgres, dia rehefa mampiasa Patroni dia mahazo an'i Patroni ny tenany, mahazo DCS izay misy ny fanjakana. Ary tsy maintsy miasa izany rehetra izany. Inona àry no mety ho diso?

Mety tapaka:

  • Mety ho tapaka ny postgres. Mety ho master na kopia izy io, mety tsy hahomby ny iray amin'izy ireo.
  • Ny Patroni mihitsy no mety ho tapaka.
  • Mety ho tapaka ny DCS misy ny fanjakana.
  • Ary mety ho tapaka ny tambajotra.

Ireo hevitra rehetra ireo dia hojereko ao amin'ny tatitra.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Hodinihiko ny raharaha rehefa mihasarotra kokoa izy ireo, fa tsy amin'ny fomba fijery fa misy singa maro ny raharaha. Ary amin'ny fomba fijerin'ny fihetseham-po subjective dia sarotra tamiko ity raharaha ity, sarotra ny namongotra azy ... ary ny mifamadika amin'izany, ny tranga sasany dia maivana ary mora ny namongotra azy.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary ny tranga voalohany no mora indrindra. Izany no nitranga rehefa naka cluster database izahay ary nametraka ny fitahirizana DCS tamin'ny cluster iray ihany. Io no fahadisoana mahazatra indrindra. Fahadisoana izany amin'ny fananganana architectures, izany hoe ny fampifangaroana singa samihafa amin'ny toerana iray.

Noho izany, nisy ny fichier, andao isika hiatrika ny zava-nitranga.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary eto isika dia liana amin'ny fotoana nitrangan'ny filer. Izany hoe, mahaliana antsika amin'izao fotoana izao izay niova ny fanjakana cluster.

Fa ny filer dia tsy eo no ho eo foana, izany hoe tsy maka fotoana, mety hahemotra. Mety haharitra ela izany.

Noho izany dia misy fotoana fanombohana sy fotoana fiafarana, izany hoe hetsika mitohy. Ary mizara telo ny zava-mitranga rehetra: manana fotoana alohan'ny filer, mandritra ny filer ary aorian'ny filer. Izany hoe, mandinika ny zava-mitranga rehetra amin'ity fandaharam-potoana ity izahay.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary ny zavatra voalohany, rehefa nitranga ny filer, dia mitady ny anton'ny zava-nitranga, inona no antony nahatonga ny filer.

Raha jerena ny hazo dia ho logs Patroni mahazatra izy ireo. Lazainy amintsika ao amin'izy ireo fa ny mpizara dia lasa tompon'andraikitra, ary ny anjara asan'ny tompony dia nandalo tamin'ity node ity. Asongadina eto izany.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Manaraka, mila mahatakatra ny antony nitrangan'ny filer, izany hoe inona no zava-nitranga izay nahatonga ny andraikitry ny tompony hifindra avy amin'ny node iray mankany amin'ny iray hafa. Ary amin'ity tranga ity dia tsotra ny zava-drehetra. Manana hadisoana izahay amin'ny fifandraisana amin'ny rafitra fitahirizana. Ny tompony dia nahatsapa fa tsy afaka miara-miasa amin'ny DCS, izany hoe, misy karazana olana amin'ny fifandraisana. Ary milaza izy fa tsy afaka ny ho tompom-pahefana intsony ka mametra-pialana. Ity andalana "nandroaka tena" ity dia milaza izany marina.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Raha mijery ny zava-nitranga nialoha ny filer isika dia afaka mahita ny tena antony nahatonga ny olana hanohizana ny wizard.

Raha mijery ny logs Patroni isika dia ho hitantsika fa be dia be ny lesoka, ny fe-potoana, izany hoe tsy afaka miara-miasa amin'ny DCS ny agent Patroni. Amin'ity tranga ity, ity no consul agent, izay mifandray amin'ny seranan-tsambo 8500.

Ary ny olana eto dia ny Patroni sy ny angon-drakitra dia mandeha amin'ny mpampiantrano iray ihany. Ary ny mpizara Consul dia natomboka tamin'ny node iray ihany. Amin'ny famoronana enta-mavesatra eo amin'ny mpizara dia niteraka olana ho an'ny mpizara Consul ihany koa izahay. Tsy afaka nifandray tsara izy ireo.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Rehefa afaka kelikely, rehefa nihena ny entana, dia afaka nifandray tamin'ny mpiasa indray ny Patroni anay. Niverina indray ny asa mahazatra. Ary ilay mpizara Pgdb-2 ihany no lasa tompony indray. Izany hoe, nisy fihokoana kely, izay nahatonga ny node nametra-pialana ny fahefan'ny tompony, ary avy eo naka azy ireo indray, izany hoe niverina ny zava-drehetra.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary azo raisina ho fanairana diso izany, na azo heverina fa nanao ny zava-drehetra tsara i Patroni. Izany hoe, nahatsapa izy fa tsy afaka mitazona ny fanjakan'ny vondron'olona ary manala ny fahefany.

Ary eto dia nipoitra ny olana noho ny fisian'ireo mpizara Consul ao amin'ny fitaovana mitovy amin'ny fototra. Araka izany, ny entana rehetra: na ny enta-mavesatra amin'ny kapila na ny processeur, dia misy fiantraikany amin'ny fifandraisana amin'ny cluster Consul ihany koa.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary nanapa-kevitra izahay fa tsy tokony hiara-miaina izany, dia nanokana cluster mitokana ho an'ny Consul izahay. Ary efa niara-niasa tamina Consul mitokana i Patroni, izany hoe nisy cluster Postgres mitokana, cluster Consul mitokana. Toromarika fototra momba ny fitondrana sy fitazonana ireo zavatra rehetra ireo mba tsy hiara-miaina.

Ho safidy dia azonao atao ny manodinkodina ny masontsivana ttl, loop_wait, retry_timeout, izany hoe miezaha ho tafavoaka velona amin'ireo tampon'ny enta-mavesatra ireo amin'ny alàlan'ny fampitomboana ireo mari-pamantarana ireo. Saingy tsy io no safidy mety indrindra, satria mety haharitra ela io entana io. Ary hihoatra ny fetran'ireo mari-pamantarana ireo fotsiny isika. Ary mety tsy tena manampy izany.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ny olana voalohany, araka ny azonao, dia tsotra. Naka sy nametraka ny DCS niaraka tamin'ny fototra izahay, nahazo olana izahay.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ny olana faharoa dia mitovy amin'ny voalohany. Mitovitovy amin'izany koa isika manana olana amin'ny fifandraisana amin'ny rafitra DCS.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Raha mijery ny logs isika dia ho hitantsika fa misy fahadisoana amin'ny fifandraisana indray. Ary hoy i Patroni fa tsy afaka mifandray amin'ny DCS aho ka ny tompony ankehitriny dia miditra amin'ny maodely replika.

Ny tompony taloha dia lasa replika, eto i Patroni miasa, araka ny tokony ho izy. Mandeha pg_rewind izy io mba hamerenana ny log de transaction ary avy eo mifandray amin'ny tompony vaovao mba hanatratrarana ilay tompony vaovao. Eto i Patroni dia miasa araka ny tokony ho izy.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Eto isika dia tsy maintsy mahita ny toerana nialoha ny filer, izany hoe ireo lesoka nahatonga antsika hanana filer. Ary amin'io lafiny io, ny logs Patroni dia mety tsara hiarahana miasa. Manoratra hafatra mitovy izy amin'ny elanelam-potoana iray. Ary raha manomboka mamakivaky ireo logs ireo haingana isika, dia ho hitantsika avy amin'ny logs fa niova ny logs, izay midika fa nanomboka ny olana sasany. Miverina haingana amin'ity toerana ity izahay, jereo izay mitranga.

Ary amin'ny toe-javatra mahazatra, ny logs dia toa tahaka izao. Voamarina ny tompon’ny hidin-trano. Ary raha niova ny tompony, ohatra, dia mety hitranga ny hetsika sasany izay tsy maintsy mamaly an'i Patroni. Saingy amin'ity tranga ity dia tsara izahay. Mitady ny toerana niavian'ny fahadisoana izahay.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary rehefa namakivaky ny toerana nanombohan'ny fisehoan'ny lesoka, dia hitantsika fa nanana auto-fileover. Ary satria ny fahadisoanay dia mifandray amin'ny fifandraisana amin'ny DCS ary amin'ny tranga misy anay dia nampiasa Consul izahay, dia mijery ny logs Consul ihany koa izahay, ny zava-nitranga tao.

Raha ampitahaina amin'ny ankapobeny ny fotoanan'ny mpitatitra sy ny fotoana ao amin'ny diarin'ny Consul, dia hitantsika fa nanomboka nisalasala ny amin'ny fisian'ireo mpikambana hafa ao amin'ny vondron'ny Consul ireo mpifanolo-bodirindrina aminay ao amin'ny vondrona Consul.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary raha mijery ny diarin'ny masoivohon'ny Consul hafa ianao, dia ho hitanao fa misy karazana firodanan'ny tambajotra mandeha any. Ary ny mpikambana rehetra ao amin'ny vondrona Consul dia samy misalasala ny fisian'ny tsirairay. Ary izany no nahatonga ny mpitatitra.

Raha jerena ny zava-nitranga talohan'ireny lesoka ireny dia hita fa misy ny lesoka isan-karazany, ohatra ny fe-potoana, lavo ny RPC, izany hoe misy olana mazava eo amin'ny fifandraisan'ny mpikambana ao amin'ny cluster Consul. .

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ny valiny tsotra indrindra dia ny fanamboarana ny tambajotra. Fa amiko, mijoro eo ambony lampihazo dia mora ny milaza an'io. Saingy ny toe-javatra dia tsy vitan'ny mpanjifa foana ny manamboatra ny tambajotra. Mety mipetraka ao amin'ny DC izy ary mety tsy afaka manamboatra ny tambajotra, misy fiantraikany amin'ny fitaovana. Ary noho izany dia ilaina ny safidy hafa.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Misy safidy:

  • Ny safidy tsotra indrindra, izay voasoratra, araka ny hevitro, na dia ao amin'ny antontan-taratasy aza, dia ny manafoana ny fisavana Consul, izany hoe, mandalo fotsiny ny array foana. Ary miteny amin'ny masoivohon'ny Consul izahay mba tsy hampiasa seky. Miaraka amin'ireo fisavana ireo dia afaka tsy miraharaha ireo oram-baravarankely ireo isika ary tsy manomboka mpitahiry.
  • Safidy iray hafa dia ny manamarina indroa raft_multiplier. Ity dia mari-pamantarana an'ny mpizara Consul mihitsy. Amin'ny alàlan'ny default, dia apetraka amin'ny 5. Ity sanda ity dia atolotry ny antontan-taratasy momba ny tontolo iainana. Raha ny marina dia misy fiantraikany amin'ny fatran'ny hafatra eo amin'ny mpikambana ao amin'ny tambajotra Consul izany. Raha ny marina dia misy fiantraikany amin'ny hafainganam-pandehan'ny fifandraisana eo amin'ny mpikambana ao amin'ny kluster Consul io mari-pamantarana io. Ary ho an'ny famokarana dia efa soso-kevitra ny hampihenana izany mba hifanakalozana hafatra matetika ny node.
  • Safidy iray hafa novokarinay dia ny fampitomboana ny laharam-pahamehana amin'ny fizotran'ny Consul amin'ireo dingana hafa ho an'ny mpandrindra ny fizotran'ny rafitra miasa. Misy marika "tsara" toy izany, mamaritra ny laharam-pahamehana amin'ny dingana izay raisin'ny OS scheduler rehefa mandamina. Nahenanay koa ny sanda tsara ho an'ny mpiasan'ny Consul, izany hoe. nampitombo ny laharam-pahamehana mba hanomezana fotoana bebe kokoa ny fizotran'ny Consul hiasa sy hanatontosana ny fehezan-dalàna ny rafitra fandidiana. Raha ny momba anay dia namaha ny olanay izany.
  • Safidy iray hafa dia ny tsy fampiasana Consul. Manana namana aho izay mpanohana lehibe ny Etcd. Ary miady hevitra aminy tsy tapaka izahay hoe iza no tsara kokoa Etcd sa Consul. Fa amin'ny lafiny inona no tsara kokoa, dia miombon-kevitra aminy matetika izahay fa ny Consul dia manana mpandraharaha iray izay tokony handeha amin'ny node tsirairay miaraka amin'ny tahiry. Izany hoe, mandalo amin’ity mpandraharaha ity ny fifandraisan’ny Patroni amin’ny kluster Consul. Ary lasa bottleneck ity agent ity. Raha misy zavatra mitranga amin'ilay mpandraharaha dia tsy afaka miara-miasa amin'ny cluster Consul intsony i Patroni. Ary io no olana. Tsy misy mpandraharaha ao amin'ny drafitra Etcd. Afaka miasa mivantana amin'ny lisitry ny mpizara Etcd i Patroni ary efa mifandray amin'izy ireo. Amin'io lafiny io, raha mampiasa Etcd amin'ny orinasanao ianao, dia mety ho safidy tsara kokoa noho ny Consul ny Etcd. Saingy izahay amin'ny mpanjifanay dia voafetra hatrany amin'ny zavatra nofidian'ny mpanjifa sy ampiasainy. Ary manana Consul izahay amin'ny ankapobeny ho an'ny mpanjifa rehetra.
  • Ary ny teboka farany dia ny fanavaozana ny soatoavin'ny parameter. Azontsika atao ny mampiakatra ireo mari-pamantarana ireo amin'ny fanantenana fa ho fohy ny olan'ny tambazotrantsika ao anatin'ny fotoana fohy ary tsy hivoaka ivelan'ny isan'ireo masontsivana ireo. Amin'izany fomba izany no ahafahantsika mampihena ny herisetran'i Patroni amin'ny autofile raha misy olana amin'ny tambajotra.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Heveriko fa maro amin'ireo mampiasa an'i Patroni no mahafantatra an'io baiko io.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ity baiko ity dia mampiseho ny toetry ny cluster amin'izao fotoana izao. Ary raha vao jerena dia mety ho toa mahazatra io sary io. Manana tompo isika, manana kopia, tsy misy fahatarana amin'ny kopia. Ara-dalàna anefa io sary io mandra-pahafantarantsika fa tokony hanana node telo io cluster io fa tsy roa.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Araka izany dia nisy ny autofile. Ary taorian'ity autofile ity dia nanjavona ny kopianay. Mila fantarina ny antony nanjavonany sy namerina azy, namerina azy. Ary mandeha any amin'ny logs indray isika ary mijery ny antony nanaovanay auto-fileover.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Amin'ity tranga ity, ny kopia faharoa no lasa tompony. Tsy misy dikany eto.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary mila mijery ny kopia izay nianjera ary tsy ao anatin'ny cluster isika. Sokafy ny logs Patroni ary hitanay fa nanana olana izahay nandritra ny dingan'ny fampifandraisana amin'ny cluster teo amin'ny sehatra pg_rewind. Raha te hifandray amin'ny cluster dia mila mamerina ny log de transaction ianao, mangataha ny log de transaction ilaina amin'ny master, ary ampiasao izany mba hanatratrarana ny master.

Amin'ity tranga ity, tsy manana diarin'ny fifanakalozana izahay ary tsy afaka manomboka ny kopia. Noho izany, atsahatray ny Postgres amin'ny fahadisoana. Ary noho izany dia tsy ao amin'ny cluster.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Mila takatsika hoe nahoana izy io no tsy ao anaty cluster ary nahoana no tsy nisy logs. Mandeha any amin'ny tompony vaovao isika ary mijery izay ananany ao amin'ny kitay. Hita fa rehefa vita ny pg_rewind dia nisy toerana fisavana. Ary ny sasany amin'ireo diarin'ny varotra taloha dia novana anarana fotsiny. Rehefa nanandrana nifandray tamin'ny tompony vaovao ilay tompo taloha ary nanontany an'ireo diary ireo dia efa novana anarana izy ireo, tsy nisy fotsiny.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Nampitahaiko ny mari-pamantarana tamin'ny fotoana nisehoan'ireo zava-nitranga ireo. Ary eo ny fahasamihafana dia ara-bakiteny 150 milliseconds, izany hoe, ny toeram-pisavana vita tao amin'ny 369 milliseconds, ny WAL fizarana dia nomena anarana. Ary ara-bakiteny tamin'ny 517, taorian'ny 150 milisegondra, dia nanomboka tamin'ny kopia taloha ny famerenana. Izany hoe, 150 milliseconds ara-bakiteny dia ampy ho antsika ka tsy afaka mifandray sy mahazo vola ilay dika mitovy.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Inona no safidy?

Nampiasa slot replication izahay tamin'ny voalohany. Nihevitra izahay fa tsara izany. Na dia tamin'ny dingana voalohany amin'ny fandidiana aza dia nesorinay ny slots. Toa taminay fa raha manangona fizarana WAL be dia be ny slots dia afaka manary ny tompony izahay. Ho lavo izy. Nijaly nandritra ny fotoana kelikely tsy nisy slot izahay. Ary tsapanay fa mila slots, naverinay ireo slots.

Saingy misy olana eto, rehefa mandeha any amin'ny replika ny tompony dia mamafa ny slot ary mamafa ny fizarana WAL miaraka amin'ny slot. Ary mba hanafoanana ity olana ity dia nanapa-kevitra ny hampiakatra ny paramètre wal_keep_segments izahay. Mizara ho fizarana 8 izany. Nampiakarinay ho 1 izany ary nojerenay hoe ohatrinona ny habaka malalaka anananay. Ary nanome 000 gigabytes izahay ho an'ny wal_keep_segments. Izany hoe, rehefa mifamadika, dia manana tahiry 16 gigabytes amin'ny log de transaction foana amin'ny nodes rehetra.

Ary fanampiny - dia mbola ilaina amin'ny asa fikojakojana maharitra. Andeha atao hoe mila manavao ny iray amin'ireo dika mitovy. Ary te hamono azy izahay. Mila manavao ny lozisialy isika, angamba ny rafitra fandidiana, zavatra hafa. Ary rehefa vonoinay ny kopia iray dia esorina koa ny slot ho an'io dika mitovy io. Ary raha mampiasa wal_keep_segments kely isika, dia ho very ny diarin'ny transaction raha tsy misy kopia ela. Hanangana kopia izahay, hangataka ireo diarin'ny varotra izay nijanonany, saingy mety tsy ao amin'ny tompony. Ary tsy ho afaka hifandray koa ny kopia. Noho izany dia mitahiry gazety be dia be izahay.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Manana fototra famokarana izahay. Efa misy ny tetikasa an-dalam-pandrosoana.

Nisy mpitatitra. Niditra izahay ary nijery - milamina ny zava-drehetra, efa misy ny kopia, tsy misy fahatarana amin'ny replication. Tsy misy lesoka koa ao amin'ny diary, milamina ny zava-drehetra.

Ny ekipan'ny vokatra dia milaza fa tokony hisy angon-drakitra, saingy hitantsika avy amin'ny loharano iray izany, saingy tsy hitantsika ao anaty tahiry. Ary mila mahatakatra izay nanjo azy ireo isika.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Mazava fa tsy nahita azy ireo ny pg_rewind. Avy hatrany dia azonay izany, saingy nandeha nijery ny zava-nitranga izahay.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ao amin'ny logs dia hitantsika foana ny fotoana nitrangan'ny filer, iza no lasa tompony, ary afaka mamaritra hoe iza no tompony taloha ary oviana izy no te ho lasa replica, izany hoe mila ireto logs ireto isika hahitana ny habetsaky ny logs de transaction izay. very.

Niverina indray ny tompontsika taloha. Ary i Patroni dia voasoratra ao amin'ny autorun. Natomboka ny Patroni. Nanomboka ny Postgres izy avy eo. Ny marimarina kokoa, alohan'ny hanombohan'ny Postgres sy alohan'ny hanaovana azy ho kopia, dia nanangana ny pg_rewind i Patroni. Noho izany, nofafany ny ampahany tamin'ny diarin'ny fifampiraharahana, nampiditra vaovao ary mifandray. Eto i Patroni dia niasa tamim-pahendrena, izany hoe araka ny efa nampoizina. Naverina tamin'ny laoniny ny cluster. Nanana node 3 izahay, taorian'ny node 3 ny filer - mangatsiatsiaka ny zava-drehetra.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Very data izahay. Ary mila mahatakatra ny habetsahan'ny very isika. Mitady ny fotoana nanaovanay rewind izahay. Hitantsika ao amin'ny lahatsoratra diary toy izany izany. Nanomboka ny rewind, nanao zavatra teo ary nifarana.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Mila mitady ny toerana ao amin'ny diarin'ny fifampiraharahana izay nialan'ny tompony taloha. Amin'ity tranga ity, ity no marika. Ary mila marika faharoa isika, izany hoe ny halaviran'ny tompony taloha sy ny vaovao.

Maka ny pg_wal_lsn_diff mahazatra izahay ary mampitaha ireo marika roa ireo. Ary amin'ity tranga ity dia mahazo 17 megabytes isika. Na be na kely dia samy manapa-kevitra ho azy ny tsirairay. Satria ho an'ny olona 17 megabytes dia tsy dia be loatra, ho an'ny olona iray dia betsaka sy tsy azo ekena. Eto, ny tsirairay dia mamaritra ny tenany araka ny filan'ny orinasa.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Inona anefa no hitantsika ho antsika?

Voalohany, tsy maintsy manapa-kevitra ho an'ny tenantsika isika - mila an'i Patroni foana ve isika hanomboka amin'ny alàlan'ny famerenana ny rafitra? Matetika no mitranga fa tsy maintsy mandeha any amin'ny tompony taloha, jereo hoe hatraiza no lasa. Jereo angamba ny ampahany amin'ny diarin'ny fifampiraharahana, jereo izay ao. Ary mba hahatakarana raha mety ho very ity angona ity isika na mila mampandeha ny tompony taloha amin'ny fomba tokana mba hisintonana ity data ity.

Ary aorian'izay dia tsy maintsy manapa-kevitra isika raha afaka manary ity angon-drakitra ity na afaka mamerina izany, mampifandray ity node ity ho kopia amin'ny cluster.

Fanampin'izany, misy ny "maximum_lag_on_failover". Amin'ny alàlan'ny default, raha manompo ahy ny fitadidiako, dia manana sanda 1 megabyte io paramètre io.

Ahoana no fiasana? Raha toa ka 1 megabyte ny angon-drakitra ao ambadiky ny replika antsika amin'ny fahatarana amin'ny replication dia tsy mandray anjara amin'ny fifidianana io kopia io. Ary raha misy fileover tampoka, i Patroni dia mijery izay dika mitovy amin'izany. Raha toa ka ao ambadiky ny diarin'ny fifampiraharahana marobe izy ireo dia tsy afaka ny ho lasa tompo. Ity dia endri-piarovana tena tsara izay manakana anao tsy ho very angon-drakitra.

Saingy misy ny olana amin'ny fanavaozana ny famerenam-potoana ao amin'ny cluster Patroni ary ny DCS dia havaozina amin'ny elanelam-potoana iray. Heveriko fa 30 segondra no sanda ttl default.

Araka izany, mety misy toe-javatra misy ny replication lag ho an'ny replika ao amin'ny DCS, fa raha ny marina dia mety hisy fahatarana hafa tanteraka na mety tsy misy lag mihitsy, izany hoe tsy amin'ny fotoana tena izy io zavatra io. Ary tsy hita taratra foana ny tena sary. Ary tsy mendrika ny hanaovana lojika mirindra amin'izany.

Ary ny mety ho fatiantoka dia mitoetra foana. Ary amin'ny tranga ratsy indrindra, formula iray, ary amin'ny tranga mahazatra, formula iray hafa. Izany hoe, rehefa manomana ny fampiharana ny Patroni isika ary manombatombana ny habetsaky ny angona mety ho very, dia tsy maintsy miantehitra amin'ireo raikipohy ireo ary alaivo sary an-tsaina hoe ohatrinona ny angona mety ho very.

Ary misy vaovao tsara. Rehefa mandroso ny tompo taloha, dia afaka mandroso izy noho ny dingana sasantsasany. Izany hoe, nisy karazana autovacuum, nanoratra ny angona izy, namonjy azy ireo tao amin'ny log transaction. Ary afaka tsy miraharaha sy mamoy an'io data io mora foana isika. Tsy misy olana amin'izany.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary toy izao ny endriky ny logs raha napetraka ny maximum_lag_on_failover ary nisy filer, ary mila misafidy tompony vaovao ianao. Ny dika mitovy dia manombana ny tenany ho tsy afaka mandray anjara amin'ny fifidianana. Ary mandà tsy handray anjara amin'ny hazakazaka ho an'ny mpitarika izy. Ary miandry tompo vaovao izy, mba hahafahany mifandray aminy. Fepetra fanampiny amin'ny fahaverezan'ny data izany.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Eto izahay dia manana ekipa vokatra izay nanoratra fa manana olana amin'ny Postgres ny vokatra. Mandritra izany fotoana izany, ny tompony dia tsy azo idirana, satria tsy misy amin'ny SSH. Ary tsy mitranga koa ny autofile.

Noterena hamerina indray ity mpampiantrano ity. Noho ny reboot dia nisy ny auto-file, na dia azo atao aza ny manao auto-file manual, araka ny fahazoako azy izao. Ary aorian'ny reboot dia efa ho hitantsika izay nananantsika tamin'ny tompony ankehitriny.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Nandritra izany fotoana izany dia fantatray mialoha fa manana olana amin'ny kapila izahay, izany hoe efa fantatray tamin'ny fanaraha-maso ny toerana handavaka sy ny tokony hotadiavina.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Niditra tao amin'ny log postgres izahay, nanomboka nahita ny zava-nitranga tao. Hitanay ny fanoloran-tena izay maharitra iray, roa, telo segondra, izay tsy ara-dalàna mihitsy. Hitanay fa manomboka miadana sy hafahafa ny autovacuum-nay. Ary nahita rakitra vonjimaika teo amin'ny kapila izahay. Izany hoe, ireo rehetra ireo dia famantarana ny olana amin'ny kapila.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Nijery tao amin'ny system dmesg (kernel log) izahay. Ary hitanay fa manana olana amin'ny iray amin'ireo kapila izahay. Ny subsystem kapila dia rindrambaiko Raid. Nijery ny /proc/mdstat izahay ary nahita fa tsy ampy fiara iray. Izany hoe, misy Raid 8 disks, tsy misy iray. Raha mijery tsara ny slide ianao dia ao amin'ny famoahana dia hitanao fa tsy manana sde izahay. Aminay, raha misy fepetra, dia lavo ny kapila. Niteraka olan'ny kapila izany, ary nisedra olana koa ny fampiharana rehefa niara-niasa tamin'ny kluster Postgres.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary amin'ity tranga ity dia tsy hanampy antsika amin'ny fomba rehetra i Patroni, satria i Patroni dia tsy manana andraikitra amin'ny fanaraha-maso ny toetry ny mpizara, ny toetry ny kapila. Ary tsy maintsy manara-maso ny toe-javatra toy izany amin'ny alalan'ny fanaraha-maso ivelany. Nampianay haingana ny fanaraha-maso kapila amin'ny fanaraha-maso ivelany.

Ary nisy eritreritra toy izany - afaka manampy antsika ve ny rindrambaiko fefy na watchdog? Nihevitra izahay fa zara raha nanampy anay tamin'ity tranga ity, satria nandritra ny olana dia nanohy nifanerasera tamin'ny vondron'ny DCS i Patroni ary tsy nahita olana. Izany hoe, avy amin'ny fomba fijerin'ny DCS sy Patroni, ny zava-drehetra dia tsara tamin'ny cluster, na dia nisy aza ny olana tamin'ny kapila, nisy ny olana tamin'ny fisian'ny tahiry.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Raha ny hevitro dia io no iray amin'ireo olana hafahafa izay nokarohiko nandritra ny fotoana ela be, namaky logs be dia be aho, naka indray ary niantso azy io ho cluster simulator.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ny olana dia ny tompony taloha dia tsy afaka ny ho lasa replica mahazatra, izany hoe i Patroni no nanomboka azy, nasehon'i Patroni fa io node io dia misy toy ny replica, saingy tamin'izany fotoana izany dia tsy replica mahazatra izany. Ho hitanao izao ny antony. Io no notazoniko tamin'ny famakafakana an'io olana io.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary ahoana no niantombohan’izany rehetra izany? Nanomboka, toy ny tamin'ny olana teo aloha, tamin'ny frein kapila. Nanana fanoloran-tena izahay nandritra ny segondra iray, roa.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Nisy tapaka ny fifandraisana, izany hoe tapaka ny mpanjifa.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Nisy sakana tamin'ny hamafin'ny samy hafa.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary, araka izany, ny subsystem kapila dia tsy dia mamaly loatra.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary ny zava-miafina indrindra amiko dia ny fangatahana fanakatonana avy hatrany tonga. Postgres dia manana fomba fanakatonana telo:

  • Mahafinaritra rehefa miandry ny mpanjifa rehetra hanapaka samirery.
  • Misy fifadian-kanina rehefa manery ny mpanjifa hanapaka satria ho tapaka.
  • Ary avy hatrany. Amin'ity tranga ity, immediate dia tsy miteny amin'ny mpanjifa mba hikatona, fa manidy fotsiny tsy misy fampitandremana. Ary ho an'ny mpanjifa rehetra, ny rafitra fandidiana dia efa mandefa hafatra RST (hafatra TCP fa tapaka ny fifandraisana ary tsy misy azo tratrarina intsony ny mpanjifa).

Iza no nandefa io famantarana io? Ny fizotry ny background Postgres dia tsy mandefa famantarana toy izany, izany hoe kill-9 ity. Tsy mifampitondra zavatra toy izany izy ireo, fa ny zavatra toy izany ihany no ataony, izany hoe fanombohana maika ny Postgres. Iza no nandefa azy, tsy fantatro.

Nijery ny baiko "farany" aho ary nahita olona iray izay niditra tao amin'ity server ity niaraka taminay, saingy saro-kenatra ny hametraka fanontaniana. Angamba izany dia famonoana -9. Hitako ny famonoana -9 ao anaty logs, satria Nilaza ny Postgres fa namono -9 izany, saingy tsy hitako tao amin'ny log.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Raha mijery bebe kokoa aho dia hitako fa tsy nanoratra tao amin'ny log nandritra ny fotoana ela i Patroni - 54 segondra. Ary raha ampitahaina ny mari-pamantarana roa dia tsy nisy hafatra nandritra ny 54 segondra teo ho eo.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary nandritra izany fotoana izany dia nisy autofile. Nanao asa tsara teto indray i Patroni. Tsy teo ny tomponay taloha, nisy zavatra nitranga taminy. Ary nanomboka ny fifidianana tompo vaovao. Nilamina tsara ny zava-drehetra teto. Lasa mpitarika vaovao ny pgsql01 anay.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Manana kopia izay lasa tompo isika. Ary misy valiny faharoa. Ary nisy olana tamin'ny kopia faharoa. Niezaka nanamboatra indray izy. Araka ny fahazoako azy dia nanandrana nanova ny recovery.conf izy, atombohy indray ny Postgres ary mifandray amin'ny tompony vaovao. Manoratra hafatra isaky ny 10 segondra izay ezahany izy, saingy tsy nahomby.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary mandritra ireo andrana ireo dia tonga any amin'ny tompony taloha ny famantarana fanakatonana avy hatrany. Averina indray ny master. Ary mijanona ihany koa ny fanarenana satria miditra amin'ny reboot ny tompony taloha. Izany hoe, tsy afaka mifandray aminy ny dika mitovy, satria ao anatin'ny fomba fanakatonana.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Tamin'ny fotoana iray dia niasa izany, saingy tsy nanomboka ny famerenana.

Ny hany heveriko dia nisy adiresy master taloha tao amin'ny recovery.conf. Ary rehefa niseho ny tompony vaovao, ny kopia faharoa dia mbola niezaka nifandray tamin'ny tompony taloha.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Rehefa nanomboka tamin'ny kopia faharoa i Patroni dia nanomboka niakatra ny node saingy tsy afaka namerina. Ary nisy replication lag dia niforona, izay toa tahaka izao. Izany hoe, tafapetraka avokoa ireo node telo ireo, saingy nihemotra ny node faharoa.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Amin'izay fotoana izay ihany koa, raha mijery ireo logs izay nosoratana ianao dia ho hitanao fa tsy afaka manomboka ny replication satria tsy mitovy ny logs de transaction. Ary ireo diarin'ny fifampiraharahana izay atolotry ny tompony, izay voafaritra ao amin'ny recovery.conf, dia tsy mifanaraka amin'ny node misy antsika ankehitriny.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary eto aho nanao fahadisoana. Tsy maintsy tonga aho hijery izay ao amin'ny fanarenana.conf mba hitsapana ny petra-kevitro fa nifandray tamin'ny tompony diso izahay. Saingy avy eo dia niatrika izany fotsiny aho ary tsy tonga tao an-tsaiko, na hitako fa nihemotra ilay kopia ka tsy maintsy averina, izany hoe niasa tsy nitandrina aho. Io no niarahako.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Rehefa afaka 30 minitra dia efa tonga ny admin, izany hoe namerina ny Patroni tamin'ny kopia aho. Efa namarana azy aho, nihevitra aho fa tsy maintsy averina. Ary nieritreritra aho - hamerina an'i Patroni aho, mety hisy zavatra tsara hitranga. Nanomboka ny fanarenana. Ary nanokatra ny fototra, dia vonona ny hanaiky ny fifandraisana.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Nanomboka ny replication. Saingy iray minitra taty aoriana, nianjera izy noho ny fahadisoana fa tsy mety aminy ny diarin'ny fifampiraharahana.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Nieritreritra aho fa hanomboka indray. Natomboko indray ny Patroni, ary tsy natomboko indray ny Postgres, fa natomboko indray ny Patroni tamin'ny fanantenana fa hanomboka amin'ny fomba mahagaga ny angon-drakitra.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Nanomboka indray ny replication, saingy hafa ny marika ao amin'ny diarin'ny fifanakalozana, tsy mitovy amin'ny andrana fanombohana teo aloha. Nijanona indray ny famerenana. Ary efa hafa kely ny hafatra. Ary tsy dia nampahafantatra ahy loatra izany.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary avy eo dia tonga tamiko izany - ahoana raha hamerina ny Postgres aho, amin'izao fotoana izao dia manao fisavana amin'ny tompon'izao fotoana izao aho mba hamindra ny teboka ao amin'ny log de transaction mba hanombohan'ny fotoana iray hafa? Ankoatra izany, mbola nanana tahiry WAL izahay.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Natomboko indray ny Patroni, nanao fisavana roa teo amin'ny tompony, teboka fanombohana roa tamin'ny kopia rehefa nisokatra. Ary nanampy izany. Nieritreritra ela aho hoe nahoana izy io no nanampy sy ny fomba niasany. Ary nanomboka ny kopia. Ary tsy rovitra intsony ny replication.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ny olana toy izany amiko dia iray amin'ireo olana mistery, izay mbola manontany tena momba ny tena zava-nitranga tao.

Inona no vokany eto? Afaka miasa araka ny nokasaina i Patroni ary tsy misy hadisoana. Saingy miaraka amin'izay koa, tsy antoka 100% izany fa tsara ny zava-drehetra amintsika. Mety hanomboka ny dika mitovy, saingy mety ho ao anatin'ny fanjakana semi-miasa, ary ny fampiharana dia tsy afaka miasa amin'ny dika mitovy, satria hisy angona taloha.

Ary aorian'ny filer dia mila manamarina foana ianao fa milamina ny zava-drehetra miaraka amin'ny cluster, izany hoe misy ny isan'ny replicas ilaina, tsy misy replication lag.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ary rehefa mandalo ireo olana ireo isika dia hanao tolo-kevitra aho. Niezaka nanambatra azy ireo ho sary roa aho. Angamba, ny tantara rehetra dia azo atambatra ho sary roa ary tantaraina fotsiny.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Rehefa mampiasa Patroni ianao dia tsy maintsy manana fanaraha-maso. Tokony ho fantatrao foana ny fotoana nitrangan'ny autofileover, satria raha tsy fantatrao fa manana autofileover ianao dia tsy manana fifehezana ny cluster ianao. Ary ratsy izany.

Aorian'ny filer tsirairay dia tsy maintsy manamarina ny cluster foana isika. Mila manao izay hahazoana antoka fa manana ny isan'ny replika amin'izao fotoana izao, tsy misy replication lag, tsy misy hadisoana amin'ny logs mifandraika amin'ny streaming replication, miaraka amin'i Patroni, miaraka amin'ny rafitra DCS.

Ny automatique dia afaka miasa amim-pahombiazana, Patroni dia fitaovana tena tsara. Afaka miasa izy io, saingy tsy hitondra ny cluster amin'ny fanjakana irina. Ary raha tsy fantatsika izany dia ho sahirana isika.

Ary tsy bala volafotsy i Patroni. Mbola mila mahatakatra ny fomba fiasan'ny Postgres, ny fomba fiasan'ny replication ary ny fomba fiasan'i Patroni amin'ny Postgres, ary ny fomba hanomezana fifandraisana eo amin'ny nodes. Ilaina izany mba hahafahana mamaha olana amin'ny tananao.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ahoana no fomba hanatonana ny olan'ny diagnostika? Nitranga izany fa miara-miasa amin'ny mpanjifa samihafa izahay ary tsy misy olona manana stack ELK, ary tsy maintsy mandamina ny logs izahay amin'ny fanokafana consoles 6 sy tabilao 2. Ao amin'ny tabilao iray, ireto ny diarin'ny Patroni ho an'ny node tsirairay, ao amin'ny tabilao iray hafa, ireto ny diarin'ny Consul, na Postgres raha ilaina. Tena sarotra ny mamantatra izany.

Inona no fomba noraisiko? Voalohany, mijery foana aho rehefa tonga ny filer. Ary ho ahy ity dia ranon-drano. Mijery ny zava-nitranga talohan'ny mpitahiry aho, nandritra ny mpitatitra ary taorian'ny mpitatitra. Misy marika roa ny fileover: ity no fotoana fanombohana sy fiafarana.

Manaraka izany dia mijery ao amin'ny diary ny zava-nitranga teo anoloan'ny filer, izay nialoha ny filer, izany hoe mitady ny antony nahatonga ny filer aho.

Ary izany dia manome sarin'ny fahatakarana ny zava-nitranga sy ny zavatra azo atao amin'ny ho avy mba tsy hitrangan'ny toe-javatra toy izany (ary vokatr'izany dia tsy misy mpizara).

Ary aiza isika matetika no mijery? mijery aho:

  • Voalohany, mankany amin'ny logs Patroni.
  • Manaraka izany dia mijery ny diarin'ny Postgres aho, na ny diarin'ny DCS, arakaraka izay hita ao amin'ny logs Patroni.
  • Ary ny logs system koa indraindray dia manome fahatakarana ny nahatonga ny filer.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ahoana no fahitako an'i Patroni? Manana fifandraisana tena tsara amin'i Patroni aho. Raha ny hevitro dia ity no tsara indrindra misy ankehitriny. Mahafantatra vokatra maro hafa aho. Ireo dia Stolon, Repmgr, Pg_auto_failover, PAF. 4 fitaovana. Nanandrana azy rehetra aho. Patroni no tiako indrindra.

Raha manontany ahy izy ireo hoe: "Moa ve aho manoro an'i Patroni?". Eny hoy aho, satria tiako i Patroni. Ary heveriko fa nianatra nahandro azy aho.

Raha mahaliana anao ny mahita ny olana hafa misy amin'i Patroni ankoatra ireo olana voalazako dia azonao atao ny mijery ny pejy olana amin'ny GitHub. Misy tantara maro samihafa ary olana mahaliana maro no resahina ao. Ary vokatr'izany dia nisy bibikely sasany nampidirina sy voavaha, izany hoe vakiana mahaliana.

Misy tantara mahaliana momba ny olona mitifitra ny tenany amin'ny tongotra. Tena mampahafantatra. Mamaky sy azonao ianao fa tsy ilaina ny manao izany. Notsindriko ny tenako.

Ary te-hisaotra lehibe an'i Zalando aho tamin'ny famolavolana ity tetikasa ity, dia i Alexander Kukushkin sy Alexey Klyukin. Aleksey Klyukin dia iray amin'ireo mpiara-manoratra, tsy miasa ao amin'ny Zalando intsony izy, fa olona roa no nanomboka niasa tamin'ity vokatra ity.

Ary heveriko fa zavatra tena mahafinaritra i Patroni. Faly aho fa misy izy, mahaliana azy izany. Ary fisaorana lehibe ho an'ireo mpandray anjara rehetra izay manoratra patch ho an'i Patroni. Manantena aho fa i Patroni dia ho matotra kokoa, mangatsiatsiaka ary mahomby amin'ny taona. Efa miasa izy io fa manantena aho fa hihatsara kokoa. Noho izany, raha mikasa ny hampiasa Patroni ianao, dia aza matahotra. Vahaolana tsara izany, azo ampiharina sy ampiasaina.

Izay ihany. Raha manana fanontaniana ianao dia manontania.

Tantaran'ny tsy fahombiazan'ny Patroni na ny fomba handrava ny cluster PostgreSQL anao. Alexey Lesovsky

Ny fanontanianao

Misaotra tamin'ny tatitra! Raha mbola mila mijery tsara ao aorian'ny filer ianao, nahoana no mila filer automatique?

Satria zava-baovao io. Vao herintaona izahay no niaraka taminy. Aleo miambina. Te-hiditra izahay ary hahita fa tena nandeha araka ny tokony ho izy ny zava-drehetra. Ity no haavon'ny tsy fahatokisan'ny olon-dehibe - tsara kokoa ny manamarina sy mijery.

Ohatra, nandeha maraina izahay dia nijery, sa tsy izany?

Tsy ny maraina, matetika isika no mianatra momba ny autofile saika avy hatrany. Mahazo fampandrenesana izahay, hitanay fa nisy autofile nitranga. Saika avy hatrany dia mandeha mijery. Saingy ireo fisavana rehetra ireo dia tokony hoentina amin'ny fanaraha-maso. Raha miditra amin'ny Patroni amin'ny alàlan'ny REST API ianao dia misy tantara iray. Araka ny tantara dia azonao jerena ny mari-pamantarana tamin'ny fotoana nisehoan'ny filer. Miainga amin’izany no azo atao ny fanaraha-maso. Hitanao ny tantara, firy ny zava-nitranga tao. Raha manana hetsika bebe kokoa isika, dia nisy fisie mandeha ho azy. Afaka mandeha mijery ianao. Na ny automatique fanaraha-maso nataonay dia nanamarina fa manana ny kopia rehetra izahay, tsy misy fahatarana ary tsara ny zava-drehetra.

Misaotra anao!

Misaotra betsaka amin'ny tantara mahafinaritra! Raha nafindranay tany amin'ny toerana lavitra ny cluster Postgres ny cluster DCS, dia mila karakaraina tsindraindray koa ity cluster ity? Inona avy ireo fomba fanao tsara indrindra tokony hovonoina ny ampahany sasany amin'ny cluster DCS, zavatra tokony hatao miaraka aminy, sns.? Ahoana no iveloman'ity rafitra iray manontolo ity? Ary ahoana no anaovanao ireo zavatra ireo?

Ho an'ny orinasa iray dia ilaina ny manao matrix olana, inona no mitranga raha tsy mahomby ny iray amin'ireo singa na singa maromaro. Araka ity matrix ity, dia mandalo ny singa rehetra izahay ary manamboatra scenario raha toa ka tsy nahomby ireo singa ireo. Noho izany, ho an'ny toe-javatra tsy fahombiazana tsirairay, dia afaka manana drafitra hetsika ho an'ny fanarenana ianao. Ary raha ny momba ny DCS dia tonga ao anatin'ny fotodrafitrasa manara-penitra izany. Ary ny admin no mitantana azy, ary efa miantehitra amin'ny admin izay mitantana azy sy ny fahaizany manamboatra izany raha sendra misy loza. Raha tsy misy mihitsy ny DCS, dia apetrakay izany, saingy tsy manara-maso manokana izany, satria tsy tompon'andraikitra amin'ny fotodrafitrasa izahay, fa manome soso-kevitra momba ny fomba sy ny tokony hojerena.

Izany hoe, azoko tsara ve fa mila manaisotra an'i Patroni aho, manaisotra ny rakitra, manafoana ny zava-drehetra alohan'ny hanaovana zavatra miaraka amin'ny mpampiantrano?

Miankina amin'ny isan'ny nodes ananantsika ao amin'ny cluster DCS izany. Raha misy nodes maro ary raha tsy manafoana afa-tsy ny iray amin'ireo nodes (ny kopia), dia mitazona kôlejy ny cluster. Ary mbola miasa ny Patroni. Ary tsy misy na trigger. Raha misy asa sarotra sasany misy fiantraikany amin'ny nodes bebe kokoa, ny tsy fisian'izany dia mety hanimba ny kôlejy, dia - eny, mety misy dikany ny mametraka an'i Patroni amin'ny fiatoana. Misy baiko mifanaraka aminy - patronictl pause, patronictl resume. Miato fotsiny izahay ary tsy mandeha ny autofiler amin'io fotoana io. Manao fikojakojana ny kluster DCS izahay, avy eo manala ny fiatoana ary manohy miaina.

Misaotra betsaka!

Misaotra indrindra tamin'ny tatitra nataonao! Ahoana no fiheveran'ny ekipan'ny vokatra momba ny very data?

Tsy miraharaha ny ekipan'ny vokatra, ary manahy ny mpitarika ny ekipa.

Inona no antoka misy?

Tena sarotra ny antoka. Alexander Kukushkin dia manana tatitra "Ahoana ny kajy RPO sy RTO", izany hoe ny fotoana fanarenana sy ny habetsaky ny angona mety ho very. Heveriko fa mila mitady ireo sary mihetsika ireo isika ary mianatra azy ireo. Raha ny tadidiko dia misy dingana manokana amin'ny fanaovana kajy ireo zavatra ireo. Firy ny fifanakalozana mety ho very, firy ny angona mety ho very. Amin'ny maha-safidy, afaka mampiasa replication synchronous amin'ny ambaratonga Patroni isika, saingy sabatra roa lela ity: na manana fahatokisana angon-drakitra isika, na very haingana. Misy replication synchronous, nefa tsy miantoka ny fiarovana 100% amin'ny fahaverezan'ny data.

Alexey, misaotra tamin'ny tatitra mahafinaritra! Misy traikefa amin'ny fampiasana ny Patroni ho fiarovana amin'ny ambaratonga aotra? Izany hoe, miaraka amin'ny standby synchronous? Io no fanontaniana voalohany. Ary ny fanontaniana faharoa. Nampiasa vahaolana samihafa ianao. Nampiasa Repmgr izahay, saingy tsy misy autofiler, ary ankehitriny dia mikasa ny hampiditra autofiler izahay. Ary heverintsika ho vahaolana hafa i Patroni. Inona no azonao lazaina ho tombony raha oharina amin'ny Repmgr?

Ny fanontaniana voalohany dia momba ny replika synchronous. Tsy misy mampiasa replication synchronous eto, satria matahotra ny rehetra (Efa mampiasa izany ny mpanjifa maro, raha ny fitsipika, tsy nahatsikaritra olana momba ny fampisehoana - Fanamarihan'ny mpandahateny). Saingy namolavola fitsipika ho an'ny tenantsika isika fa tokony hisy node telo farafahakeliny ao amin'ny cluster replication synchronous, satria raha manana node roa isika ary raha tsy mahomby ny master na replica, dia mamadika ity node ity amin'ny mode Standalone i Patroni mba hitohizan'ny fampiharana. asa. Amin'ity tranga ity, misy ny mety ho very angon-drakitra.

Momba ny fanontaniana faharoa, nampiasa Repmgr izahay ary mbola manao izany amin'ny mpanjifa sasany noho ny antony ara-tantara. Inona no azo lazaina? Patroni dia tonga miaraka amin'ny autofiler ivelan'ny boaty, Repmgr dia tonga miaraka amin'ny autofiler ho endri-javatra fanampiny mila alefa. Mila mihazakazaka ny daemon Repmgr amin'ny node tsirairay isika ary avy eo dia afaka manamboatra ny autofiler.

Manamarina ny Repmgr raha velona ny node Postgres. Ny fizotran'ny Repmgr dia manamarina ny fisian'ny tsirairay, tsy fomba mahomby izany. Mety hisy tranga sarotra amin'ny fitokana-monina izay ahafahan'ny cluster Repmgr lehibe misaraka ho vondrona kely kokoa ary manohy miasa. Efa hatry ny ela aho no tsy nanaraka ny Repmgr, angamba raikitra ... na tsia. Fa ny fanesorana ny vaovao momba ny toetry ny cluster ao amin'ny DCS, toy ny Stolon, Patroni, no safidy azo atao indrindra.

Alexey, manana fanontaniana aho, mety ho lamer. Ao amin'ny iray amin'ireo ohatra voalohany, nafindranao ny DCS avy amin'ny milina eo an-toerana mankany amin'ny mpampiantrano lavitra. Fantatsika fa ny tambajotra dia zavatra manana ny toetrany manokana, miaina irery. Ary inona no mitranga raha tsy misy ny cluster DCS noho ny antony sasany? Tsy holazaiko ny antony, mety ho be dia be izy ireo: manomboka amin'ny tanan'ny mpiserasera ka hatramin'ny tena olana.

Tsy niteny mafy aho, fa ny cluster DCS dia tsy maintsy ho failover ihany koa, izany hoe isan'ny nodes hafahafa, mba hahazoana quorum. Inona no mitranga raha tsy misy ny cluster DCS, na tsy azo fenoina ny kôlejy, izany hoe karazana fizarazarana tambajotra na tsy fahombiazan'ny node? Amin'ity tranga ity, ny cluster Patroni dia miditra amin'ny fomba vakiana fotsiny. Tsy afaka mamaritra ny toetry ny cluster sy ny tokony hatao ny cluster Patroni. Tsy afaka mifandray amin'ny DCS izy ary mitahiry ny fanjakana cluster vaovao ao, noho izany dia lasa mamaky fotsiny ny cluster manontolo. Ary miandry ny fidirana an-tànana avy amin'ny opérateur na ny hamerenana ny DCS.

Raha lazaina amin'ny teny manodidina, ny DCS dia lasa serivisy ho antsika manan-danja toy ny fototra?

Eny eny. Ao amin'ny orinasa maoderina maro, Service Discovery dia ampahany manan-danja amin'ny fotodrafitrasa. Efa eo am-panatanterahana izany na dia mbola tsy nisy aza ny tahirin-kevitra ao amin’ny fotodrafitrasa. Raha fintinina dia natomboka ny fotodrafitrasa, napetraka tao amin'ny DC, ary manana Service Discovery avy hatrany izahay. Raha Consul io dia azo amboarina eo amboniny ny DNS. Raha Etcd ity, dia mety misy ampahany amin'ny cluster Kubernetes, izay hapetraka ny zavatra hafa rehetra. Amiko dia efa tafiditra ao anatin'ny fotodrafitrasa maoderina ny Service Discovery. Ary mieritreritra momba izany izy ireo taloha kokoa noho ny momba ny angon-drakitra.

Misaotra anao!

Source: www.habr.com

Add a comment