Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Cholinga chachikulu cha Patroni ndikupereka Kupezeka Kwapamwamba kwa PostgreSQL. Koma Patroni ndi template chabe, osati chida chokonzekera (chomwe, kawirikawiri, chimanenedwa muzolemba). Poyang'ana koyamba, mutakhazikitsa Patroni mu labotale yoyesera, mutha kuwona kuti ndi chida chotani chomwe ndi chida chachikulu komanso momwe chimagwirira ntchito mosavuta kuyesa kwathu kuswa masango. Komabe, pochita, m'malo opangira zinthu, zonse sizimachitika nthawi zonse mokongola komanso mokongola ngati mu labotale yoyesera.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndikuuzani pang'ono za ine ndekha. Ndinayamba kukhala woyang'anira dongosolo. Anagwira ntchito mu chitukuko cha intaneti. Ndakhala ndikugwira ntchito ku Data Egret kuyambira 2014. Kampaniyo ikuchita upangiri m'munda wa Postgres. Ndipo timatumikira ndendende Postgres, ndipo timagwira ntchito ndi Postgres tsiku lililonse, kotero tili ndi ukadaulo wosiyanasiyana wokhudzana ndi ntchitoyi.

Ndipo kumapeto kwa 2018, tinayamba kugwiritsa ntchito Patroni pang'onopang'ono. Ndipo zokumana nazo zina zasonkhanitsidwa. Tinazizindikira mwanjira ina, kuzikonza, zidabwera ku machitidwe athu abwino. Ndipo mu lipoti ili ndidzayankhula za iwo.

Kupatula Postgres, ndimakonda Linux. Ndimakonda kuyendayenda ndikufufuza, ndimakonda kusonkhanitsa ma cores. Ndimakonda virtualization, zotengera, docker, Kubernetes. Zonsezi zimandisangalatsa, chifukwa zizolowezi zakale za admin zikukhudza. Ndimakonda kuchita zowunikira. Ndipo ndimakonda zinthu za postgres zokhudzana ndi kayendetsedwe kake, mwachitsanzo, kubwereza, kusunga. Ndipo mu nthawi yanga yopuma ndimalemba mu Go. Sindine wopanga mapulogalamu, ndimangolemba ndekha mu Go. Ndipo zimandisangalatsa.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

  • Ndikuganiza kuti ambiri a inu mukudziwa kuti Postgres alibe HA (High Kupezeka) kunja kwa bokosi. Kuti mupeze HA, muyenera kukhazikitsa china chake, kuchikonza, kuyesetsa ndikuchipeza.
  • Pali zida zingapo ndipo Patroni ndi imodzi mwazomwe zimathetsa HA zokongola komanso zabwino kwambiri. Koma poziyika zonse mu labotale yoyesera ndikuyiyendetsa, titha kuwona kuti zonse zimagwira ntchito, titha kubweretsanso mavuto ena, kuwona momwe Patroni amawathandizira. Ndipo tiwona kuti zonse zikuyenda bwino.
  • Koma m’zochita tinkakumana ndi mavuto osiyanasiyana. Ndipo ndilankhula za mavutowa.
  • Ndikuuzani momwe tidazizindikira, zomwe tidasintha - kaya zidatithandiza kapena ayi.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

  • Sindidzakuuzani momwe mungayikitsire Patroni, chifukwa mungathe google pa intaneti, mukhoza kuyang'ana mafayilo osinthika kuti mumvetse momwe zonse zimayambira, momwe zimapangidwira. Mutha kumvetsetsa ziwembu, zomangamanga, kupeza zambiri za izo pa intaneti.
  • Sindidzanena zomwe zinachitikira wina. Ndingonena za mavuto omwe tidakumana nawo.
  • Ndipo sindilankhula za mavuto omwe ali kunja kwa Patroni ndi PostgreSQL. Ngati, mwachitsanzo, pali mavuto okhudzana ndi kusanja, pamene gulu lathu lagwa, sindidzayankhula.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo chodzikanira chaching'ono tisanayambe lipoti lathu.

Mavuto onsewa omwe tidakumana nawo, tinali nawo m'miyezi yoyamba ya 6-7-8 yogwira ntchito. Patapita nthawi, tinafika ku machitidwe athu abwino amkati. Ndipo mavuto athu anatha. Chifukwa chake, lipotilo lidalengezedwa pafupifupi miyezi isanu ndi umodzi yapitayo, pomwe zonse zidali zatsopano m'mutu mwanga ndipo ndidazikumbukira bwino.

Pokonzekera lipotilo, ndakweza kale ma postmortems akale, ndikuyang'ana zipika. Ndipo zina mwazinthuzi zikhoza kuiwalika, kapena zina mwazinthu sizikanatha kufufuzidwa mokwanira panthawi yofufuza mavuto, kotero nthawi zina zingawoneke kuti mavutowo sakuganiziridwa mokwanira, kapena pali kusowa kwa chidziwitso. Ndipo kotero ndikukupemphani kuti mundikhululukire mphindi ino.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Patroni ndi chiyani?

  • Ichi ndi template yomanga HA. Ndi zomwe akunena mu zolembedwa. Ndipo kuchokera kumalingaliro anga, uku ndikulongosola kolondola kwambiri. Patroni si chipolopolo cha siliva chomwe chidzathetsa mavuto anu onse, ndiko kuti, muyenera kuyesetsa kuti mugwire ntchito ndikubweretsa phindu.
  • Iyi ndi ntchito yothandizira yomwe imayikidwa pa ntchito iliyonse ya database ndipo ndi mtundu wa init system yanu ya Postgres. Imayamba Postgres, kuyimitsa, kuyambitsanso, kukonzanso, ndikusintha mitu yamagulu anu.
  • Choncho, pofuna kusunga chikhalidwe cha masango, chiwonetsero chake chamakono, monga momwe chikuwonekera, mtundu wina wa kusungirako ukufunika. Ndipo kuchokera pamalingaliro awa, Patroni adatenga njira yosungira boma mu dongosolo lakunja. Ndilo gawo losungirako logawidwa logawidwa. Itha kukhala Etcd, Consul, ZooKeeper, kapena kubernetes Etcd, mwachitsanzo chimodzi mwazosankhazi.
  • Ndipo chimodzi mwazinthu za Patroni ndikuti mumachotsa autofiler m'bokosilo, pongoyiyika. Ngati titenga Repmgr kuyerekeza, ndiye kuti fayiloyo ikuphatikizidwa pamenepo. Ndi Repmgr, timapeza switchover, koma ngati tikufuna autofiler, ndiye kuti tifunika kuyikonzanso. Patroni ali kale ndi autofiler kunja kwa bokosi.
  • Ndipo pali zinthu zina zambiri. Mwachitsanzo, kukonza masinthidwe, kuthira ma replicas atsopano, zosunga zobwezeretsera, ndi zina zambiri. Koma izi ndizopitilira lipotilo, sindilankhula za izi.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo chotsatira chaching'ono ndi chakuti ntchito yaikulu ya Patroni ndikuchita autofile bwino komanso modalirika kuti gulu lathu likhalebe likugwira ntchito ndipo kugwiritsa ntchito sikuzindikira kusintha kwa masango a topology.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Koma tikayamba kugwiritsa ntchito Patroni, dongosolo lathu limakhala lovuta kwambiri. Ngati kale tinali ndi Postgres, ndiye tikamagwiritsa ntchito Patroni timapeza Patroni mwiniwake, timapeza DCS kumene dziko limasungidwa. Ndipo zonse ziyenera kugwira ntchito mwanjira ina. Ndiye chikhoza kulakwika ndi chiyani?

