I-Postgres ngoLwesibili No. 5: “I-PostgreSQL ne-Kubernetes. CI/CD. Hlola i-automation"

I-Postgres ngoLwesibili No. 5: “I-PostgreSQL ne-Kubernetes. CI/CD. Hlola i-automation"

Ekupheleni konyaka odlule, okunye ukusakazwa bukhoma komphakathi waseRussia we-PostgreSQL kwenzeka #RuPostgres, lapho umsunguli wayo u-Nikolai Samokhvalov ekhuluma nomqondisi wezobuchwepheshe we-Flant uDmitry Stolyarov mayelana nale DBMS kumongo we-Kubernetes.

Sishicilela okulotshiweyo kwengxenye enkulu yale ngxoxo, futhi ku- Isiteshi se-YouTube somphakathi Ividiyo egcwele ithunyelwe:

Databases kanye Kubernetes

НС: Ngeke sikhulume nge-VACUUM nama-CHECKPOINTs namuhla. Sifuna ukukhuluma ngeKubernetes. Ngiyazi ukuthi uneminyaka eminingi yesipiliyoni. Ngibuke amavidiyo akho ngaze ngaphinda ngabuka amanye awo... Ake siqonde ngqo ephuzwini: kungani i-Postgres noma i-MySQL kuma-K8 nhlobo?

ДС: Ayikho futhi ayinakuba nempendulo eqondile yalo mbuzo. Kodwa ngokuvamile, lokhu kulula futhi kulula ... okungenzeka. Wonke umuntu ufuna amasevisi aphethwe.

НС: Kwenzenjani RDS, ekhaya kuphela?

ДС: Yebo: njenge-RDS, noma yikuphi.

НС: "Noma yikuphi" iphuzu elihle. Ezinkampanini ezinkulu, yonke into itholakala ezindaweni ezahlukene. Kungani-ke, uma kuyinkampani enkulu, ingathathi isixazululo esenziwe ngomumo? Isibonelo, i-Nutanix inentuthuko yayo, ezinye izinkampani (i-VMware...) zine-"RDS efanayo, ekhaya kuphela."

ДС: Kodwa sikhuluma ngokuqaliswa okuhlukile okuzosebenza kuphela ngaphansi kwezimo ezithile. Futhi uma sikhuluma nge-Kubernetes, khona-ke kunenhlobonhlobo enkulu yengqalasizinda (engaba kuma-K8s). Empeleni lokhu kuyindinganiso yama-API emafini...

НС: Kumahhala futhi!

ДС: Akubalulekile kangako. Ukukhululeka kubalulekile hhayi ingxenye enkulu kakhulu yemakethe. Kukhona okunye okubalulekile... Cishe uyawukhumbula umbiko “Databases kanye Kubernetes"?

НС: Yebo.

ДС: Ngabona ukuthi yamukelwe ngendlela engaqondakali. Abanye abantu bacabanga ukuthi bengithi: “Bafo, asifake zonke izingosi zolwazi ku-Kubernetes!”, kuyilapho abanye benquma ukuthi wonke lawa amabhayisikili asabekayo. Kodwa ngangifuna ukusho okuhluke ngokuphelele: “Bheka ukuthi kwenzekani, yiziphi izinkinga ezikhona nokuthi zingaxazululwa kanjani. Ingabe kufanele sisebenzise i-Kubernetes database manje? Ukukhiqiza? Nokho, kuphela uma uthanda...ukwenza izinto ezithile. Kodwa ku-dev, ngingasho ukuthi ngiyayincoma. Ku-dev, amandla okudala/okususa izindawo abaluleke kakhulu.”

NS: Ngo-dev, usho zonke izindawo ezingezona ezokukhiqiza? Isiteji, QA...

ДС: Uma sikhuluma ngezitendi ze-perf, cishe akunjalo, ngoba izidingo ezikhona ziqondile. Uma sikhuluma ngamacala akhethekile lapho kudingeka khona i-database enkulu kakhulu ukuze kufakwe isiteji, mhlawumbe akunjalo... Uma lokhu kuyindawo emile, ehlala isikhathi eside, khona-ke yini inzuzo yokuba nesizindalwazi esitholakala kuma-K8s?

НС: Lutho. Kodwa sizibona kuphi izindawo ezimile? Indawo emile izophelelwa yisikhathi kusasa.

ДС: Isiteji singamile. Sinamakhasimende...

НС: Yebo, nginayo nami. Kuyinkinga enkulu uma unesizindalwazi se-TB engu-10 kanye nesiteji esingu-200 GB...

ДС: Nginecala elihle kakhulu! Esiteji kunesizindalwazi somkhiqizo lapho kwenziwa khona izinguquko. Futhi kukhona inkinobho: "phumela ekukhiqizeni". Lezi zinguquko - i-deltas - ziyengezwa (kubonakala sengathi zivumelaniswa kalula nge-API) ekukhiqizeni. Lena inketho exotic kakhulu.

