Chidule Chachidule cha Ndemanga za PostgreSQL za Kubernetes, Zosankha Zathu ndi Zomwe Zachitika
Mochulukira, makasitomala akulandira zopempha zotsatirazi: "Tikufuna ngati Amazon RDS, koma yotsika mtengo"; "Tikufuna ngati RDS, koma kulikonse, mumapangidwe aliwonse." Kuti tigwiritse ntchito njira yoyendetsedwa yotereyi pa Kubernetes, tidayang'ana momwe alili odziwika kwambiri ogwiritsira ntchito PostgreSQL (Stolon, ogwira ntchito kuchokera ku Crunchy Data ndi Zalando) ndipo tinapanga chisankho chathu.
Nkhaniyi ndizochitika zomwe tapeza ponse pamalingaliro amalingaliro (kuwunika kwa mayankho) komanso kuchokera kumbali yothandiza (zomwe zidasankhidwa ndi zomwe zidabwera). Koma choyamba, tiyeni tiwone zomwe zimafunikira kuti mulowe m'malo mwa RDS ...
RDS ndi chiyani
Anthu akamalankhula za RDS, muzochitika zathu, amatanthauza ntchito yoyendetsedwa ya DBMS yomwe:
zosavuta kukonza;
amatha kugwira ntchito ndi zithunzithunzi ndikubwezeretsa kuchokera kwa iwo (makamaka ndi chithandizo PITR);
amakulolani kuti mupange ma topology akapolo-akapolo;
ali ndi mndandanda wolemera wa zowonjezera;
imapereka ma auditing ndi kasamalidwe ka ogwiritsa ntchito.
Nthawi zambiri, njira zogwirira ntchito yomwe muli nazo zitha kukhala zosiyana kwambiri, koma njira yokhala ndi Ansible yokhazikika siyili pafupi ndi ife. (Anzake ochokera ku 2GIS adafika pamalingaliro ofananawo kuyesa kwake pangani "chida chothandizira mwachangu gulu la Postgres-based failover cluster.")
Othandizira ndi njira yodziwika bwino yothetsera mavuto ofanana mu Kubernetes ecosystem. Mtsogoleri waukadaulo wa "Flanta" walankhula kale mwatsatanetsatane za iwo pokhudzana ndi ma database omwe adakhazikitsidwa mkati mwa Kubernetes. distolmu imodzi mwa malipoti ake.
NB: Kuti mupange mwachangu ogwiritsa ntchito osavuta, timalimbikitsa kulabadira zida zathu za Open Source chipolopolo-woyendetsa. Pogwiritsa ntchito, mutha kuchita izi popanda kudziwa za Go, koma m'njira zodziwika bwino kwa oyang'anira dongosolo: ku Bash, Python, ndi zina.
Pali ma opareshoni angapo a K8s a PostgreSQL:
Stolon;
Crunchy Data PostgreSQL Operator;
Wothandizira Zalando Postgres.
Tiyeni tiwone bwinobwino iwo.
Kusankhidwa kwa oyendetsa
Kuphatikiza pa zofunikira zomwe tazitchula pamwambapa, ife - monga akatswiri oyendetsa ntchito za Kubernetes - timayembekezeranso zotsatirazi kuchokera kwa ogwira ntchito:
kukhazikitsa ma node ogwirizana kapena chosankha mfundo;
kukhazikitsa tolerances;
kupezeka kwa luso lokonza;
matekinoloje omveka komanso malamulo.
Popanda kulowa mwatsatanetsatane pa mfundo iliyonse (funsani mu ndemanga ngati mukadali ndi mafunso okhudza iwo mutawerenga nkhani yonse), ndiwona kuti magawowa amafunikira kuti afotokoze bwino zaukadaulo wa ma cluster node kuti athe yitanitsani ntchito zenizeni. Mwanjira iyi titha kukwaniritsa malire abwino kwambiri potengera ntchito ndi mtengo wake.
Tsopano tiyeni tipitirire kwa ogwiritsa ntchito a PostgreSQL okha.
1. Stolon
Stolon kuchokera ku kampani yaku Italy Sorint.lab in lipoti lotchulidwa kale ankaonedwa ngati mtundu wa muyezo pakati operekera DBMS. Iyi ndi pulojekiti yakale kwambiri: kutulutsidwa kwake koyamba kunachitika mu Novembala 2015 (!), Ndipo malo osungira a GitHub ali ndi nyenyezi pafupifupi 3000 ndi othandizira 40+.
Zowonadi, Stolon ndi chitsanzo chabwino kwambiri cha zomangamanga zolingalira:
Chipangizo cha woyendetsa uyu chingapezeke mwatsatanetsatane mu lipoti kapena zolemba za polojekiti. Nthawi zambiri, ndikwanira kunena kuti imatha kuchita zonse zomwe zafotokozedwa: kulephera, ma proxies ofikira makasitomala owonekera, zosunga zobwezeretsera ... kupeza maziko).
Komabe, Stolon palibe Custom Resources, chifukwa chake sichikhoza kutumizidwa m'njira yosavuta komanso yofulumira - "monga mikate yotentha" - kupanga zochitika za DBMS ku Kubernetes. Kuwongolera kumachitika pogwiritsa ntchito zida stolonctl, kutumiza kumachitika kudzera pa tchati cha Helm, ndipo zokonda zimafotokozedwa ndikufotokozedwa mu ConfigMap.
Kumbali imodzi, zikuwoneka kuti wogwiritsa ntchitoyo siwogwiritsa ntchito (pambuyo pake, sagwiritsa ntchito CRD). Koma kumbali ina, ndi dongosolo losinthika lomwe limakupatsani mwayi wokonza zinthu mu K8s momwe mukuwonera.
Mwachidule, kwa ife patokha sikunawoneke kukhala koyenera kupanga tchati chosiyana cha database iliyonse. Choncho, tinayamba kufunafuna njira zina.
2. Crunchy Data PostgreSQL Operator
Wothandizira kuchokera ku Crunchy Data, woyambitsa wachichepere wa ku Amereka, anawoneka ngati mβmalo mwanzeru. Mbiri yake yapagulu imayamba ndikutulutsidwa koyamba mu Marichi 2017, kuyambira pamenepo malo osungira a GitHub alandila nyenyezi zosachepera 1300 ndi othandizira 50+. Kutulutsidwa kwaposachedwa kuyambira Seputembala kunayesedwa kuti agwire ntchito ndi Kubernetes 1.15-1.18, OpenShift 3.11+ ndi 4.4+, GKE ndi VMware Enterprise PKS 1.3+.
Mapangidwe a Crunchy Data PostgreSQL Operator amakwaniritsanso zomwe zanenedwa:
kasamalidwe koyenera kwa ogwiritsa ntchito (komanso kudzera pa CRD);
kuphatikiza ndi zigawo zina Crunchy Data Container Suite - gulu lapadera la zithunzi zotengera PostgreSQL ndi zida zogwirira ntchito nayo (kuphatikiza pgBackRest, pgAudit, zowonjezera kuchokera ku contrib, ndi zina).
Komabe, kuyesa kuyamba kugwiritsa ntchito opareshoni kuchokera ku Crunchy Data kunawulula zovuta zingapo:
Ma pods omwe adapangidwa anali gawo la Deployment, ngakhale tidatumiza pulogalamu yabwino. Mosiyana ndi StatefulSets, Ma Deployments sangathe kupanga ma disks.
Chotsalira chomaliza chimatsogolera ku mphindi zoseketsa: pa malo oyesera tidatha kuyendetsa ma replicas 3 ndi diski imodzi kusungirako komweko, kupangitsa wogwiritsa ntchito kunena kuti zofananira 3 zikugwira ntchito (ngakhale sizinali choncho).
Chinthu china cha woyendetsa uyu ndi kuphatikiza kwake kokonzeka ndi machitidwe osiyanasiyana othandizira. Mwachitsanzo, ndikosavuta kukhazikitsa pgAdmin ndi pgBounce, ndi in zolemba Zokonzedweratu za Grafana ndi Prometheus zimaganiziridwa. Posachedwapa kutulutsa 4.5.0-beta1 Kuphatikizana bwino ndi polojekiti kumazindikiridwa mosiyana pgMonitor, chifukwa chomwe wogwiritsa ntchito amapereka chithunzithunzi chomveka cha ma metric a PgSQL kunja kwa bokosi.
Komabe, kusankha kwachilendo kwa zinthu zopangidwa ndi Kubernetes kunatitsogolera ife kuti tipeze yankho losiyana.
3. Wothandizira Zalando Postgres
Tadziwa za Zalando kwa nthawi yayitali: tili ndi chidziwitso chogwiritsa ntchito Zalenium ndipo, ndithudi, tinayesera Mtsogoleri ndiye yankho lawo lodziwika bwino la HA la PostgreSQL. Za njira ya kampani yopanga Othandizira a Postgres m'modzi mwa olemba ake, Alexey Klyukin, adatero pamlengalenga Postgres-Lachiwiri #5, ndipo tinaikonda.
Ili ndiye yankho laling'ono kwambiri lomwe lafotokozedwa m'nkhaniyi: kutulutsidwa koyamba kunachitika mu Ogasiti 2018. Komabe, ngakhale kuti pali zochepa zomwe zimatulutsidwa, ntchitoyi yafika patali, ikuposa kale kutchuka yankho kuchokera ku Crunchy Data ndi nyenyezi za 1300 + pa GitHub ndi chiwerengero chachikulu cha opereka (70+).
Umu ndi momwe mamangidwe a opareshoni ochokera ku Zalando amawonetsedwa:
Wogwiritsa ntchitoyo amayendetsedwa bwino kudzera pa Custom Resources, amapanga zokha StatefulSet kuchokera m'mitsuko, yomwe imatha kusinthidwa ndikuwonjezera ma sidecars osiyanasiyana pa pod. Zonsezi ndi mwayi waukulu poyerekeza ndi woyendetsa kuchokera ku Crunchy Data.
Popeza tidasankha yankho kuchokera ku Zalando pakati pa zosankha za 3 zomwe zikukambidwa, kufotokozera kwina kwa kuthekera kwake kudzaperekedwa pansipa, nthawi yomweyo ndikugwiritsa ntchito.
Phunzirani ndi Postgres Operator kuchokera ku Zalando
Kuyika kwa oyendetsa ndikosavuta: ingotsitsani zomwe zatulutsidwa pano kuchokera ku GitHub ndikuyika mafayilo a YAML kuchokera m'ndandanda. akuwonetsera. Kapenanso, mutha kugwiritsanso ntchito operatorhub.
Pambuyo kukhazikitsa, muyenera kudandaula za kukhazikitsa yosungirako zipika ndi zosunga zobwezeretsera. Izi zimachitika kudzera pa ConfigMap postgres-operator m'malo a mayina pomwe mudayika woyendetsa. Zosungirako zikakonzedwa, mutha kuyika gulu lanu loyamba la PostgreSQL.
Nthawi zina zolembedwa zimasowa kapena ndi zachikale.
Mwamwayi, ambiri a iwo akhoza kuthetsedwa. Tiyeni tiyambe kuchokera kumapeto - mavuto ndi zolemba.
Mwachidziwikire, mudzakumana ndi mfundo yakuti sizidziwika nthawi zonse momwe mungalembetsere zosunga zobwezeretsera komanso momwe mungalumikizire chidebe chosungirako ku Operator UI. Zolemba zimalankhula za izi m'kupita, koma kufotokozera kwenikweni kuli mkati PR:
kufunika kopanga chinsinsi;
perekani kwa woyendetsa ngati parameter pod_environment_secret_name mu CRD yokhala ndi zoikamo za opareta kapena mu ConfigMap (kutengera momwe mwasankha kukhazikitsa woyendetsa).
Komabe, momwe zikukhalira, izi sizingatheke. Ndicho chifukwa chake tinasonkhanitsa mtundu wanu wa opareta ndi zina zowonjezera za chipani chachitatu. Kuti mudziwe zambiri za izo, onani pansipa.
Ngati mupereka zosunga zosunga zobwezeretsera kwa woyendetsa, zomwe ndi - wal_s3_bucket ndi makiyi olowera mu AWS S3, ndiye adzasunga zonse: osati maziko okha pakupanga, komanso masitepe. Izi sizinatikomere.
M'mafotokozedwe a magawo a Spilo, omwe ndi gawo loyambira la Docker la PgSQL mukamagwiritsa ntchito woyendetsa, zidapezeka kuti: mutha kudutsa parameter. WAL_S3_BUCKET opanda kanthu, potero kulepheretsa zosunga zobwezeretsera. Komanso, ndinasangalala kwambiri okonzeka PR, zomwe tinazilandira nthawi yomweyo mu foloko yathu. Tsopano mukungofunika kuwonjezera enableWALArchiving: false ku gwero lamagulu a PostgreSQL.
Muyenera kuwonjezera zosintha zitatu ku Operator UI:
SPILO_S3_BACKUP_BUCKET
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Pambuyo pake, kasamalidwe ka zosunga zobwezeretsera kudzakhalapo, komwe kwa ife kufewetsa ntchitoyo ndi siteji, kutilola kuti tipereke magawo kuchokera pakupanga kumeneko popanda zolemba zina.
Ubwino wina unali kugwira ntchito ndi Teams API ndi mwayi wokwanira wopanga nkhokwe ndi maudindo pogwiritsa ntchito zida zogwirira ntchito. Komabe, zolengedwa maudindo analibe ufulu mwa kusakhulupirika. Chifukwa chake, wogwiritsa ntchito yemwe ali ndi ufulu wowerenga sakanatha kuwerenga matebulo atsopano.
Ndipo mfundo yomaliza pazosintha zomwe zili zofunika kwa ife - chigamba, zomwe zimawonjezera Node Affinity ku StatefulSet yomwe idapangidwa. Makasitomala athu nthawi zambiri amakonda kuchepetsa ndalama pogwiritsa ntchito zochitika zapamalo, ndipo mwachiwonekere sakuyenera kuchititsa ma database. Nkhaniyi itha kuthetsedwa mwa kulolerana, koma kupezeka kwa Node Affinity kumapereka chidaliro chokulirapo.
Chinachitika ndi chiyani?
Kutengera zotsatira zothetsa mavuto omwe ali pamwambawa, tidafoka Operesheni ya Postgres kuchokera ku Zalando kupita malo anu, kumene amasonkhanitsidwa ndi zigamba zothandiza. Ndipo kuti zikhale zosavuta, tinasonkhanitsanso Chithunzi cha Docker.
Mndandanda wa ma PR omwe amavomerezedwa mu foloko:
Zingakhale zabwino ngati anthu ammudzi amathandizira ma PRs kuti akwere kumtunda ndi mtundu wotsatira wa wogwiritsa ntchito (1.6).
Bonasi! Nkhani yopambana kusamuka
Ngati mugwiritsa ntchito Patroni, kupanga kwamoyo kumatha kusamutsidwa kwa wogwiritsa ntchito ndi nthawi yochepa.
Spilo imakulolani kuti mupange magulu oyimilira kudzera pa S3 yosungirako ndi Wal-E, pamene chipika cha binary cha PgSQL chimasungidwa koyamba mu S3 kenako ndikutulutsidwa ndi chofananacho. Koma choti muchite ngati muli nacho osati amagwiritsidwa ntchito ndi Wal-E pazomangamanga zakale? Njira yothetsera vutoli ili kale zinaperekedwa pa hub.
Kubwereza momveka kwa PostgreSQL kumabwera kudzapulumutsa. Komabe, sitidzafotokozera mwatsatanetsatane momwe tingapangire zofalitsa ndi zolembetsa, chifukwa ... ndondomeko yathu inali fiasco.
Chowonadi ndi chakuti nkhokweyo inali ndi matebulo angapo odzaza ndi mizere mamiliyoni, yomwe, kuphatikiza apo, idawonjezeredwa ndikuchotsedwa. Kulembetsa kosavuta Ρ copy_data, pamene chojambula chatsopano chikopera zonse zomwe zili mkati mwa mbuye, sizingagwirizane ndi mbuye wake. Kukopera zomwe zili mkati zinagwira ntchito kwa sabata, koma sanagwirizane ndi mbuyeyo. Pamapeto pake, zinandithandiza kuthetsa vutolo nkhani anzanu ku Avito: mukhoza kusamutsa deta ntchito pg_dump. Ndifotokoza mtundu wathu (wosinthidwa pang'ono) wa algorithm iyi.
Chifukwa cha dongosololi, kusinthaku kunachitika ndikuchedwa pang'ono.
Pomaliza
Ogwiritsa ntchito a Kubernetes amakulolani kuti muchepetse zochita zosiyanasiyana pozichepetsa pakupanga zinthu za K8s. Komabe, mutapeza zodziwikiratu modabwitsa ndi chithandizo chawo, ndikofunikira kukumbukira kuti zitha kubweretsanso ma nuances angapo osayembekezeka, chifukwa chake sankhani ogwiritsa ntchito mwanzeru.
Poganizira za atatu odziwika bwino a Kubernetes opareshoni a PostgreSQL, tidasankha ntchitoyi kuchokera ku Zalando. Ndipo tidayenera kuthana ndi zovuta zina ndi izi, koma zotsatira zake zinali zokondweretsa, ndiye tikukonzekera kukulitsa zomwe takumana nazo ku makhazikitsidwe ena a PgSQL. Ngati muli ndi chidziwitso chogwiritsa ntchito mayankho ofanana, tidzakhala okondwa kuwona tsatanetsatane mu ndemanga!