Kutha kutha:

  • Ma postgres akhoza kusweka. Itha kukhala mbuye kapena chofananira, chimodzi mwazo chikhoza kulephera.
  • Patroni mwiniyo akhoza kusweka.
  • DCS kumene boma likusungidwa likhoza kusweka.
  • Ndipo network imatha kusweka.

Mfundo zonsezi ndizikambirana mu lipoti.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndidzalingalira milandu pamene ikukhala yovuta kwambiri, osati kuchokera pakuwona kuti mlanduwu umaphatikizapo zigawo zambiri. Ndipo kuchokera pamalingaliro amalingaliro omvera, kuti mlanduwu unali wovuta kwa ine, zinali zovuta kuzigawa ... ndipo mosemphanitsa, zina zinali zopepuka ndipo zinali zosavuta kuzigawa.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo mlandu woyamba ndi wophweka. Umu ndi momwe tidatenga gulu la database ndikuyika zosungira zathu za DCS pagulu lomwelo. Ichi ndiye cholakwika chofala kwambiri. Izi ndizolakwika pakumanga zomangamanga, mwachitsanzo, kuphatikiza zigawo zosiyanasiyana pamalo amodzi.

Kotero, panali filer, tiyeni tipite kuti tithane ndi zomwe zinachitika.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo apa ife tiri ndi chidwi pamene filer zinachitika. Ndiko kuti, tili ndi chidwi ndi nthawi ino panthawi yomwe gulu lamagulu linasintha.

Koma fayilo sinthawi zonse nthawi yomweyo, mwachitsanzo, sizitenga nthawi, imatha kuchedwa. Zitha kukhala nthawi yayitali.

Choncho, ili ndi nthawi yoyambira ndi nthawi yotsiriza, mwachitsanzo, ndizochitika mosalekeza. Ndipo timagawaniza zochitika zonse m'zigawo zitatu: tili ndi nthawi pamaso pa fayilo, panthawi ya fayilo komanso pambuyo pa fayilo. Ndiko kuti, timaganizira zochitika zonse mu ndondomeko ya nthawi ino.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo chinthu choyamba, pamene filer inachitika, timayang'ana chifukwa cha zomwe zinachitika, chomwe chinali chifukwa cha zomwe zinayambitsa filer.

Ngati tiyang'ana pa zipika, zidzakhala zakale za Patroni. Amatiuza mwa iwo kuti seva yakhala mbuye, ndipo udindo wa mbuye wadutsa ku mfundo iyi. Apa zawunikiridwa.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Kenako, tiyenera kumvetsetsa chifukwa chake fayiloyo idachitika, mwachitsanzo, zomwe zidachitika zomwe zidapangitsa kuti gawo lalikulu lisunthike kuchokera ku mfundo imodzi kupita ku ina. Ndipo mu nkhani iyi, chirichonse chiri chophweka. Tili ndi vuto polumikizana ndi makina osungira. Mbuyeyo adazindikira kuti sangathe kugwira ntchito ndi DCS, ndiko kuti, panali vuto linalake ndi kuyanjana. Ndipo akunena kuti sangakhalenso bwana ndikusiya ntchito. Mzere uwu "wodzichepetsera" ukunena zomwezo.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ngati tiyang'ana pa zochitika zomwe zisanachitike fayiloyo, tikhoza kuona apo zifukwa zomwe zinali zovuta kupitiriza kwa wizard.

Ngati tiyang'ana pa zipika za Patroni, tidzawona kuti tili ndi zolakwika zambiri, nthawi, mwachitsanzo, wothandizira Patroni sangathe kugwira ntchito ndi DCS. Pankhaniyi, ndi Consul wothandizira, amene kulankhulana pa doko 8500.

Ndipo vuto apa ndikuti Patroni ndi nkhokwe zikuyenda pa omwewo. Ndipo ma seva a Consul adakhazikitsidwa pamalo omwewo. Popanga katundu pa seva, tidapanganso zovuta kwa ma seva a Consul. Sanathe kuyankhulana bwino.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Patapita nthaΕ΅i, pamene katunduyo anachepa, Patroni wathu anatha kulankhulanso ndi nthumwi. Ntchito wamba inayambiranso. Ndipo seva yomweyo ya Pgdb-2 idakhalanso mbuye. Ndiko kuti, panali flip yaing'ono, chifukwa chomwe mfundoyo inasiya mphamvu za mbuyeyo, ndiyeno inawatenganso, ndiko kuti, chirichonse chinabwerera monga momwe zinaliri.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo izi zikhoza kuonedwa ngati chenjezo labodza, kapena tinganene kuti Patroni anachita zonse bwino. Ndiko kuti, adazindikira kuti sangasunge chikhalidwe cha tsango ndikuchotsa ulamuliro wake.

Ndipo apa vuto linayamba chifukwa chakuti ma seva a Consul ali pa hardware yomweyo monga maziko. Chifukwa chake, katundu uliwonse: kaya ndi katundu pa disks kapena mapurosesa, zimakhudzanso kuyanjana ndi gulu la Consul.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo tinaganiza kuti sayenera kukhala pamodzi, ife allocation osiyana tsango kwa Consul. Ndipo Patroni anali akugwira ntchito kale ndi Consul wosiyana, ndiko kuti, panali gulu lapadera la Postgres, gulu lapadera la Consul. Ichi ndi chilangizo choyambirira cha momwe munganyamulire ndi kusunga zinthu zonsezi kuti zisakhale pamodzi.

Monga njira, mutha kupotoza magawo ttl, loop_wait, retry_timeout, mwachitsanzo, yesani kupulumuka nsonga zazifupi zazifupizi powonjezera magawowa. Koma iyi si njira yabwino kwambiri, chifukwa katunduyu akhoza kukhala nthawi yayitali. Ndipo tidzangodutsa malire awa a magawo awa. Ndipo zimenezo sizingathandize kwenikweni.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Vuto loyamba, monga mukumvetsetsa, ndi losavuta. Tinatenga ndikuyika ma DCS pamodzi ndi maziko, tinali ndi vuto.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Vuto lachiwiri ndi lofanana ndi loyamba. Zilinso chimodzimodzi chifukwa tilinso ndi mavuto osagwirizana ndi dongosolo la DCS.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ngati tiyang'ana pa zipika, tidzawona kuti tilinso ndi vuto lolankhulana. Ndipo Patroni akuti sindingathe kuyanjana ndi DCS kotero mbuye wapano amalowa mumayendedwe ofananira.

Mbuye wakale amakhala chithunzithunzi, apa Patroni akugwira ntchito, monga momwe ziyenera kukhalira. Imayendetsa pg_rewind kubweza chipikacho ndikulumikizana ndi mbuye watsopanoyo kuti agwirizane ndi mbuye watsopanoyo. Apa Patroni akugwira ntchito, monga momwe ayenera.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Apa tiyenera kupeza malo omwe adatsogolera fayiloyo, mwachitsanzo, zolakwika zomwe zidatipangitsa kukhala ndi fayilo. Ndipo pankhaniyi, zipika za Patroni ndizosavuta kugwiritsa ntchito. Amalemba mauthenga omwewo panthawi inayake. Ndipo ngati titayamba kuyendayenda m'zipikazi mwamsanga, ndiye kuti tidzawona kuchokera ku zipika zomwe zipika zasintha, zomwe zikutanthauza kuti mavuto ena ayamba. Tibwereranso kumalo ano, tiwone zomwe zikuchitika.