НС: Ngibone abaqalisi eSigodini abahlezi e-RDS noma e-Heroku - lezi izindaba zeminyaka engu-2-3 edlule - futhi balanda okulahlwayo kukhompuyutha yabo ephathekayo. Ngoba i-database isengu-80 GB kuphela, futhi kunesikhala ku-laptop. Bese bathengela wonke umuntu amadiski engeziwe ukuze abe nedathabhesi engu-3 yokwenza intuthuko ehlukene. Kwenzeka kanjena futhi. Ngiphinde ngabona ukuthi abesabi ukukopisha i-prod esiteji - kuncike kakhulu enkampanini. Kodwa futhi ngabona ukuthi bayesaba kakhulu, nokuthi ngokuvamile abanaso isikhathi esanele nezandla. Kodwa ngaphambi kokuthi sidlulele kulesi sihloko, ngifuna ukuzwa ngeKubernetes. Ingabe ngiqonda kahle ukuthi akekho osasebenza okwamanje?

ДС: Sinemininingwane egciniwe emincane ku-prod. Sikhuluma ngamavolumu amashumi amagigabhayithi kanye nezinsizakalo ezingabalulekile ebesivilapha kakhulu ukwenza ama-replicas (futhi asikho isidingo esinjalo). Futhi inqobo nje uma kunesitoreji esijwayelekile ngaphansi kwe-Kubernetes. Le database isebenze emshinini obonakalayo - ngokwemibandela ku-VMware, ngaphezulu kwesistimu yokugcina. Sayibeka phakathi PV futhi manje singayidlulisela emshinini iye emshinini.

НС: Imininingwane yalolu sayizi, kuze kufike ku-100 GB, ingakhishwa ngemizuzu embalwa kumadiski amahle kanye nenethiwekhi enhle, akunjalo? Isivinini esingu-1 GB ngesekhondi asisajwayelekile.

ДС: Yebo, ekusebenzeni komugqa lokhu akuyona inkinga.

НС: Kulungile, kufanele sicabange nge-prod. Futhi uma sicabangela i-Kubernetes yezindawo ezingakhiqizi, yini okufanele siyenze? Ngikubona lokho kuZalando yenza opharetha, e-Crunchy ukusaha, kukhona ezinye izinketho. Futhi kukhona OnGres - lona umngane wethu omuhle u-Alvaro waseSpain: abakwenzayo empeleni akukhona nje opharetha, kanye nokusabalalisa konke (StackGres), lapho, ngaphezu kwe-Postgres ngokwayo, baphinde banquma ukufaka isipele, ummeleli we-Envoy...

ДС: Mthunywa ngobani? Ubhalansisa ithrafikhi ye-Postgres ngokuqondile?

НС: Yebo. Okusho ukuthi, bakubona njengokuthi: uma uthatha ukusatshalaliswa kwe-Linux kanye ne-kernel, khona-ke i-PostgreSQL evamile i-kernel, futhi bafuna ukwenza ukusabalalisa okuzobe kulungele amafu futhi kusebenze ku-Kubernetes. Bahlanganisa izingxenye (izipele, njll.) futhi bazilungise ukuze zisebenze kahle.

ДС: Kuhle kakhulu! Empeleni lena isofthiwe yokudala ama-Postgres akho aphethwe.

НС: Ukusabalalisa kwe-Linux kunezinkinga zaphakade: indlela yokwenza abashayeli ukuze yonke ihadiwe isekelwe. Futhi banombono wokuthi bazosebenza eKubernetes. Ngiyazi ukuthi ku-opharetha we-Zalando sisanda kubona uxhumano ku-AWS futhi lokhu akusekuhle kakhulu. Akufanele kube nesibopho nengqalasizinda ethile - liyini iphuzu?

ДС: Angazi kahle ukuthi yisiphi isimo uZalando angena kuso, kodwa ku-Kubernetes isitoreji manje senziwe ngendlela yokuthi akunakwenzeka ukuthatha isipele sediski usebenzisa indlela ejwayelekile. Muva nje in standard - enguqulweni yakamuva Imininingwane ye-CSI - senze izifinyezo zenzeke, kodwa zisetshenziswa kuphi? Ngokweqiniso, yonke into isaluhlaza kakhulu... Sizama i-CSI phezu kwe-AWS, GCE, Azure, vSphere, kodwa ngokushesha nje lapho uqala ukuyisebenzisa, ungabona ukuthi ayikalungi.

НС: Yingakho ngezinye izikhathi kufanele sithembele kungqalasizinda. Ngicabanga ukuthi lesi kuseyisigaba sokuqala - izinhlungu ezikhulayo. Umbuzo: Isiphi iseluleko ongasinikeza abasanda kuhlanganyela abafuna ukuzama i-PgSQL kuma-K8s? Imuphi opharetha mhlawumbe?