Ndipo muzochitika zachilendo, zipika zimawoneka ngati izi. Mwini loko wafufuzidwa. Ndipo ngati mwiniwake, mwachitsanzo, asintha, ndiye kuti zochitika zina zikhoza kuchitika zomwe Patroni ayenera kuyankha. Koma mu nkhani iyi, ife tiri bwino. Tikuyang'ana pomwe zolakwika zidayambira.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo titayenda mpaka pomwe zolakwika zidayamba kuwonekera, tikuwona kuti takhala ndi auto-fileover. Ndipo popeza zolakwa zathu zinali zokhudzana ndi kuyanjana ndi DCS ndipo ife tinagwiritsa ntchito Consul, timayang'ananso zolemba za Consul, zomwe zinachitika kumeneko.

Poyerekeza nthawi ya fayilo ndi nthawi mu zolemba za Consul, tikuwona kuti oyandikana nawo mu gulu la Consul anayamba kukayikira kukhalapo kwa mamembala ena a Consul cluster.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo ngati muyang'ananso zipika za othandizira ena a Consul, mutha kuwonanso kuti kugwa kwamtundu wina kukuchitika pamenepo. Ndipo mamembala onse a Consul cluster amakayikira kukhalapo kwa wina ndi mnzake. Ndipo ichi chinali chilimbikitso kwa filer.

Mukayang'ana zomwe zidachitika izi zisanachitike, mutha kuwona kuti pali zolakwa zamitundu yonse, mwachitsanzo, tsiku lomaliza, RPC idagwa, ndiye kuti, pali vuto linalake pakulumikizana kwamagulu a Consul cluster wina ndi mnzake. .

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Yankho losavuta ndikukonza maukonde. Koma kwa ine, kuyimirira pa podium, ndikosavuta kunena izi. Koma zinthu zili choncho moti nthawi zonse kasitomala angakwanitse kukonza maukonde. Akhoza kukhala mu DC ndipo sangathe kukonza maukonde, amakhudza zida. Choncho njira zina zofunika.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Pali zosankha:

  • Njira yosavuta, yomwe yalembedwa, m'malingaliro anga, ngakhale muzolemba, ndikuletsa macheke a Consul, ndiko kuti, kungodutsa zopanda kanthu. Ndipo timauza Consul kuti asagwiritse ntchito macheke. Ndi macheke awa, titha kunyalanyaza mvula yamkuntho iyi komanso osayambitsa fayilo.
  • Njira ina ndikuwunika kawiri raft_multiplier. Ichi ndi gawo la seva ya Consul palokha. Mwachikhazikitso, imayikidwa ku 5. Mtengo uwu umalimbikitsidwa ndi zolemba za malo owonetsera. M'malo mwake, izi zimakhudza kuchuluka kwa mauthenga pakati pa mamembala a Consul network. M'malo mwake, chizindikiro ichi chimakhudza liwiro la kulumikizana kwautumiki pakati pa mamembala a gulu la Consul. Ndipo kuti apange, akulimbikitsidwa kale kuti achepetse kuti ma node asinthe mauthenga nthawi zambiri.
  • Njira ina yomwe tapanga ndikuwonjezera kufunikira kwa njira za Consul pakati pa njira zina zogwirira ntchito. Pali "zabwino" parameter, zimangowonetsa zofunikira za ndondomeko zomwe zimaganiziridwa ndi OS scheduler pokonzekera. Tachepetsanso mtengo wabwino wa ma Consul agents, mwachitsanzo. adawonjezera patsogolo kuti makina ogwiritsira ntchito apatse njira za Consul nthawi yochulukirapo yogwira ntchito ndikuchita ma code awo. Kwa ife, izi zinathetsa vuto lathu.
  • Njira ina sikugwiritsa ntchito Consul. Ndili ndi mnzanga yemwe amandithandizira kwambiri Etcd. Ndipo nthawi zonse timatsutsana naye kuti ndibwino Etcd kapena Consul. Koma ponena za zomwe zili bwino, nthawi zambiri timavomereza kuti Consul ali ndi wothandizira yemwe amayenera kugwira ntchito pa mfundo iliyonse yokhala ndi database. Ndiko kuti, kuyanjana kwa Patroni ndi gulu la Consul kumadutsa mwa wothandizira uyu. Ndipo wothandizira uyu amakhala wolepheretsa. Ngati chinachake chichitika kwa wothandizira, ndiye kuti Patroni sangathenso kugwira ntchito ndi gulu la Consul. Ndipo ili ndilo vuto. Palibe wothandizira mu dongosolo la Etcd. Patroni amatha kugwira ntchito mwachindunji ndi mndandanda wa ma seva a Etcd ndikulankhula nawo kale. Pachifukwa ichi, ngati mugwiritsa ntchito Etcd pakampani yanu, ndiye kuti Etcd ingakhale chisankho chabwinoko kuposa Consul. Koma ife kwa makasitomala athu nthawi zonse timakhala ochepa ndi zomwe kasitomala wasankha ndikugwiritsa ntchito. Ndipo tili ndi Consul makamaka kwa makasitomala onse.
  • Ndipo mfundo yomaliza ndikuwunikanso ma parameter. Tikhoza kukweza magawowa ndikuyembekeza kuti mavuto athu a nthawi yayitali afupikitsa adzakhala ochepa ndipo sangagwere kunja kwa magawowa. Mwanjira iyi titha kuchepetsa kukwiya kwa Patroni kuti azitha kujambula ngati mavuto ena amtaneti achitika.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndikuganiza kuti ambiri omwe amagwiritsa ntchito Patroni amadziwa bwino lamuloli.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Lamuloli likuwonetsa momwe gululi lilili. Ndipo poyang'ana koyamba, chithunzichi chikhoza kuwoneka ngati chachilendo. Tili ndi ambuye, tili ndi chofananira, palibe kubwerezabwereza. Koma chithunzichi ndi chachilendo mpaka titadziwa kuti gululi liyenera kukhala ndi mfundo zitatu, osati ziwiri.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Chifukwa chake, panali autofile. Ndipo pambuyo pa autofile iyi, choyimira chathu chinasowa. Tiyenera kudziwa chifukwa chake adasowa ndikumubweretsanso, kumubwezeretsa. Ndipo timapitanso ku zipika ndikuwona chifukwa chake tinali ndi auto-fileover.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Pankhaniyi, chofanizira chachiwiri chinakhala mbuye. Zonse ziri bwino apa.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo tiyenera kuyang'ana chofanizira chomwe chinagwa ndipo chomwe sichili m'gulu. Timatsegula zipika za Patroni ndikuwona kuti tinali ndi vuto panthawi yolumikizana ndi gululo pa pg_rewind siteji. Kuti mulumikizane ndi gululo, muyenera kubwezera chipikacho, pemphani chipika chofunikira chochokera kwa mbuye, ndikuchigwiritsa ntchito kuti mugwirizane ndi mbuyeyo.

Pamenepa, tilibe chipika chogulitsira ndipo chofananacho sichingayambe. Chifukwa chake, timayimitsa Postgres ndi cholakwika. Ndipo kotero izo siziri mu tsango.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Tiyenera kumvetsetsa chifukwa chake sichili mgululi komanso chifukwa chake panalibe zipika. Timapita kwa mbuye watsopano ndikuyang'ana zomwe ali nazo muzitsulo. Zinapezeka kuti pg_rewind itachitika, cheke chinachitika. Ndipo zolemba zina zakale zamalonda zidangosinthidwanso. Pamene mbuye wakale adayesa kulumikizana ndi mbuye watsopano ndikufunsa zipika izi, zidasinthidwa kale, kulibe.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndidayerekeza masitampu anthawi yomwe izi zidachitika. Ndipo pamenepo kusiyana kuli kwenikweni 150 milliseconds, ndiko kuti, cheke chomalizidwa mu 369 milliseconds, magawo a WAL adasinthidwanso. Ndipo kwenikweni mu 517, pambuyo pa ma milliseconds 150, kubwereranso kunayamba pa chojambula chakale. Ndiye kuti, ma milliseconds enieni 150 anali okwanira kwa ife kotero kuti chofananacho sichinathe kulumikizana ndikupeza ndalama.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Kodi mungachite chiyani?

Poyamba tidagwiritsa ntchito mipata yobwerezabwereza. Tinkaganiza kuti zinali zabwino. Ngakhale pa gawo loyamba la ntchito tinazimitsa mipata. Zikuwoneka kwa ife kuti ngati mipata ipeza magawo ambiri a WAL, titha kusiya mbuye. Iye adzagwa. Tinavutika kwa nthawi ndithu popanda mipata. Ndipo tidazindikira kuti tikufuna mipata, tidabweza mipata.

Koma pali vuto pano, kuti mbuyeyo akapita ku chithunzicho, amachotsa mipata ndikuchotsa magawo a WAL pamodzi ndi mipata. Ndipo kuti tithetse vutoli, tinaganiza zokweza wal_keep_segments parameter. Imasinthidwa kukhala magawo 8. Tinakweza mpaka 1 ndikuwona kuchuluka kwa malo omwe tinali nawo. Ndipo tidapereka magigabytes 000 a wal_keep_segments. Ndiko kuti, posintha, nthawi zonse timakhala ndi nkhokwe ya 16 gigabytes ya zipika zogulitsira pama node onse.

Ndipo kuphatikiza - ndizofunikabe pantchito zokonza nthawi yayitali. Tiyerekeze kuti tikufunika kusintha imodzi mwazofananira. Ndipo tikufuna kuzimitsa. Tiyenera kusintha mapulogalamu, mwina opareshoni, chinachake. Ndipo tikathimitsa chofananira, malo ofananirako amachotsedwanso. Ndipo ngati tigwiritsa ntchito ang'onoang'ono wal_keep_segments, ndiye kuti popanda nthawi yayitali yofananira, zipika zamalonda zidzatayika. Tidzakweza chofanizira, chidzapempha zipika zomwe zidayima, koma mwina sangakhale pa master. Ndipo chofananiracho sichingathe kulumikizananso. Choncho, timasunga magazini ambiri.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Tili ndi maziko opanga. Pali kale mapulojekiti omwe akuchitika.

Panali fayilo. Tinalowa ndikuyang'ana - zonse zili m'dongosolo, zofananira zili m'malo, palibe kubwerezabwereza. Palibe zolakwika mu zipika mwina, zonse zili mu dongosolo.

Gulu lazogulitsa likunena kuti payenera kukhala deta, koma timaziwona kuchokera ku gwero limodzi, koma sitiziwona mu database. Ndipo tiyenera kumvetsa zimene zinawachitikira.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Zikuwonekeratu kuti pg_rewind adawaphonya. Nthawi yomweyo tinamvetsetsa izi, koma tinapita kukawona zomwe zikuchitika.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Mu zipika, titha kupeza nthawi zonse pamene filer inachitika, amene anakhala mbuye, ndipo tikhoza kudziwa amene anali mbuye wakale ndi pamene iye ankafuna kukhala chofanizira, i.e. tiyenera zipika izi kuti tipeze kuchuluka kwa zipika malonda kuti anali atatayika.

Mbuye wathu wakale wayambiranso. Ndipo Patroni anawerengedwa mu autorun. Adayambitsa Patroni. Kenako anayamba Postgres. Momwemonso, musanayambe Postgres komanso musanapange chofanizira, Patroni adayambitsa njira ya pg_rewind. Chifukwa chake, adafufuta mbali ya zipika zamalonda, adatsitsa zatsopano ndikulumikiza. Apa Patroni anagwira ntchito mwanzeru, ndiko kuti, monga momwe amayembekezera. Tsango labwezeretsedwa. Tinali ndi mfundo zitatu, pambuyo pa filer 3 nodes - chirichonse chiri chozizira.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Tataya zina. Ndipo tiyenera kumvetsetsa kuti tataya zochuluka bwanji. Tikuyang'ana nthawi yokhayo yomwe tinali ndi kubwereranso. Tikhoza kuzipeza m'mabuku otere. Kubwereranso kunayamba, kuchitapo kanthu pamenepo ndikutha.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Tiyenera kupeza malo mu chipika chogulitsira pomwe mbuye wakale adasiya. Pankhaniyi, ichi ndi chizindikiro. Ndipo timafunikira chizindikiro chachiΕ΅iri, ndiko kuti, mtunda umene mbuye wakale amasiyana nawo watsopano.

Timatenga pg_wal_lsn_diff mwachizolowezi ndikufanizira zizindikiro ziwirizi. Ndipo mu nkhani iyi, timapeza 17 megabytes. Zambiri kapena pang'ono, aliyense amasankha yekha. Chifukwa kwa munthu 17 megabytes sizochuluka, kwa wina ndizochuluka komanso zosavomerezeka. Apa, munthu aliyense amadzisankhira yekha malinga ndi zosowa za bizinesiyo.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Koma kodi tadzipezera tokha chiyani?

Choyamba, tiyenera kusankha tokha - kodi timafunikira Patroni nthawi zonse kuti ayambenso kuyambiranso dongosolo? Nthawi zambiri zimachitika kuti tiyenera kupita kwa mbuye wakale, tiwone momwe wapitira. Mwina yang'anani zigawo za chipika chamalonda, onani zomwe zilipo. Ndipo kuti timvetse ngati tingathe kutaya deta iyi kapena tiyenera kuyendetsa mbuye wakale mumayendedwe oima kuti titulutse detayi.

Ndipo pokhapokha titatha kusankha ngati tingathe kutaya deta iyi kapena tikhoza kuibwezeretsa, gwirizanitsani mfundoyi ngati chofanana ndi gulu lathu.

Kuphatikiza apo, pali gawo la "maximum_lag_on_failover". Mwachikhazikitso, ngati kukumbukira kwanga kumanditumikira, parameter iyi ili ndi mtengo wa 1 megabyte.

Kodi amagwira ntchito bwanji? Ngati chofananira chathu chili kumbuyo ndi 1 megabyte ya data mu kubwereza, ndiye chofananirachi sichitenga nawo gawo pachisankho. Ndipo ngati mwadzidzidzi pakhala kusintha kwa fayilo, Patroni amayang'ana zomwe zofananira zikutsalira kumbuyo. Ngati ali m'mbuyo mwa kuchuluka kwa zipika zamalonda, sangakhale mbuye. Izi ndi zabwino kwambiri chitetezo Mbali kuti amakulepheretsani kutaya zambiri deta.