ДС: Inkinga ukuthi i-Postgres ingu-3% kithi. Siphinde sibe nohlu olukhulu kakhulu lwesoftware ehlukile ku-Kubernetes, ngeke ngize ngibhale yonke into. Isibonelo, i-Elasticsearch. Baningi opharetha: abanye bayathuthuka, abanye abakwenzi. Sizenzele izimfuneko mayelana nokuthi umqhubi kufanele abe nakho ukuze sikuthathele phezulu. Kwi-opharetha eqondene ngqo ne-Kubernetes - hhayi "ku-opharetha ukwenza okuthile ezimeni ze-Amazon"... Eqinisweni, ngokubanzi (= cishe wonke amaklayenti) sisebenzisa u-opharetha oyedwa - ngoba Redis (sizoshicilela udaba ngaye maduze).

НС: Futhi hhayi eye-MySQL futhi? Ngiyazi ukuthi i-Percona... njengoba manje sebesebenza ku-MySQL, i-MongoDB, ne-Postgres, kuzodingeka benze uhlobo oluthile lwesixazululo sendawo yonke: kuzo zonke izingobo zolwazi, zabo bonke abahlinzeki bamafu.

ДС: Asizange sibe nesikhathi sokubheka opharetha be-MySQL. Lokhu akuyona into esigxile kuyo kakhulu njengamanje. I-MySQL isebenza kahle ngokuzimele. Kungani usebenzisa u-opharetha uma ukwazi ukwethula i-database... Ungakwazi ukwethula isitsha se-Docker nge-Postrges, noma ungayethula ngendlela elula.

НС: Bekunombuzo ngalokhu futhi. Akekho opharetha nhlobo?

ДС: Yebo, i-100% yethu ine-PostgreSQL esebenza ngaphandle ko-opharetha. Kuze kube manje. Sisebenzisa ngokugcwele u-opharetha we-Prometheus ne-Redis. Sinezinhlelo zokuthola i-opharetha ye-Elasticsearch - yiyona “evutha” kakhulu, ngoba sifuna ukuyifaka ku-Kubernetes ngamacala angu-100%. Njengoba nje sifuna ukuqinisekisa ukuthi i-MongoDB nayo ihlale ifakwe ku-Kubernetes. Lapha kuvela izifiso ezithile - kukhona umuzwa wokuthi kulezi zimo kukhona okungenziwa. Futhi asizange sibheke i-Postgres. Yiqiniso, siyazi ukuthi kunezinketho ezahlukene, kodwa empeleni sine-standalone.

DB yokuhlola e-Kubernetes

НС: Asiqhubekele esihlokweni sokuhlolwa. Uzikhipha kanjani izinguquko kusizindalwazi - ngokombono we-DevOps. Kukhona ama-microservices, imininingwane eminingi, kukhona okushintshayo endaweni ethile ngaso sonke isikhathi. Indlela yokuqinisekisa i-CI/CD evamile ukuze yonke into ihleleke ngokombono we-DBMS. Ithini indlela yakho?

ДС: Ngeke kube nempendulo eyodwa. Kunezinketho ezimbalwa. Esokuqala ubukhulu besisekelo esifuna ukusikhipha. Wena ngokwakho usho ukuthi izinkampani zinezimo zengqondo ezihlukile zokuba nekhophi yesizindalwazi se-prod ku-dev nesiteji.

НС: Futhi ngaphansi kwemibandela ye-GDPR, ngicabanga ukuthi bayaqaphela ngokwengeziwe ... Ngingasho ukuthi eYurophu sebevele baqala ukubeka izinhlawulo.

ДС: Kodwa ngokuvamile ungabhala isofthiwe ethatha ukulahlwa ekukhiqizeni futhi iyenze ibe nzima. Idatha yomkhiqizo iyatholakala (isifinyezo, ukulahla, ikhophi kanambambili...), kodwa ayenziwa angaziwa. Esikhundleni salokho, kungase kube nemibhalo yokudala: lokhu kungaba ukulungiswa noma umbhalo nje okhiqiza isizindalwazi esikhulu. Inkinga iwukuthi: kuthatha isikhathi esingakanani ukwakha isithombe esiyisisekelo? Futhi kuthatha isikhathi esingakanani ukuyisa endaweni oyifunayo?

Size esikimini: uma iklayenti linesethi yedatha engashintshi (inguqulo encane yesizindalwazi), khona-ke siyisebenzisa ngokuzenzakalelayo. Uma sikhuluma ngendawo yokubuyekeza, lapho sidala igatsha, sasebenzisa isibonelo sohlelo lokusebenza - sikhipha isizindalwazi esincane lapho. Kodwa kwahamba kahle inketho, lapho sithatha udoti ekukhiqizeni kanye ngosuku (ebusuku) futhi sakhe isiqukathi se-Docker esine-PostgreSQL ne-MySQL ngale datha elayishiwe esekelwe kuyo. Uma udinga ukwandisa isizindalwazi izikhathi ezingu-50 kusukela kulesi sithombe, lokhu kwenziwa kalula futhi ngokushesha.

НС: Ngokukopisha okulula?

ДС: Idatha igcinwa ngqo esithombeni se-Docker. Labo. Sinesithombe esenziwe ngomumo, nakuba singu-100 GB. Ngenxa yezendlalelo ku-Docker, singasebenzisa lesi sithombe ngokushesha izikhathi eziningi esizidingayo. Indlela iwubuwula, kodwa isebenza kahle.