Koma pali vuto kuti kubwerezabwereza kwa gulu la Patroni ndi DCS kumasinthidwa pakapita nthawi. Ndikuganiza kuti masekondi 30 ndiye ttl yokhazikika.

Chifukwa chake, pakhoza kukhala nthawi yomwe pali chotsalira chimodzi chobwerezabwereza mu DCS, koma kwenikweni pakhoza kukhala chotsalira chosiyana kapena sipangakhale kutsalira konse, i.e. chinthu ichi si nthawi yeniyeni. Ndipo sikuti nthawi zonse zimawonetsa chithunzi chenicheni. Ndipo sikoyenera kuchita zolingalira zapamwamba pa izo.

Ndipo chiwopsezo cha kutayika chimakhalabe nthawi zonse. Ndipo pazovuta kwambiri, njira imodzi, ndipo nthawi zambiri, njira ina. Ndiko kuti, pamene tikukonzekera kukhazikitsidwa kwa Patroni ndikuyesa kuchuluka kwa deta yomwe tingathe kutaya, tiyenera kudalira mafomuwa ndikulingalira momwe tingatayire deta.

Ndipo pali uthenga wabwino. Pamene mbuye wakale wapita patsogolo, akhoza kupita patsogolo chifukwa cha njira zina zakumbuyo. Ndiko kuti, panali mtundu wina wa autovacuum, iye analemba deta, kuwapulumutsa ku chipika cha malonda. Ndipo tikhoza kunyalanyaza mosavuta ndi kutaya deta iyi. Palibe vuto mu izi.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo umu ndi momwe zipika zimawonekera ngati maximum_lag_on_failover yakhazikitsidwa ndipo fayilo yachitika, ndipo muyenera kusankha mbuye watsopano. Ofananawo amadziyesa okha kuti sangathe kutenga nawo mbali pachisankho. Ndipo amakana kutenga nawo mbali pa mpikisano wofuna kukhala mtsogoleri. Ndipo amayembekezera mbuye watsopano kuti asankhidwe, kuti athe kulumikizana nawo. Izi ndi zina muyeso motsutsana imfa deta.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Pano tili ndi gulu lazinthu zomwe zidalemba kuti malonda awo ali ndi vuto ndi Postgres. Panthawi imodzimodziyo, mbuye mwiniyo sangathe kupezeka, chifukwa sichipezeka kudzera pa SSH. Ndipo autofile sizichitikanso.

Wolandira uyu adakakamizika kuyambiranso. Chifukwa cha kuyambiransoko, fayilo yodziyimira yokha idachitika, ngakhale zinali zotheka kupanga fayilo yamanja, monga ndikumvetsetsa tsopano. Ndipo titayambiranso, tiwona kale zomwe tinali nazo ndi mbuye wapano.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Panthawi imodzimodziyo, tinadziwiratu kuti tinali ndi mavuto ndi ma disks, ndiko kuti, tinkadziwa kale poyang'anira komwe tingakumba komanso zomwe tingayang'ane.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Tinalowa mu chipika cha postgres, tinayamba kuona zomwe zikuchitika kumeneko. Tidawona kuchita komaliza pamenepo kwa masekondi amodzi, awiri, atatu, zomwe sizabwino konse. Tidawona kuti autovacuum yathu imayamba pang'onopang'ono komanso modabwitsa. Ndipo tidawona mafayilo osakhalitsa pa disk. Ndiko kuti, zonsezi ndi zizindikiro za mavuto ndi disks.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Tidayang'ana mu system dmesg (kernel log). Ndipo tidawona kuti tili ndi vuto ndi imodzi mwama disks. Ma disk subsystem anali Raid software. Tinayang'ana pa /proc/mdstat ndikuwona kuti tikusowa galimoto imodzi. Ndiko kuti, pali Raid of 8 disks, tikusowa imodzi. Ngati muyang'ana mosamala pa slide, ndiye muzotulutsa mungathe kuona kuti tilibe sde pamenepo. Kwa ife, kunena mokhazikika, diski yatha. Izi zinayambitsa mavuto a disk, ndipo mapulogalamu adakumananso ndi mavuto pogwira ntchito ndi gulu la Postgres.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo pankhaniyi, Patroni sakanatithandiza mwanjira iliyonse, chifukwa Patroni alibe ntchito yoyang'anira seva, mkhalidwe wa diski. Ndipo tiyenera kuyang'anira zochitika zoterezi ndi kuyang'anira kunja. Tidawonjezera mwachangu kuwunika kwa disk pakuwunika kwakunja.

Ndipo panali lingaliro lotere - kodi mpanda kapena pulogalamu yoyang'anira ingatithandizire? Tinkaganiza kuti sakanatithandiza pa nkhaniyi, chifukwa panthawi ya mavuto Patroni anapitiriza kugwirizana ndi gulu la DCS ndipo sanaone vuto lililonse. Ndiko kuti, kuchokera pakuwona kwa DCS ndi Patroni, zonse zinali bwino ndi masango, ngakhale kuti panali mavuto ndi disk, panali mavuto ndi kupezeka kwa database.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Malingaliro anga, iyi ndi imodzi mwazovuta kwambiri zomwe ndafufuza kwa nthawi yayitali kwambiri, ndawerenga zipika zambiri, ndikuzitenganso ndikuzitcha kuti masango simulator.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Vuto linali lakuti mbuye wakaleyo sakanatha kukhala wofanana, mwachitsanzo, Patroni adayambitsa, Patroni adawonetsa kuti mfundoyi inalipo ngati chithunzithunzi, koma nthawi yomweyo sichinali chofanana. Tsopano muwona chifukwa chake. Izi ndi zomwe ndasunga pakuwunika vutolo.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Nanga zonsezi zinayamba bwanji? Zinayamba, monga momwe zinalili kale, ndi mabuleki a disc. Tinali ndi mabizinesi kwa sekondi, ziwiri.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Panali zosweka polumikizana, mwachitsanzo, makasitomala adang'ambika.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Panali ma blockages azovuta zosiyanasiyana.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo, motero, gawo la disk silimayankha kwambiri.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo chinthu chodabwitsa kwambiri kwa ine ndi pempho lotsekera lomwe lidafika. Postgres ili ndi njira zitatu zotsekera:

  • Ndi zachisomo tikamadikirira makasitomala onse kuti azidula okha.
  • Pali kufulumira tikamakakamiza makasitomala kuti asalumikizane chifukwa titseka.
  • Ndipo nthawi yomweyo. Pankhaniyi, nthawi yomweyo samauza makasitomala kuti atseke, amangotseka popanda chenjezo. Ndipo kwa makasitomala onse, makina ogwiritsira ntchito amatumiza kale uthenga wa RST (uthenga wa TCP kuti kugwirizanako kwasokonezedwa ndipo kasitomala alibe china chogwira).

Ndani adatumiza chizindikiro ichi? Njira zakumbuyo za Postgres sizitumiza zizindikiro kwa wina ndi mzake, mwachitsanzo, izi ndikupha-9. Satumizirana zinthu zoterezi, amangochita zinthu ngati izi, mwachitsanzo, uku ndikuyambiranso mwadzidzidzi kwa Postgres. Ndani adatumiza, sindikudziwa.

Ndinayang'ana pa lamulo "lotsiriza" ndipo ndinawona munthu m'modzi yemwe adalowa nafe pa seva iyi, koma ndinali wamanyazi kuti ndifunse funso. Mwina inali kupha -9. Ndikawona kupha -9 mumitengo, chifukwa Postgres akuti idapha -9, koma sindinayiwone m'zipika.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Kuyang'ananso, ndinawona kuti Patroni sanalembe kwa chipika kwa nthawi yayitali - masekondi 54. Ndipo tikayerekeza masitampu awiri, panalibe mauthenga pafupifupi masekondi 54.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo panthawiyi panali autofile. Patroni adachitanso ntchito yabwino pano. Mbuye wathu wakale sanapezeke, china chake chinachitika kwa iye. Ndipo chisankho cha mbuye watsopano chinayamba. Zonse zidayenda bwino kuno. Pgsql01 yathu yakhala mtsogoleri watsopano.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Tili ndi chofanizira chomwe chakhala master. Ndipo pali yankho lachiwiri. Ndipo panali zovuta ndi chofanizira chachiwiri. Anayesa kukonzanso. Monga ndikumvetsetsa, adayesa kusintha recovery.conf, kuyambitsanso Postgres ndikugwirizanitsa ndi mbuye watsopano. Amalemba mauthenga masekondi 10 aliwonse omwe akuyesera, koma sakupambana.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo pakuyesera uku, chizindikiro chozimitsa nthawi yomweyo chimafika kwa mbuye wakale. Mbuyeyo ayambiranso. Komanso kuchira kumasiya chifukwa mbuye wakale amayambiranso. Ndiye kuti, chofananacho sichingalumikizane nacho, chifukwa chili munjira yotseka.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Panthawi ina, zinagwira ntchito, koma kubwereza sikunayambe.

Ndikungolingalira kwanga ndikuti panali adilesi yakale yakale mu recovery.conf. Ndipo pamene mbuye watsopano adawonekera, chofanizira chachiwiri chinayeserabe kugwirizanitsa ndi mbuye wakale.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Pamene Patroni adayamba kufananiza chachiwiri, mfundo idayamba koma sanathe kubwereza. Ndipo kubwerezabwereza kunapangidwa, komwe kunkawoneka ngati chonchi. Ndiko kuti, mfundo zonse zitatu zinali m'malo, koma mfundo yachiwiri inatsalira kumbuyo.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Nthawi yomweyo, mukayang'ana zipika zomwe zidalembedwa, mutha kuwona kuti kubwereza sikungayambe chifukwa zipika zamalonda zinali zosiyana. Ndipo zipika zomwe mbuyeyo amapereka, zomwe zafotokozedwa mu recovery.conf, sizikugwirizana ndi mfundo zathu zamakono.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo apa ndinalakwitsa. Ndinayenera kubwera kudzawona zomwe zinali mu recovery.conf kuti ndiyesere malingaliro anga oti tikulumikizana ndi mbuye wolakwika. Koma ndiye ndimangothana ndi izi ndipo sizinandichitikire, kapena ndidawona kuti chofananiracho chidatsalira m'mbuyo ndipo chimayenera kuwonjezeredwa, ndiko kuti, ndidagwira ntchito mosasamala. Ichi chinali cholumikizira changa.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Pambuyo pa mphindi 30, admin adabwera kale, mwachitsanzo, ndidayambitsanso Patroni pachifanizirocho. Ndinazithetsa kale, ndimaganiza kuti ziyenera kudzazidwanso. Ndipo ndimaganiza - ndiyambitsanso Patroni, mwina china chake chabwino chitha kuchitika. Kuchira kunayamba. Ndipo mazikowo adatsegulidwa, anali okonzeka kuvomereza kulumikizana.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Kubwereza kwayamba. Koma patangopita mphindi imodzi, adakumana ndi vuto loti zipika zamalonda sizili zoyenera kwa iye.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndinaganiza kuti ndiyambiranso. Ndinayambiranso Patroni kachiwiri, ndipo sindinayambenso Postgres, koma ndinayambitsanso Patroni ndikuyembekeza kuti idzayambitsanso database.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Kubwereza kunayambanso, koma zizindikiro zomwe zili mu chipika chogulitsira zinali zosiyana, sizinali zofanana ndi kuyesa koyambirira. Kubwereza kunayimanso. Ndipo uthenga unali kale wosiyana pang'ono. Ndipo sizinali zambiri kwa ine.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndiyeno zimandichitikira - bwanji ngati ndiyambitsanso Postgres, panthawiyi ndimapanga checkpoint pa mbuye wamakono kuti ndisunthire mfundo mu chipika chogulitsira patsogolo pang'ono kuti kuchira kuyambike kuchokera mphindi ina? Kuphatikiza apo, tinali ndi masheya a WAL.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndidayambitsanso Patroni, ndidayang'ana masitepe angapo pa mbuye, malo angapo oyambiranso pachifanizirocho chikatsegulidwa. Ndipo zinathandiza. Ndinaganiza kwa nthawi yayitali chifukwa chake zidathandizira komanso momwe zimagwirira ntchito. Ndipo chofanizira chinayamba. Ndipo kubwereza sikunang'ambikanso.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Vuto loterolo kwa ine ndi limodzi mwazinthu zosamvetsetseka, zomwe ndimadabwitsidwabe pazomwe zidachitika kumeneko.

Zotsatira zake ndi zotani apa? Patroni amatha kugwira ntchito monga momwe amafunira komanso popanda zolakwika zilizonse. Koma nthawi yomweyo, izi sizitsimikizo 100% kuti zonse zili bwino ndi ife. Chofananacho chikhoza kuyamba, koma chikhoza kukhala chogwira ntchito pang'onopang'ono, ndipo kugwiritsa ntchito sikungagwire ntchito ndi chofananacho, chifukwa padzakhala deta yakale.

Ndipo pambuyo pa fayilo, nthawi zonse muyenera kuyang'ana kuti zonse zikuyenda bwino ndi gululo, ndiye kuti, pali nambala yofunikira ya zolemba, palibe kubwerezabwereza.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Ndipo pamene tikudutsa nkhanizi, ndipanga malingaliro. Ndinayesa kuwaphatikiza kukhala zithunzi ziwiri. Mwinamwake, nkhani zonse zikhoza kuphatikizidwa kukhala zithunzi ziwiri ndikungonena.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Mukamagwiritsa ntchito Patroni, muyenera kuyang'anira. Muyenera kudziwa nthawi zonse pamene autofileover inachitika, chifukwa ngati simukudziwa kuti muli ndi autofileover, mulibe ulamuliro pa gululo. Ndipo izo ndi zoipa.

Pambuyo pa fayilo iliyonse, nthawi zonse tiyenera kuyang'ana gululo. Tiyenera kuonetsetsa kuti nthawi zonse timakhala ndi chiwerengero chamakono, palibe kubwerezabwereza, palibe zolakwika m'mabuku okhudzana ndi kubwerezabwereza, ndi Patroni, ndi dongosolo la DCS.

Makinawa amatha kugwira ntchito bwino, Patroni ndi chida chabwino kwambiri. Itha kugwira ntchito, koma izi sizingabweretse gululo kumalo omwe mukufuna. Ndipo ngati sitidziwa, tidzakhala m’mavuto.