НС: Khona-ke, lapho uhlola, ishintsha khona ngaphakathi kwe-Docker, akunjalo? Kopisha-ubhale ngaphakathi kwe-Docker - uyilahle bese uhamba futhi, konke kuhamba kahle. Ikilasi! Futhi ingabe usuyisebenzisa ngokugcwele?

ДС: Isikhathi eside.

НС: Senza izinto ezifanayo kakhulu. Kuphela esingasebenzisi ikhophi-on-write ye-Docker, kodwa enye enye.

ДС: Akuyona into ejwayelekile. Futhi i-Docker isebenza yonke indawo.

НС: Ngombono, yebo. Kodwa futhi sinamamojula lapho, ungenza amamojula ahlukene futhi usebenze ngezinhlelo zamafayela ahlukene. Isikhashana nje lapha. Ngasohlangothini lwe-Postgres, sibheka konke lokhu ngendlela ehlukile. Manje ngibheke ohlangothini lwe-Docker ngabona ukuthi konke kuyasebenza kuwe. Kodwa uma i-database inkulu, isibonelo, i-TB engu-1, ngakho konke lokhu kuthatha isikhathi eside: ukusebenza ebusuku, nokufaka yonke into ku-Docker... Futhi uma i-5 TB igxishwe ku-Docker... Noma ingabe konke kuhamba kahle?

ДС: Uyini umehluko: lawa ama-blobs, amabhithi namabhayithi nje.

НС: Umehluko yilokhu: ingabe ukwenza ngokulahla nokubuyisela?

ДС: Akudingekile neze. Izindlela zokukhiqiza lesi sithombe zingahluka.

НС: Kwamanye amaklayenti, sikwenze ngendlela yokuthi esikhundleni sokuhlala sikhiqiza isithombe esiyisisekelo, sihlale sisigcina sihambisana nesikhathi. Empeleni iyikhophi, kodwa ayitholi idatha ku-master ngokuqondile, kodwa ngengobo yomlando. Ingobo yomlando kanambambili lapho ama-WAL alandwa khona nsuku zonke, lapho kuthathwa khona izipele... Lawa ma-WAL abe esefinyelela esithombeni esiyisisekelo ngokulibaziseka okuncane (ngokoqobo imizuzwana engu-1-2). Sihlanganisa kuyo nganoma iyiphi indlela - manje sine-ZFS ngokuzenzakalelayo.

ДС: Kodwa nge-ZFS ukhawulelwe endaweni eyodwa.

НС: Yebo. Kepha iZFS nayo inomlingo thumela: ngayo ungathumela isifinyezo futhi (angikakahloli lokhu okwamanje, kodwa...) ungathumela i-delta phakathi kokubili PGDATA. Eqinisweni, sinelinye ithuluzi esingalicabangelanga ngempela lemisebenzi enjalo. I-PostgreSQL ine pg_buyisela emuva, esebenza njenge-rsync "ehlakaniphile", yeqa okuningi okungadingeki ukubuke, ngoba akukho okushintshile lapho. Singenza ukuvumelanisa okusheshayo phakathi kwamaseva amabili futhi sibuyisele emuva ngendlela efanayo.

Ngakho-ke, kusukela kulokhu, ohlangothini lwe-DBA eyengeziwe, sizama ukwakha ithuluzi elisivumela ukuthi senze into efanayo oyishilo: sinesizindalwazi esisodwa, kodwa sifuna ukuhlola okuthile izikhathi ezingu-50, cishe kanye kanye.

ДС: Izikhathi ezingu-50 kusho ukuthi udinga uku-oda izimo ze-Spot ezingama-50.

НС: Cha, senza konke ngomshini owodwa.

ДС: Kodwa uzokwandisa kanjani izikhathi ezingu-50 uma le database eyodwa, ithi, i-terabyte. Kungenzeka ukuthi udinga i-RAM enemibandela engu-256 GB?

НС: Yebo, ngezinye izikhathi udinga inkumbulo eningi - lokho kuvamile. Kodwa lokhu kuyisibonelo esivela ekuphileni. Umshini wokukhiqiza unama-cores angama-96 no-600 GB. Ngesikhathi esifanayo, ama-cores angu-32 (ngisho nama-cores angu-16 manje ngezinye izikhathi) kanye ne-100-120 GB yememori isetshenziselwa i-database.

ДС: Futhi amakhophi angu-50 angena lapho?

НС: Ngakho-ke kukhona ikhophi eyodwa kuphela, bese ikhophi-on-write (ZFS) isebenza... Ngizokutshela kabanzi.

Isibonelo, sinesizindalwazi se-TB eyi-10. Bayenzela idiski, iZFS nayo yacindezela usayizi wayo ngamaphesenti angama-30-40. Njengoba singakwenzi ukuhlola kokulayisha, isikhathi esiqondile sokuphendula asibalulekile kithi: masihambe kancane kancane izikhathi ezi-2 - kulungile.