Ndipo Patroni si chipolopolo chasiliva. Tikufunikabe kumvetsetsa momwe Postgres imagwirira ntchito, momwe kubwereza kumagwirira ntchito komanso momwe Patroni amagwirira ntchito ndi Postgres, komanso momwe kulumikizana pakati pa node kumaperekedwa. Izi ndizofunikira kuti muthe kukonza mavuto ndi manja anu.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Kodi ndingatani ndi nkhani ya matenda? Zidachitika kuti timagwira ntchito ndi makasitomala osiyanasiyana ndipo palibe amene ali ndi stack ya ELK, ndipo tiyenera kukonza zipikazo potsegula ma consoles 6 ndi ma tabo a 2. Mu tabu imodzi, awa ndi zipika za Patroni pa node iliyonse, mu tabu ina, awa ndi zipika za Consul, kapena Postgres ngati kuli kofunikira. Ndizovuta kwambiri kuzindikira izi.

Kodi ndapanga njira ziti? Choyamba, ndimayang'ana nthawi zonse pamene fayilo yafika. Ndipo kwa ine ichi ndi mtsinje wamadzi. Ndimayang'ana zomwe zinachitika pamaso pa filer, panthawi ya fayilo komanso pambuyo pa fayilo. Fayiloyo ili ndi zizindikiro ziwiri: iyi ndi nthawi yoyambira ndi yomaliza.

Chotsatira, ndimayang'ana m'zipika za zochitika pamaso pa fayilo, yomwe inatsogolera fayilo, mwachitsanzo, ndikuyang'ana zifukwa zomwe fayiloyo inachitika.

Ndipo izi zimapereka chithunzi cha kumvetsetsa zomwe zinachitika ndi zomwe zingachitike m'tsogolo kuti zinthu zoterezi zisachitike (ndipo chifukwa chake palibe filer).

Ndipo kodi nthawi zambiri timayang'ana kuti? Ndikuyang'ana:

  • Choyamba, mu zolemba za Patroni.
  • Kenaka, ndimayang'ana zolemba za Postgres, kapena zolemba za DCS, malingana ndi zomwe zinapezeka mu zolemba za Patroni.
  • Ndipo zipika zamakina nthawi zina zimapereka chidziwitso cha zomwe zidayambitsa fayiloyo.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Kodi ndimamva bwanji za Patroni? Ndili ndi ubale wabwino kwambiri ndi Patroni. Malingaliro anga, izi ndizo zabwino kwambiri zomwe zilipo lero. Ndikudziwa zinthu zina zambiri. Izi ndi Stolon, Repmgr, Pg_auto_failover, PAF. 4 zida. Ndinayesa zonse. Patroni ndiye ndimakonda kwambiri.

Akandifunsa kuti: "Kodi ndikupangira Patroni?". Ndidzayankha kuti inde, chifukwa ndimakonda Patroni. Ndipo ndikuganiza kuti ndinaphunzira kuphika.

Ngati mukufuna kuwona mavuto ena omwe ali ndi Patroni kupatula mavuto omwe ndatchulawa, mutha kuyang'ana tsambalo nthawi zonse. nkhani pa GitHub. Pali nkhani zambiri zosiyanasiyana ndipo nkhani zambiri zosangalatsa zimakambidwa pamenepo. Ndipo zotsatira zake, nsikidzi zina zidayambitsidwa ndikuthetsedwa, ndiye kuti, uku ndikuwerenga kosangalatsa.

Pali nkhani zosangalatsa za anthu akudziwombera okha phazi. Zodziwitsa kwambiri. Mumawerenga ndikumvetsetsa kuti sikofunikira kutero. Ndinadzikoka ndekha.

Ndipo ndikufuna kunena zikomo kwambiri kwa Zalando popanga ntchitoyi, yomwe ndi Alexander Kukushkin ndi Alexey Klyukin. Aleksey Klyukin ndi mmodzi mwa olemba nawo, sakugwiranso ntchito ku Zalando, koma awa ndi anthu awiri omwe anayamba kugwira ntchito ndi mankhwalawa.

Ndipo ndikuganiza kuti Patroni ndi chinthu chabwino kwambiri. Ndine wokondwa kuti alipo, ndizosangalatsa naye. Ndipo zikomo kwambiri kwa onse omwe amathandizira omwe amalemba zigamba kwa Patroni. Ndikuyembekeza kuti Patroni adzakhala okhwima, ozizira komanso ogwira ntchito ndi zaka. Zakhala zikugwira ntchito kale, koma ndikuyembekeza zikhala bwino. Choncho, ngati mukufuna kugwiritsa ntchito Patroni, musachite mantha. Ili ndi yankho labwino, limatha kukhazikitsidwa ndikugwiritsidwa ntchito.

Ndizomwezo. Ngati muli ndi mafunso, funsani.

Nkhani Zolephera za Patroni kapena Momwe mungagwetsere gulu lanu la PostgreSQL. Alexey Lesovsky

Mafunso anu

Zikomo chifukwa cha lipoti! Ngati pambuyo pa filer mukufunikabe kuyang'ana pamenepo mosamala kwambiri, ndiye chifukwa chiyani timafunikira fayilo yokha?

Chifukwa ndi zinthu zatsopano. Takhala naye kwa chaka chimodzi chokha. Ndibwino kukhala otetezeka. Tikufuna kubwera ndikuwona kuti zonse zidayenda momwe ziyenera kukhalira. Uwu ndi msinkhu wa kusakhulupirirana kwa akuluakulu - ndi bwino kuyang'ana kawiri ndikuwona.

Mwachitsanzo, tinapita m'mawa ndikuyang'ana, chabwino?

Osati m'mawa, nthawi zambiri timaphunzira za autofile nthawi yomweyo. Timalandira zidziwitso, tikuwona kuti autofile yachitika. Nthawi yomweyo timapita kukayang'ana. Koma macheke onsewa ayenera kubweretsedwa pamlingo wowunikira. Ngati mupeza Patroni kudzera pa REST API, pali mbiri. Ndi mbiri mutha kuwona zowonera nthawi pomwe fayilo idachitika. Kutengera izi, kuyang'anira kutha kuchitika. Mutha kuwona mbiri yakale, kuchuluka kwa zochitika zomwe zidalipo. Ngati tili ndi zochitika zambiri, ndiye kuti autofile yachitika. Inu mukhoza kupita ndi kukawona. Kapena makina athu owunikira adawona kuti tili ndi zofananira zonse, palibe kuchedwa ndipo zonse zili bwino.

Бпасибо!

Zikomo kwambiri chifukwa cha nkhani yayikulu! Ngati tidasuntha gulu la DCS kwinakwake kutali ndi gulu la Postgres, ndiye kuti gululi likufunikanso kuthandizidwa nthawi ndi nthawi? Ndi machitidwe abwino ati omwe zidutswa zina za gulu la DCS ziyenera kuzimitsidwa, chochita nawo, ndi zina zotero? Kodi nyumba yonseyi imapulumuka bwanji? Ndipo mumachita bwanji zinthu izi?

Kwa kampani imodzi, kunali koyenera kupanga matrix a mavuto, zomwe zimachitika ngati chimodzi mwa zigawo kapena zigawo zingapo zikulephera. Malinga ndi matrix awa, timadutsa motsatizana ndi zigawo zonse ndikupanga zochitika ngati zidalephereka. Chifukwa chake, pazochitika zilizonse zolephera, mutha kukhala ndi dongosolo loti muchiritse. Ndipo pankhani ya DCS, imabwera ngati gawo lazokhazikika. Ndipo ma admin amayendetsa, ndipo timadalira kale ma admin omwe amawongolera komanso kuthekera kwawo kukonza pakagwa ngozi. Ngati palibe DCS nkomwe, ndiye kuti timayiyika, koma nthawi yomweyo sitiyiyang'anira makamaka, chifukwa sitili ndi udindo pazomangamanga, koma timapereka malingaliro a momwe tingayang'anire ndi zomwe tingayang'anire.