Sinikeza ithuba abahleli bezinhlelo, i-QA, i-DBA, njll. yenza ukuhlolwa ngemicu engu-1-2. Isibonelo, bangase baqhube uhlobo oluthile lokufuduka. Ayidingi ama-cores ayi-10 ngesikhathi esisodwa - idinga i-1 Postgres backend, i-core 1. Ukufuduka kuzoqala - mhlawumbe i-autovacuum isazoqala, bese kusetshenziswa ingqikithi yesibili. Sinama-cores angu-16-32 abelwe, ngakho-ke abantu abangu-10 bangasebenza ngesikhathi esifanayo, ayikho inkinga.

Ngoba ngokomzimba PGDATA okufanayo, kuvela ukuthi empeleni sikhohlisa i-Postgres. Iqhinga yilokhu: isibonelo, ama-Postgres angu-10 aqaliswa kanyekanye. Iyini inkinga ngokuvamile? Babeka amabhafa_abiwe, ake sithi 25%. Ngakho-ke, lokhu kungu-200 GB. Ngeke ukwazi ukwethula okungaphezu kokuthathu kwalokhu, ngoba inkumbulo izophela.

Kodwa ngesinye isikhathi sabona ukuthi lokhu kwakungadingekile: ​​setha ama-shared_buffers abe ngu-2 GB. I-PostgreSQL ine usayizi_wenqolobane_osebenzayo, futhi empeleni iyona kuphela enethonya izinhlelo. Sibeke ku-0,5 TB. Futhi akunandaba nokuthi azikho ngempela: wenza izinhlelo sengathi zikhona.

Ngakho-ke, lapho sihlola uhlobo oluthile lokufuduka, singaqoqa zonke izinhlelo - sizobona ukuthi kuzokwenzeka kanjani ekukhiqizeni. Imizuzwana lapho izoba ehlukile (kancane), kodwa idatha esiyifunde ngempela, kanye nezinhlelo ngokwazo (lokho JOIN akhona, njll.) kuzofana ncamashi nasemikhiqizweni. Futhi ungasebenzisa amasheke amaningi anjalo ngokuhambisana emshinini owodwa.

ДС: Awucabangi ukuthi kunezinkinga ezimbalwa lapha? Esokuqala yisixazululo esisebenza kuphela ku-PostgreSQL. Le ndlela iyimfihlo kakhulu, ayijwayelekile. Okwesibili ukuthi i-Kubernetes (nayo yonke into ubuchwepheshe bamafu obuya kuyo manje) ihilela ama-node amaningi, futhi lawa ma-node angama-ephemeral. Futhi endabeni yakho iyi-node ehlelekile, ephikelelayo. Lezi zinto zingenza ngixabane.

НС: Okokuqala, ngiyavuma, lena indaba ye-Postgres kuphela. Ngicabanga ukuthi uma sinohlobo oluthile lwe-IO eqondile kanye ne-buffer pool cishe yonke inkumbulo, le ndlela ngeke isebenze - izinhlelo zizohluka. Kodwa okwamanje sisebenza kuphela namaPostgres, asicabangi ngabanye.

Mayelana ne-Kubernetes. Wena ngokwakho usitshela yonke indawo ukuthi sinesizindalwazi esiqhubekayo. Uma isibonelo sihluleka, into esemqoka ukulondoloza idiski. Lapha siphinde sibe nenkundla yonke e-Kubernetes, futhi ingxenye ene-Postgres ihlukene (yize izoba lapho ngolunye usuku). Ngakho-ke, yonke into ifana nalokhu: isibonelo sawa, kodwa silondoloze i-PV yayo futhi samane siyixhuma kwesinye (esisha) isibonelo, njengokungathi akwenzekanga lutho.

ДС: Ngokombono wami, sakha ama-pods ku-Kubernetes. Ama-K8 - okunwebeka: amafindo ayalwa njengoba kudingeka. Umsebenzi uwukwenza nje i-pod bese uthi idinga inani elingu-X lezinsiza, bese ama-K8 azozitholela wona ngokwawo. Kepha ukusekelwa kwesitoreji ku-Kubernetes akukazinzi: 1.16, ku 1.17 (lokhu kukhululwa kwakhululwa i-недели ago) lezi zici ziba yi-beta kuphela.

Kuzodlula izinyanga eziyisithupha kuya onyakeni - izozinza kakhulu noma kancane, noma okungenani izomenyezelwa kanjalo. Bese ukuthi kungenzeka izifinyezo futhi ushintshe usayizi kuxazulula inkinga yakho ngokuphelele. Ngoba unesisekelo. Yebo, kungase kungabi ngokushesha kakhulu, kodwa isivinini sincike kulokho "ngaphansi kwe-hood", ngoba okunye ukuqaliswa kungakopisha nokukopisha-ngokubhala ezingeni le-disk subsystem.

НС: Kuyadingeka futhi ukuthi zonke izinjini (Amazon, Google...) ziqale ukusekela le nguqulo - lokhu futhi kuthatha isikhathi.

ДС: Asikazisebenzisi okwamanje. Sisebenzisa okwethu.

Ukuthuthukiswa kwendawo ye-Kubernetes

НС: Uke wahlangabezana nesifiso esinjalo lapho udinga ukufaka wonke ama-pods emshinini owodwa futhi wenze ukuhlolwa okuncane kangaka. Ukuze uthole ngokushesha ubufakazi bomqondo, bheka ukuthi uhlelo lokusebenza lusebenza ku-Kubernetes, ngaphandle kokunikezela ngenqwaba yemishini yalo. Ukhona uMinikube, akunjalo?

ДС: Kimina kubonakala sengathi leli cala - lisetshenziswe endaweni eyodwa - limayelana nentuthuko yendawo kuphela. Noma ezinye izibonakaliso zephethini enjalo. Yidla Minikube, Nakhu Ama-k3s, KIND. Sibheke ekusebenziseni i-Kubernetes IN Docker. Manje saqala ukusebenza nayo ukuze sihlole.

НС: Bengicabanga ukuthi lona bekuwumzamo wokusonga wonke ama-pods esithombeni esisodwa se-Docker. Kodwa kwavela ukuthi lokhu kumayelana nokuthile okuhluke ngokuphelele. Noma kunjalo, kunezitsha ezihlukene, ama-pods ahlukene - e-Docker nje.

ДС: Yebo. Futhi kukhona ukulingisa okuhlekisayo okwenziwe, kodwa incazelo yile... Sinensiza yokuthunyelwa - i-werf. Sifuna ukuyenza imodi enemibandela werf up: “Ngitholele i-Kubernetes yendawo.” Bese ugijima umbandela lapho werf follow. Khona-ke umthuthukisi uzokwazi ukuhlela i-IDE, futhi inqubo izokwethulwa ohlelweni olubona izinguquko futhi yakhe kabusha izithombe, iphinde isetshenziswe kuma-K8 wendawo. Yile ndlela esifuna ukuzama ngayo ukuxazulula inkinga yentuthuko yendawo.

Izifinyezo kanye ne-database cloning eqinisweni le-K8s

НС: Uma sibuyela ekukopisheni-ngokubhala. Ngiqaphele ukuthi amafu nawo anezithombe. Basebenza ngokuhlukile. Isibonelo, ku-GCP: unesibonelo se-multi-terabyte ogwini olusempumalanga ye-United States. Uthatha izifinyezo ngezikhathi ezithile. Uthatha ikhophi yediski ogwini olusentshonalanga kusuka kusifinyezo - ngemizuzu embalwa yonke into isilungile, isebenza ngokushesha kakhulu, i-cache kuphela idinga ukugcwaliswa ememori. Kodwa lawa ma-clones (izifinyezo) ahlose 'ukuhlinzeka' ngevolumu entsha. Lokhu kuhle uma udinga ukudala izimo eziningi.

Kodwa ngokuhlolwa, kubonakala kimi ukuthi izifinyezo, okhuluma ngazo ku-Docker noma engikhuluma ngazo ku-ZFS, btrfs ngisho ne-LVM... - zikuvumela ukuthi ungadali idatha entsha ngempela emshinini owodwa. Efwini, usazowakhokhela njalo futhi ungalindi imizuzwana, kodwa imizuzu (futhi esimweni umthwalo ovilaphayo, mhlawumbe iwashi).

Kunalokho, ungathola le datha ngesekhondi noma amabili, uqalise ukuhlola bese uyilahla. Lezi zifinyezo zixazulula izinkinga ezahlukene. Esimweni sokuqala - ukukhulisa futhi uthole ama-replicas amasha, kanti okwesibili - ukuhlolwa.

ДС: Angivumi. Ukwenza i-volume cloning isebenze kahle kuwumsebenzi wamafu. Angizange ngibheke ukuqaliswa kwabo, kodwa ngiyazi ukuthi sikwenza kanjani ku-hardware. Sine-Ceph, ivumela noma iyiphi ivolumu ebonakalayo (RBD) usho i-clone futhi uthole ivolumu yesibili enezici ezifanayo kumashumi ama-millisecond, IOPS'Ami, njll. Udinga ukuqonda ukuthi kukhona ikhophi ekhohlisayo yokubhala ngaphakathi. Kungani ifu kungafanele lenze okufanayo? Ngiqinisekile ukuthi bazama ukwenza lokhu ngandlela thize.

НС: Kodwa kusazobathatha imizuzwana, amashumi amasekhondi ukuphakamisa isibonelo, ukuletha i-Docker lapho, njll.

ДС: Kungani kudingekile ukuphakamisa isenzakalo sonke? Sinesibonelo esinama-cores angu-32, 16... futhi singangena kuso - isibonelo, ezine. Uma si-oda eyesihlanu, isibonelo sizovele siphakanyiswe, bese sizosuswa.

НС: Yebo, kuyathakazelisa, u-Kubernetes uphenduka indaba ehlukile. Idatha yethu egciniwe ayikho kuma-K8, futhi sinesibonelo esisodwa. Kodwa ukwenza i-multi-terabyte database akuthathi ngaphezu kwemizuzwana emibili.