Ndiye kuti, kodi ndamvetsetsa bwino kuti ndikufunika kuletsa Patroni, kuletsa fayilo, kuletsa chilichonse musanachite chilichonse ndi makamu?

Zimatengera ma node angati omwe tili nawo mgulu la DCS. Ngati pali mfundo zambiri ndipo ngati tiyimitsa mfundo imodzi yokha (zojambula), ndiye kuti gululo limasunga quorum. Ndipo Patroni akugwirabe ntchito. Ndipo palibe chomwe chimayambitsa. Ngati tili ndi ntchito zina zovuta zomwe zimakhudza mfundo zambiri, kusakhalapo komwe kungawononge chiwerengerocho, ndiye - inde, zingakhale zomveka kuyika Patroni pa kupuma. Ili ndi lamulo lofananira - patronictl pause, patronictl resume. Timangoima kaye ndipo autofiler sikugwira ntchito panthawiyo. Timakonza pagulu la DCS, kenako timanyamuka ndikupitilira kukhala ndi moyo.

Zikomo kwambiri!

Zikomo kwambiri chifukwa cha lipoti lanu! Kodi gulu lazogulitsa limamva bwanji ngati deta yatayika?

Magulu azinthu samasamala, ndipo otsogolera timu ali ndi nkhawa.

Ndi zitsimikizo zotani?

Zitsimikizo ndizovuta kwambiri. Alexander Kukushkin ali ndi lipoti "Momwe mungawerengere RPO ndi RTO", i.e. nthawi yobwezeretsa komanso kuchuluka kwa deta yomwe tingathe kutaya. Ndikuganiza kuti tiyenera kupeza zithunzi izi ndikuwaphunzira. Monga ndikukumbukira, pali njira zenizeni zowerengera zinthu izi. Ndi zochitika zingati zomwe titha kutaya, kuchuluka kwa deta komwe tingataye. Monga njira, titha kugwiritsa ntchito kubwereza kofananira pamlingo wa Patroni, koma ili ndi lupanga lakuthwa konsekonse: mwina tili ndi kudalirika kwa data, kapena timataya liwiro. Pali kubwereza kofananira, koma sikutsimikiziranso chitetezo cha 100% pakutayika kwa data.

Alexey, zikomo chifukwa cha lipoti labwino! Muli ndi mwayi wogwiritsa ntchito Patroni pachitetezo cha zero? Ndiko kuti, molumikizana ndi synchronous standby? Ili ndi funso loyamba. Ndipo funso lachiwiri. Mwagwiritsa ntchito mayankho osiyanasiyana. Tidagwiritsa ntchito Repmgr, koma popanda autofiler, ndipo tsopano tikukonzekera kuphatikiza autofiler. Ndipo timawona Patroni ngati njira ina. Kodi munganene chiyani ngati zabwino poyerekeza ndi Repmgr?

Funso loyamba linali lokhudza ma synchronous replicas. Palibe amene amagwiritsa ntchito kubwereza kofananira pano, chifukwa aliyense akuchita mantha (makasitomala angapo akugwiritsa ntchito kale, kwenikweni, sanazindikire zovuta zantchito - Zolemba za speaker). Koma tadzipangira tokha lamulo loti payenera kukhala ma node osachepera atatu mumagulu obwerezabwereza, chifukwa ngati tili ndi mfundo ziwiri ndipo ngati mbuye kapena chojambula chikulephera, ndiye Patroni amasintha mfundoyi kuti ikhale ya Standalone kuti ntchitoyo ipitirire. ntchito. Pankhaniyi, pali chiopsezo cha imfa deta.

Pankhani ya funso lachiwiri, tagwiritsa ntchito Repmgr ndipo timachitabe ndi makasitomala ena pazifukwa zakale. Kodi tinganene chiyani? Patroni amabwera ndi autofiler kunja kwa bokosilo, Repmgr imabwera ndi autofiler ngati chinthu chowonjezera chomwe chiyenera kuyatsidwa. Tiyenera kuyendetsa daemon ya Repmgr pa node iliyonse ndiyeno tikhoza kukonza autofiler.

Repmgr imayang'ana ngati malo a Postgres ali amoyo. Njira za Repmgr zimayang'ana kukhalapo kwa wina ndi mzake, iyi si njira yabwino kwambiri. patha kukhala zovuta zodzipatula pa intaneti pomwe gulu lalikulu la Repmgr limatha kugawika m'magulu angapo ang'onoang'ono ndikupitiliza kugwira ntchito. Sindinatsatire Repmgr kwa nthawi yayitali, mwina idakonzedwa ... kapena ayi. Koma kuchotsedwa kwa chidziwitso cha chikhalidwe cha masango ku DCS, monga Stolon, Patroni amachitira, ndiyo njira yabwino kwambiri.

Alexey, ndili ndi funso, mwina lopunduka. Mu chimodzi mwazitsanzo zoyamba, mudasamutsa DCS kuchokera pamakina am'deralo kupita ku gulu lakutali. Timamvetsetsa kuti maukonde ndi chinthu chomwe chili ndi mawonekedwe ake, chimakhala chokha. Ndipo chimachitika ndi chiyani ngati pazifukwa zina gulu la DCS silikupezeka? Sindidzanena zifukwa, pakhoza kukhala zambiri: kuchokera m'manja opotoka a ochezera a pa Intaneti kupita ku mavuto enieni.

Sindinanene mokweza, koma gulu la DCS liyeneranso kulephera, mwachitsanzo, ndi nambala yosamvetseka ya node, kuti quorum ikwaniritsidwe. Kodi chimachitika ndi chiyani ngati gulu la DCS silikupezeka, kapena quorum silingakwaniritsidwe, mwachitsanzo mtundu wina wa kugawanika kwa netiweki kapena kulephera kwa nodi? Pankhaniyi, gulu la Patroni limalowa mumayendedwe owerengera okha. Gulu la Patroni silingathe kudziwa momwe gululi lilili komanso choti achite. Sizingagwirizane ndi DCS ndikusunga masango atsopano kumeneko, kotero kuti gulu lonse limangowerenga. Ndipo amadikirira mwina kulowererapo pamanja kuchokera kwa wogwiritsa ntchito kapena kuti DCS ipezenso.

Mwachidule, DCS imakhala ntchito kwa ife yofunika monga maziko omwe?

Inde Inde. M'makampani ambiri amakono, Service Discovery ndi gawo lofunika kwambiri la zomangamanga. Ikuyendetsedwa ngakhale pasanakhale ngakhale nkhokwe muzomangamanga. Kunena zoona, zomangamanga zidakhazikitsidwa, zidatumizidwa ku DC, ndipo nthawi yomweyo tili ndi Service Discovery. Ngati ndi Consul, ndiye DNS akhoza kumangidwa pa izo. Ngati izi ndi Etcd, ndiye kuti pangakhale gawo kuchokera ku gulu la Kubernetes, momwe china chilichonse chidzagwiritsidwa ntchito. Zikuwoneka kwa ine kuti Service Discovery ili kale gawo lofunikira lazinthu zamakono. Ndipo amaziganizira kale kwambiri kuposa za database.

Бпасибо!

Source: www.habr.com

Kuwonjezera ndemanga