ДС: Kuhle lokhu. Kodwa iphuzu lami lokuqala ukuthi lesi akusona isixazululo esijwayelekile. Yebo, kupholile, kepha ilungele i-Postgres kuphela endaweni eyodwa.

НС: Ayifaneleki kuphela i-Postgres: lezi zinhlelo, njengoba ngichazile, zizosebenza kuwo kuphela. Kodwa uma singazihluphi mayelana nezinhlelo, futhi sidinga nje yonke idatha yokuhlola ukusebenza, khona-ke lokhu kulungele noma iyiphi i-DBMS.

ДС: Eminyakeni eminingi edlule senza okufanayo kuzifinyezo ze-LVM. Lena yakudala. Le ndlela yasetshenziswa kakhulu. Ama-node ajwayelekile abuhlungu nje. Ngoba akufanele uwalahle, kufanele uhlale uwakhumbula...

НС: Uyayibona into engaba yingxubevange lapha? Ake sithi i-stateful uhlobo oluthile lwe-pod, lusebenzela abantu abambalwa (abahloli abaningi). Sinevolumu eyodwa, kodwa ngenxa yesistimu yefayela, ama-clones asendaweni. Uma i-pod iwe, kodwa i-disk isala, i-pod izophakama, ibale ulwazi mayelana nawo wonke ama-clones, iphinde ithathe yonke into bese ithi: "Nawa ama-clone akho agijima kulawa machweba, qhubeka nokusebenza nawo."

ДС: Ngobuchwepheshe lokhu kusho ukuthi ngaphakathi kwe-Kubernetes kune-pod eyodwa lapho sisebenzisa ama-Postgres amaningi.

НС: Yebo. Unomkhawulo: ake sithi bangabi ngaphezu kwe-10 abantu abasebenza naye ngesikhathi esisodwa. Uma udinga ama-20, sizokwethula i-pod yesibili enjalo. Sizoyihlanganisa ngokugcwele, ngemva kokuthola ivolumu yesibili egcwele, izoba nama-clone "amancane" angu-10 afanayo. Awuliboni leli thuba?

ДС: Sidinga ukungeza izinkinga zokuphepha lapha. Lolu hlobo lwenhlangano lusikisela ukuthi le pod inamalungelo aphezulu (amakhono), ngoba ingakwazi ukwenza imisebenzi engajwayelekile ohlelweni lwefayela... Kodwa ngiyaphinda: Ngikholelwa ukuthi esikhathini esimaphakathi bazolungisa isitoreji ku-Kubernetes, futhi amafu bazolungisa yonke indaba ngamavolumu - konke "kuzosebenza nje". Kuzoba nokushintsha usayizi, i-cloning... Kukhona ivolumu - sithi: "Yakha entsha ngokusekelwe kulokho," futhi ngemva kwesibili nesigamu sithola esikudingayo.

НС: Angikholelwa kusekhondi elilodwa nesigamu amaterabhayithi amaningi. KuCeph uyazenzela, kodwa ukhuluma ngamafu. Yiya efwini, yenza i-clone yevolumu ye-multi-terabyte EBS ku-EC2 futhi ubone ukuthi ukusebenza kuzoba yini. Ngeke kuthathe imizuzwana embalwa. Nginentshisekelo enkulu yokuthi bazofika nini kuleli zinga. Ngiyakuzwa okushoyo, kodwa ngicela ukwehluka.

ДС: Kulungile, kodwa ngithe esikhathini esimaphakathi, hhayi isikhathi esifushane. Iminyaka eminingana.

Mayelana nomsebenzisi we-PostgreSQL wase-Zalando

Maphakathi nalo mhlangano, u-Alexey Klyukin, owayengunjiniyela waseZalando, naye wajoyina futhi wakhuluma ngomlando we-opharetha ye-PostgreSQL:

Kuhle ukuthi lesi sihloko sithintwa ngokujwayelekile: kokubili i-Postgres ne-Kubernetes. Ngesikhathi siqala ukuyenza kuZalando ngo-2017, kwakuyisihloko wonke umuntu ayefuna ukusenza, kodwa akekho owakwenza. Wonke umuntu usevele ene-Kubernetes, kodwa lapho bebuza ukuthi benzeni ngemininingwane yolwazi, ngisho nabantu abathanda I-Kelsey Hightower, owashumayela ama-K8, washo into efana nalena:

“Hamba ezinsizeni eziphethwe futhi uzisebenzise, ​​ungasebenzisi i-database ku-Kubernetes. Uma kungenjalo, ama-K8 akho azonquma, ngokwesibonelo, ukwenza ngcono, ukuvala wonke ama-node, futhi idatha yakho izondizela kude, kude.

Sinqume ukwenza opharetha ukuthi, ngokuphambene nalesi seluleko, bazokwethula i-Postgres database e-Kubernetes. Futhi besinesizathu esihle - Patroni. Lokhu ukuhluleka okuzenzakalelayo kwe-PostgreSQL, okwenziwe kahle, i.e. usebenzisa i- etcd, i-consul noma i-ZooKeeper njengendawo yokugcina ulwazi mayelana neqoqo. Inqolobane enjalo ezonikeza wonke umuntu obuza, isibonelo, ukuthi uyini umholi wamanje, ulwazi olufanayo - naphezu kokuthi sinakho konke okusabalalisiwe - ukuze kungabikho ubuchopho obuhlukene. Ngaphezu kwalokho besinakho Isithombe se-Docker ngaye.

Ngokuvamile, isidingo senkampani se-auto failover sivele ngemva kokufuduka kusuka esikhungweni sedatha ye-hardware yangaphakathi kuya efwini. Ifu belisekelwe kusixazululo sobunikazi se-PaaS (Platform-as-a-Service). Ingumthombo ovulekile, kodwa kuthathe umsebenzi omningi ukuyivuselela futhi isebenze. Kwabizwa IZITHUBA.

Ekuqaleni, kwakungekho uKubernetes. Ngokunembayo, lapho isixazululo sethu sisetshenziswa, ama-K8 ayesevele ekhona, kodwa ayeluhlaza kangangokuthi ayengafanele ukukhiqizwa. Ngokubona kwami, bekuyi-2015 noma i-2016. Ngo-2017, u-Kubernetes wayesekhulile kakhulu—kwakunesidingo sokuthuthela lapho.

Futhi besivele sinesitsha se-Docker. Kwakukhona i-PaaS eyayisebenzisa i-Docker. Kungani ungazami ama-K8? Kungani ungabhali u-opharetha wakho? U-Murat Kabilov, owafika kithi evela e-Avito, waqala lokhu njengephrojekthi ngokusuka kwakhe - "ukudlala" - futhi iphrojekthi "yaqala."

Kodwa ngokuvamile, bengifuna ukukhuluma nge-AWS. Kungani bekukhona ikhodi yomlando ehlobene ne-AWS...

Uma usebenzisa okuthile ku-Kubernetes, udinga ukuqonda ukuthi ama-K8 umsebenzi onjalo oqhubekayo. Ikhula njalo, ithuthuka futhi ibhidlika ngezikhathi ezithile. Udinga ukubhekisisa zonke izinguquko ku-Kubernetes, udinga ukulungele ukucwila kukho uma kwenzeka okuthile futhi ufunde ukuthi kusebenza kanjani ngokuningiliziwe - mhlawumbe ngaphezu kwalokho ongathanda. Lokhu, empeleni, kusebenza kunoma iyiphi inkundla osebenzisa kuyo imininingwane yakho yolwazi...

Ngakho-ke, lapho senza isitatimende, sine-Postgres egijima kuvolumu yangaphandle (EBS kulokhu, njengoba sasisebenza ku-AWS). I-database yakhula, ngesikhathi esithile kwakudingeka ukuyishintsha kabusha: isibonelo, usayizi wokuqala we-EBS wawuyi-100 TB, i-database ikhule kuyo, manje sifuna ukwenza i-EBS 200 TB. Kanjani? Ake sithi ungenza ukulahla/ukubuyisela esimweni esisha, kodwa lokhu kuzothatha isikhathi eside futhi kubandakanya isikhathi sokuphumula.

Ngakho-ke, bengifuna usayizi omusha ozokhulisa ukwahlukanisa kwe-EBS bese utshela isistimu yefayela ukuthi isebenzise isikhala esisha. Futhi sikwenzile, kodwa ngaleso sikhathi u-Kubernetes wayengenayo i-API yomsebenzi wokushintsha usayizi. Njengoba sisebenze ku-AWS, sibhale ikhodi ye-API yayo.

Akekho okuvimbela ukuthi wenze okufanayo kwezinye izinkundla. Akukho ukusikisela esitatimendeni sokuthi ingaqhutshwa kuphela ku-AWS, futhi ngeke isebenze kukho konke okunye. Ngokuvamile, lena iphrojekthi yomthombo ovulekile: uma noma ubani efuna ukusheshisa ukuvela kokusetshenziswa kwe-API entsha, wamukelekile. Yidla GitHub, izicelo zokudonsa - ithimba le-Zalando lizama ukuziphendula ngokushesha futhi likhuthaze umsebenzisi. Ngokwazi kwami, iphrojekthi iqhaza ku-Google Summer of Code kanye nezinye izinhlelo ezifanayo. UZalando usebenza ngokukhulu ukushesha kukho.

PS Ibhonasi!

Uma unentshisekelo esihlokweni se-PostgreSQL ne-Kubernetes, sicela futhi uqaphele ukuthi i-Postgres elandelayo ngoLwesibili yenzeka ngesonto eledlule, lapho ngakhuluma khona no-Nikolai. Alexander Kukushkin kusukela Zalando. Ividiyo evela kuyo iyatholakala lapha.

I-PPS

Funda futhi kubhulogi yethu:

Source: www.habr.com

Engeza amazwana