Postgres ngoLwesibini No. 5: “PostgreSQL kunye Kubernetes. CI/CD. Uvavanyo oluzenzekelayo"

Postgres ngoLwesibini No. 5: “PostgreSQL kunye Kubernetes. CI/CD. Uvavanyo oluzenzekelayo"

Ekupheleni konyaka ophelileyo, olunye usasazo oluphilayo lwe-Russian PostgreSQL luluntu lwenzeka #RuPostgres, Ngexesha apho umququzeleli wakhe u-Nikolai Samokhvalov wathetha nomlawuli wezobuchwepheshe weFlant uDmitry Stolyarov malunga nale DBMS kumxholo weKubernetes.

Sipapasha umbhalo wenxalenye ephambili yale ngxoxo, kwaye kwi Ijelo likaYouTube loluntu Ividiyo epheleleyo ithunyelwe:

Iidatabase kunye neKubernetes

NS: Asizukuthetha ngeVACUUM kunye ne-CHECKPOINTs namhlanje. Sifuna ukuthetha ngeKubernetes. Ndiyazi ukuba uneminyaka emininzi yamava. Ndibukele iividiyo zakho kwaye ndaphinda ndabukela ezinye zazo ... Masiqonde ngqo kwinqanaba: kutheni i-Postgres okanye i-MySQL kwi-K8s kwaphela?

I-DS: Akukho kwaye ayinakuba nempendulo eqinisekileyo kulo mbuzo. Kodwa ngokubanzi, oku kulula kwaye kulula ... amandla. Wonke umntu ufuna iinkonzo ezilawulwayo.

NS:Njani I-RDS, kuphela ekhaya?

I-DS: Ewe: njenge-RDS, naphi na.

NS: “Naphi na” linqaku elilungileyo. Kwiinkampani ezinkulu, yonke into ibekwe kwiindawo ezahlukeneyo. Kutheni ke, ukuba yinkampani enkulu, ingathathi isisombululo esele senziwe? Ngokomzekelo, i-Nutanix inophuhliso lwayo, ezinye iinkampani (i-VMware...) zine "RDS efanayo, kuphela ekhaya."

I-DS: Kodwa sithetha ngokuphunyezwa okwahlukileyo okuza kusebenza kuphela phantsi kweemeko ezithile. Kwaye ukuba sithetha nge-Kubernetes, ke kukho iindidi ezininzi zeziseko zophuhliso (ezinokuba kwi-K8s). Okubalulekileyo ngumgangatho we-APIs kwilifu...

NS: Kwakhona simahla!

I-DS: Ayibalulekanga kangako. Inkululeko ibalulekile hayi icandelo elikhulu kakhulu lemarike. Enye into ebalulekileyo... Mhlawumbi uyayikhumbula ingxelo “Iidatabase kunye neKubernetes"?"

NS: Ewe.

I-DS: Ndaqaphela ukuba yamkelwe ngendlela engaqondakaliyo. Abanye abantu bacinga ukuba ndithi: "Madoda, masifumane zonke i-database kwi-Kubernetes!", Ngoxa abanye bagqiba ukuba zonke ezi zibhayisekile ezoyikekayo. Kodwa ndandifuna ukuthetha into eyahluke ngokupheleleyo: “Jonga into eyenzekayo, zeziphi iingxaki ezikhoyo nendlela ezinokuconjululwa ngayo. Ngaba kufuneka sisebenzise i-database ye-Kubernetes ngoku? Imveliso? Ewe, kuphela ukuba uyathanda...ukwenza izinto ezithile. Kodwa kwi-dev, ndingatsho ukuba ndiyincoma. Kwi-dev, amandla okudala / ukucima iimeko ezingqongileyo kubaluleke kakhulu. "

NS: Nge-dev, ngaba uthetha zonke iindawo ezisingqongileyo ezingeyomveliso? Ukwenza, QA...

I-DS: Ukuba sithetha malunga ne-perf stands, mhlawumbi akunjalo, kuba iimfuno zikhona. Ukuba sithetha ngeemeko ezikhethekileyo apho i-database enkulu kakhulu iyadingeka kwi-staging, mhlawumbi akunjalo ... Ukuba le ndawo i-static, ehlala ixesha elide, ngoko yintoni inzuzo yokuba nesiseko sedatha ebekwe kwi-K8s?

NS: Akukho. Kodwa sizibona phi iindawo ezisingqongileyo? Indawo engatshintshiyo izakuphelelwa ngomso.

I-DS: Ukuma kweqonga kunokuma. Sinabathengi...

NS: Ewe ndinayo nam. Yingxaki enkulu ukuba une-10 TB database kunye ne-200 GB staging...

I-DS: Ndinetyala elimnandi kakhulu! Kwiqonga kukho isiseko sedatha yemveliso apho utshintsho lwenziwa khona. Kwaye kukho iqhosha: "ukuphuma kwimveliso". Olu tshintsho - deltas - zongezwa (kubonakala ngathi zilungelelaniswa ngokulula nge-API) kwimveliso. Olu lukhetho olungaqhelekanga kakhulu.

NS: Ndibone ukuqalwa kwi-Valley ehleli kwi-RDS okanye nakwi-Heroku - la ngamabali ukusuka kwi-2-3 kwiminyaka eyadlulayo - kwaye bakhuphela ukulahla kwi-laptop yabo. Ngenxa yokuba i-database iseyi-80 GB kuphela, kwaye kukho indawo kwi-laptop. Emva koko bathenga iidiski ezongezelelweyo kumntu wonke ukuze babe neenkcukacha ezi-3 zokuqhuba uphuhliso oluhlukeneyo. Le yindlela okwenzeka ngayo kwakhona. Ndiphinde ndabona ukuba aboyiki ukukopa i-prod kwi-staging - kuxhomekeke kakhulu kwinkampani. Kodwa kwakhona ndabona ukuba boyika kakhulu, kwaye ngokufuthi abanalo ixesha elaneleyo nezandla. Kodwa ngaphambi kokuba siqhubele phambili kwesi sihloko, ndingathanda ukuva malunga neKubernetes. Ngaba ndiyaqonda ngokuchanekileyo ukuba akukho mntu ukwimveliso okwangoku?

I-DS: Sine-database encinci kwi-prod. Sithetha ngemiqulu yamashumi egigabytes kunye neenkonzo ezingabalulekanga apho sasivila kakhulu ukwenza ii-replicas (kwaye akukho mfuneko enjalo). Kwaye ngaphandle kokuba kukho ukugcinwa okuqhelekileyo phantsi kweKubernetes. Le database yasebenza kumatshini wenyani - ngokwemeko kwi-VMware, ngaphezulu kwenkqubo yokugcina. Sayibeka phakathi PV kwaye ngoku singayidlulisela kumatshini ukuya kumatshini.

NS: Iidatabase zolu bungakanani, ukuya kuthi ga kwi-100 GB, zinokukhutshwa ngemizuzu embalwa kwiidiski ezilungileyo kunye nenethiwekhi elungileyo, akunjalo? Isantya se-1 GB ngesekhondi asisekho exotic.

I-DS: Ewe, kusetyenziso lomgca akuyongxaki.

NS: Kulungile, kufuneka sicinge ngeprod. Kwaye ukuba sithathela ingqalelo iKubernetes yeendawo ezingezizo ezemveliso, kufuneka senze ntoni? Ndibona lonto eZalando yenza umsebenzisi, kwiCrunchy isarha, kukho ezinye iinketho. Kwaye kukho OnGres -Lo ngumhlobo wethu olungileyo uAlvaro waseSpain: into abayenzayo ayiyonto nje umqhubi, kunye nonikezelo lonke (StackGres), apho, ukongeza kwi-Postgres ngokwayo, baphinde bagqiba ekubeni bafake i-backup, i-Proxy yomthunywa...

I-DS: Mthunywa wantoni? Ukulinganisa i-Postgres traffic ngokukodwa?

NS: Ewe. Oko kukuthi, bayibona njenge: ukuba uthatha ukuhanjiswa kwe-Linux kunye ne-kernel, ngoko i-PostgreSQL eqhelekileyo yi-kernel, kwaye bafuna ukwenza usasazo oluya kuba lifu kwaye luqhube kwi-Kubernetes. Badibanisa amacandelo (ii-backups, njl.) kwaye balungise ukuze basebenze kakuhle.

I-DS: Phole kakhulu! Ngokusisiseko le yisoftware yokwenza eyakho iPostgres elawulwayo.

NS: Unikezelo lwe-Linux luneengxaki ezingunaphakade: indlela yokwenza abaqhubi ukuze zonke izixhobo zixhaswe. Kwaye banombono wokuba baya kusebenza eKubernetes. Ndiyazi ukuba kumqhubi weZalando sisanda kubona uqhagamshelo kwi-AWS kwaye oku akusalunganga. Akufuneki kubekho iqhina kwiziseko ezingundoqo ezithile - yintoni ingongoma ke ngoko?

I-DS: Andazi kakuhle ukuba yeyiphi imeko uZalando angena kuyo, kodwa kwi-Kubernetes yokugcina ngoku yenziwe ngendlela yokuba akunakwenzeka ukuthatha i-backup yediski usebenzisa indlela yegeneric. Kutshanje kumgangatho - kwinguqulelo yamva nje Iimpawu zeCSI - senze i-snapshots, kodwa iphunyezwa phi? Ukunyaniseka, yonke into iseluhlaza kakhulu ... Sizama i-CSI phezulu kwe-AWS, i-GCE, i-Azure, i-vSphere, kodwa ngokukhawuleza xa uqala ukuyisebenzisa, unokubona ukuba ayikalungi.

NS: Yiyo loo nto ngamanye amaxesha kufuneka sithembele kwiziseko ezingundoqo. Ndicinga ukuba oku kusekwinqanaba lokuqala - iintlungu ezikhulayo. Umbuzo: Leliphi icebiso onokuthi ulinike abaqalayo abafuna ukuzama i-PgSQL kwii-K8s? Ngowuphi umqhubi mhlawumbi?

I-DS: Ingxaki kukuba iPostgres yi-3% kuthi. Sikwanalo noluhlu olukhulu kakhulu lwesoftware eyahlukileyo eKubernetes, andizukudwelisa yonke into. Umzekelo, i-Elasticsearch. Baninzi abaqhubi: abanye baphuhlisa ngokusebenzayo, abanye abekho. Sizicwangcisele iimfuno zethu malunga noko kufuneka umqhubi abe nakho ukuze sikuthathele ingqalelo. Kumsebenzi okhethekileyo we-Kubernetes - hayi "kwi-opharetha yokwenza into kwiimeko ze-Amazon"... Enyanisweni, ngokubanzi (= phantse bonke abathengi) sisebenzisa umqhubi omnye - yeRedis (siya kupapasha inqaku malunga naye kungekudala).

NS: Kwaye hayi kuMySQL nokuba? Ndiyazi ukuba i-Percona ... ekubeni ngoku basebenza kwi-MySQL, i-MongoDB, kunye ne-Postgres, kuya kufuneka benze uhlobo oluthile lwesisombululo sendalo yonke: kuzo zonke iinkcukacha zolwazi, kubo bonke ababoneleli befu.

I-DS: Asizange sibe nexesha lokujonga abaqhubi be-MySQL. Le ayisiyiyo eyona nto sigxile kuyo ngoku. I-MySQL isebenza kakuhle ngokuzimeleyo. Kutheni usebenzisa umqhubi ukuba unokuqalisa nje isiseko sedatha... Ungaqalisa isitya seDocker ngePostrges, okanye ungayisungula ngendlela elula.

NS: Bekukho umbuzo ngale nto. Akukho mqhubi kwaphela?

I-DS: Ewe, i-100% yethu i-PostgreSQL isebenza ngaphandle komsebenzisi. Ukuza kuthi ga ngoku. Sisebenzisa ngokusebenzayo umqhubi wePrometheus kunye neRedis. Sinezicwangciso zokufumana umqhubi we-Elasticsearch - yeyona nto "evuthayo", kuba sifuna ukuyifaka e-Kubernetes kwi-100% yamatyala. Kanye njengoko sifuna ukuqinisekisa ukuba iMongoDB isoloko ifakwe kwi-Kubernetes. Apha iminqweno ethile ibonakala - kukho imvakalelo yokuba kule meko into enokwenziwa. Kwaye asizange sijonge nakwiPostgres. Ewe, siyazi ukuba kukho iindlela ezahlukeneyo zokukhetha, kodwa eneneni sinokuzimela.

DB yokuvavanya eKubernetes

NS: Masiqhubele phambili kwisihloko sovavanyo. Indlela yokukhupha utshintsho kwisiseko sedatha - ukusuka kwimbono ye-DevOps. Kukho ii-microservices, ezininzi i-database, into eguqukayo kwindawo ethile ngamaxesha onke. Indlela yokuqinisekisa i-CI / CD eqhelekileyo ukwenzela ukuba yonke into ilungelelanise ukusuka kumbono we-DBMS. Ithini indlela yakho?

I-DS: Akunakuba nempendulo enye. Kukho iindlela ezininzi onokukhetha kuzo. Eyokuqala bubungakanani besiseko esifuna ukusikhupha. Wena ngokwakho ukhankanye ukuba iinkampani zineemo zengqondo ezahlukeneyo malunga nokuba nekopi yedatha yeprod kwi-dev kunye neqonga.

NS: Kwaye phantsi kweemeko ze-GDPR, ndicinga ukuba baqaphela ngakumbi nangakumbi ... Ndiyakwazi ukuthetha ukuba eYurophu sele beqalile ukunyanzelisa iintlawulo.

I-DS: Kodwa rhoqo ungabhala isoftwe ethatha indawo yokulahla kwimveliso kwaye uyibethelele. Idatha yemveliso ifunyenwe (i-snapshot, ukulahla, ikopi yokubini ...), kodwa ayaziwa. Endaweni yoko, kunokubakho izikripthi zesizukulwana: ezi zinokulungiswa okanye iskripthi nje esenza isiseko sedatha enkulu. Ingxaki kukuba: kuthatha ixesha elingakanani ukwenza umfanekiso osisiseko? Kwaye kuthatha ixesha elingakanani ukuyibeka kwindawo oyifunayo?

Siye safika kwisikimu: ukuba umxhasi uneseti yedatha esisigxina (uguqulelo oluncinci lwesiseko sedatha), ngoko sizisebenzisa ngokungagqibekanga. Ukuba sithetha ngeendawo zokuphonononga, xa sakha isebe, sasebenzisa umzekelo wesicelo - sikhupha i-database encinci apho. Kodwa kwavela kakuhle ukhetho, xa sithatha ukulahla kwimveliso kanye ngosuku (ebusuku) kwaye sakha isitya se-Docker kunye ne-PostgreSQL kunye ne-MySQL kunye nale datha elayishiwe ngokusekelwe kuyo. Ukuba ufuna ukwandisa isiseko sedatha amaxesha angama-50 kulo mfanekiso, oku kwenziwa ngokulula kwaye ngokukhawuleza.

NS: Ngokukopa nje?

I-DS: Idatha igcinwe ngokuthe ngqo kumfanekiso weDocker. Ezo. Sinomfanekiso osele ulungile, nangona i-100 GB. Enkosi kumaleko kwi-Docker, sinokuthumela lo mfanekiso ngokukhawuleza kangangoko sifuna. Indlela iyisiphukuphuku, kodwa isebenza kakuhle.

NS: Ke, xa uvavanya, itshintsha kanye ngaphakathi kwiDocker, akunjalo? Khuphela-ubhale ngaphakathi kwiDocker-yilahle kwaye uhambe kwakhona, yonke into ilungile. Iklasi! Kwaye ngaba sele uyisebenzisa ngokupheleleyo?

I-DS: Ixesha elide.

NS: Senza izinto ezifanayo kakhulu. Kuphela asisebenzisi ikopi yokubhala kaDocker, kodwa enye enye.

I-DS: Ayiyogeneric. Kwaye iDocker isebenza kuyo yonke indawo.

NS: Ngokwengcamango, ewe. Kodwa sinazo iimodyuli apho, unokwenza iimodyuli ezahlukeneyo kwaye usebenze ngeenkqubo ezahlukeneyo zefayile. Yintoni umzuzwana apha. Ukusuka kwicala le-Postgres, sijonga yonke le nto ngokwahlukileyo. Ngoku ndijonge kwicala leDocker kwaye ndabona ukuba yonke into iyakusebenzela. Kodwa ukuba i-database inkulu, umzekelo, i-TB eyi-1, ngoko konke oku kuthatha ixesha elide: ukusebenza ebusuku, kunye nokufaka yonke into kwi-Docker ... Kwaye ukuba i-TB ye-5 ifakwe kwi-Docker ... Okanye yonke into ilungile?

I-DS: Uthini umahluko: la ngamablobho, amasuntswana nje kunye neebhayithi.

NS: Umahluko ngulo: ngaba uyenza ngokulahla nokubuyisela?

I-DS: Akuyomfuneko kwaphela. Iindlela zokuvelisa lo mfanekiso zinokuhluka.

NS: Kwabanye abathengi, siyenzele ukuba endaweni yokuvelisa rhoqo umfanekiso osisiseko, sihlala siwugcina usexesheni. Ngokwesiseko yikopi, kodwa ayifumani idatha kwinkosi ngokuthe ngqo, kodwa ngogcino. Uvimba webhayinari apho ii-WAL zikhutshelwa khona yonke imihla, apho zithathwa khona ii-backups... Ezi WAL ke zifike kumfanekiso osisiseko ngokulibaziseka okuncinci (ngokoqobo 1-2 imizuzwana). Sidibanisa kuyo nangayiphi na indlela-ngoku sineZFS ngokungagqibekanga.

I-DS: Kodwa ngeZFS ukhawulelwe kwindawo enye.

NS: Ewe. Kodwa iZFS nayo inomlingo thumela: ngayo ungathumela i-snapshot kwaye nokuba (andikayivavanyi le nto, kodwa...) ungathumela i-delta phakathi kwezimbini. PGDATA. Ngapha koko, sinesinye isixhobo esingakhange sisiqwalasele ngokwenyani kwimisebenzi enjalo. I-PostgreSQL ine pg_rewind, esebenza njenge-rsync "smart", ukunqumla into eninzi ongayi kuyibukela, kuba akukho nto itshintshileyo apho. Sinokwenza ungqamaniso olukhawulezayo phakathi kweeseva ezimbini kwaye sibuyisele umva ngendlela efanayo.

Ke, ukusuka kweli, icala le-DBA elingaphezulu, sizama ukwenza isixhobo esivumela ukuba senze into enye oyithethileyo: sinesiseko sedatha enye, kodwa sifuna ukuvavanya into ngamaxesha angama-50, phantse ngaxeshanye.

I-DS: Amaxesha angama-50 athetha ukuba kufuneka u-odole iimeko ezingama-50 zeSpot.

NS: Hayi, senza yonke into kumatshini omnye.

I-DS: Kodwa ungawandisa njani amaxesha angama-50 ukuba le database inye, yithi, terabyte. Mhlawumbi ufuna i-256 GB ye-RAM enemeko?

NS: Ewe, ngamanye amaxesha ufuna inkumbulo eninzi - yinto eqhelekileyo leyo. Kodwa lo ngumzekelo wobomi. Umatshini wokuvelisa unama-cores angama-96 kunye ne-600 GB. Ngexesha elifanayo, ii-cores ze-32 (nangona i-16 cores ngoku ngamanye amaxesha) kunye ne-100-120 GB yememori isetyenziselwa i-database.

I-DS: Kwaye iikopi ezingama-50 zingena apho?

NS: Ngoko kukho ikopi enye kuphela, emva koko ikopi-on-write (ZFS) isebenza ... Ndiza kukuxelela ngokubanzi.

Umzekelo, sine-database ye-TB ye-10. Bayenzela idiski, iZFS nayo yacinezela ubukhulu bayo ngama-30-40 ekhulwini. Ekubeni singenzi uvavanyo lomthwalo, ixesha elichanekileyo lokuphendula alibalulekanga kuthi: makube ngamaxesha e-2 ngokukhawuleza - kulungile.

Sinika ithuba abadwelisi benkqubo, i-QA, i-DBA, njl. yenza uvavanyo kwimisonto eyi-1-2. Umzekelo, banokuqhuba uhlobo oluthile lokufuduka. Ayifuni i-10 cores kanye - idinga i-1 Postgres backend, i-1 core. Ukufuduka kuya kuqala - mhlawumbi i-autovacuum isazakuqala, emva koko undoqo wesibini uzakusetyenziswa. Sine-16-32 cores eyabelwe, ngoko ke abantu abayi-10 banokusebenza ngexesha elifanayo, akukho ngxaki.

Kuba ngokwasemzimbeni PGDATA okufanayo, kuvela ukuba ngokwenene siyabakhohlisa Postgres. Ubuqhetseba bubu: umzekelo, i-10 Postgres iqaliswe ngaxeshanye. Idla ngokuba yintoni ingxaki? Babeka ekwabelwana_nezithinteli, masithi ngama-25%. Ngokufanelekileyo, le yi-200 GB. Awuyi kukwazi ukuzisa ngaphezulu kwesithathu kwezi, kuba imemori iya kuphelelwa.

Kodwa ngaxa lithile siye sabona ukuba oku akuyomfuneko: sabeka i-shared_buffers ukuya kwi-2 GB. I-PostgreSQL ine esebenzayo_cache_size, yaye eneneni kuphela kwempembelelo izicwangciso. Siyibeke kwi-0,5 TB. Kwaye akukhathaliseki nokuba azikho ngokwenene: wenza izicwangciso ngokungathi zikho.

Ngokufanelekileyo, xa sivavanya uhlobo oluthile lokufuduka, sinokuqokelela zonke izicwangciso - siya kubona ukuba kuya kwenzeka njani kwimveliso. Imizuzwana kuya kubakho eyahlukileyo (kancinci), kodwa idatha esiyifunde ngokwenene, kunye nezicwangciso ngokwazo (yintoni i-JOINs ekhoyo, njl. Kwaye ungaqhuba iitshekhi ezininzi ezinje ngokunxuseneyo kumatshini omnye.

I-DS: Awucingi ukuba kukho iingxaki ezimbalwa apha? Eyokuqala sisisombululo esisebenza kuphela kwi-PostgreSQL. Le ndlela ibucala kakhulu, ayenzi generic. Okwesibini kukuba i-Kubernetes (kunye nayo yonke into eyenziwa yi-technologies yamafu ngoku) ibandakanya iindawo ezininzi, kwaye ezi ngqungquthela ziyi-ephemeral. Kwaye kwimeko yakho yimeko, i-node eqhubekayo. Ezi zinto zindenza ndixabane.

NS: Okokuqala, ndiyavuma, eli libali le-Postgres kuphela. Ndicinga ukuba sinolunye uhlobo lwe-IO oluthe ngqo kunye ne-buffer pool malunga nayo yonke imemori, le ndlela ayiyi kusebenza - izicwangciso ziya kwahluka. Kodwa okwangoku sisebenza kuphela nePostgres, asicingi ngabanye.

Malunga neKubernetes. Wena ngokwakho usixelela yonke indawo ukuba sinesiseko sedatha esizingisileyo. Ukuba umzekelo uyasilela, into ephambili kukugcina idiski. Apha sikwanalo lonke iqonga e-Kubernetes, kwaye icandelo kunye ne-Postgres lihlukile (nangona liya kuba khona ngenye imini). Ngoko ke, yonke into inje: umzekelo wawa, kodwa sagcina i-PV yayo kwaye siyidibanisa nje komnye (omtsha) umzekelo, ngokungathi akukho nto yenzekileyo.

I-DS: Ngokombono wam, senza iipods kwi-Kubernetes. K8s - elastiki: amaqhina acwangciswa njengoko kufuneka. Umsebenzi kukwenza ngokulula i-pod kwaye uthi ifuna isixa se-X semithombo, kwaye emva koko ii-K8 ziyakuzibala ngokwazo. Kodwa inkxaso yokugcina kwi-Kubernetes ayikazinzanga: 1.16ngaphakathi 1.17 (oku kukhululwa kwakhululwa engabikho ago) ezi mpawu ziba yi-beta kuphela.

Iinyanga ezintandathu ukuya kunyaka ziya kudlula - iya kuzinza ngakumbi okanye ngaphantsi, okanye ubuncinane iya kubhengezwa ngolo hlobo. Emva koko ukubakho kweesnapshots kunye nobungakanani bobungakanani kwakhona kusombulula ingxaki yakho ngokupheleleyo. Kuba unesiseko. Ewe, akunakukhawuleza kakhulu, kodwa isantya sixhomekeke kwinto "phantsi kwe-hood", kuba ezinye izinto eziphunyezwayo zinokukopisha kunye nokubhala-ngokubhala kwinqanaba le-disk subsystem.

NS: Kukwayimfuneko ukuba zonke iinjini (i-Amazon, iGoogle ...) ziqale ukuxhasa le nguqulo - oku kuthatha ixesha elithile.

I-DS: Asizisebenzisi okwangoku. Sisebenzisa eyethu.

Uphuhliso lwasekhaya lweKubernetes

NS: Ngaba uye wadibana nomnqweno onjalo xa ufuna ukufaka zonke iipod kumatshini omnye kwaye wenze uvavanyo oluncinci olunjalo. Ukufumana ngokukhawuleza ubungqina bengcamango, jonga ukuba isicelo siqhuba kwi-Kubernetes, ngaphandle kokunikezela iqela loomatshini kulo. Ukhona uMinikube, akunjalo?

I-DS: Kubonakala kum ukuba eli tyala - lisetyenziswe kwindawo enye - lilodwa malunga nophuhliso lwendawo. Okanye ezinye izibonakaliso zepateni enjalo. Yitya IMinikube, Nantsi lapho Ii-k3s, KIND. Sijonge phambili ekusebenziseni iKubernetes IN Docker. Ngoku saqala ukusebenza nayo kwiimvavanyo.

NS: Bendihlala ndicinga ukuba le yayilinge lokusonga zonke iipod kumfanekiso weDocker enye. Kodwa kwavela ukuba oku malunga nento eyahlukileyo ngokupheleleyo. Ngapha koko, kukho izikhongozeli ezahlukeneyo, iipods ezahlukeneyo-eDocker nje.

I-DS: Ewe. Kwaye kukho ukulinganisa okuhlekisayo okwenziweyo, kodwa intsingiselo yile... Sinento eluncedo yokusasaza - i-werf. Sifuna ukuyenza imo enemiqathango werf up: “Ndifumanele iKubernetes yalapha.” Uze uqhube imiqathango apho werf follow. Emva koko umphuhlisi uya kukwazi ukuhlela i-IDE, kwaye inkqubo iya kuqaliswa kwinkqubo ebona utshintsho kwaye iphinde yakhe imifanekiso, iphinde isetyenziswe kwii-K8 zendawo. Le yindlela esifuna ukuzama ngayo ukusombulula ingxaki yophuhliso lwasekhaya.

Izifinyezo kunye nokufakwa kwedatha yedatha kwinyani ye-K8s

NS: Ukuba sibuyela kwikopi-ngokubhala. Ndiqaphele ukuba amafu nawo anesnapshots. Basebenza ngokwahlukileyo. Umzekelo, kwi-GCP: unomzekelo we-multi-terabyte kunxweme olusempuma lwe-United States. Uthatha izifinyezo ngamaxesha athile. Uthabatha ikopi yediski kunxweme olusentshonalanga kwi-snapshot - kwimizuzu embalwa yonke into ilungile, isebenza ngokukhawuleza, kuphela i-cache kufuneka izaliswe kwimemori. Kodwa ezi clones (i-snapshots) zenzelwe 'ukubonelela' umthamo omtsha. Oku kupholile xa ufuna ukudala iimeko ezininzi.

Kodwa kwiimvavanyo, kubonakala kum ukuba i-snapshots, othetha ngayo kwi-Docker okanye ndithetha ngayo kwi-ZFS, i-btrfs kunye ne-LVM ... - zikuvumela ukuba ungenzi idatha entsha ngokwenene kumatshini omnye. Efini, uya kubahlawula ngalo lonke ixesha kwaye ungalindi imizuzwana, kodwa imizuzu (kwaye kwimeko umthwalo wonqena, mhlawumbi iwotshi).

Endaweni yoko, unokufumana le datha kwisibini okanye ezimbini, qhuba uvavanyo kwaye uyilahle. Ezi zifinyezo zixazulula iingxaki ezahlukeneyo. Kwimeko yokuqala - ukunyusa kwaye ufumane ii-replicas ezintsha, kwaye okwesibini - kwiimvavanyo.

I-DS: Andivumi. Ukwenza i-volume cloning isebenze ngokufanelekileyo ngumsebenzi welifu. Khange ndijonge ukuphunyezwa kwabo, kodwa ndiyazi ukuba siyenza njani kwihardware. SineCeph, ivumela nayiphi na ivolumu yomzimba (RBD) utsho Clone kwaye ufumane ivolumu yesibini eneempawu ezifanayo kumashumi eemillisecond, IOPS'am, njl. Kuya kufuneka uqonde ukuba kukho ikopi ekhohlisayo yokubhala ngaphakathi. Kutheni ilifu lingenzi okufanayo? Ndiqinisekile ukuba bazama ukwenza oku ngenye indlela.

NS: Kodwa kuzakubathatha imizuzwana, amashumi emizuzwana ukuphakamisa umzekelo, ukuzisa iDocker apho, njl.

I-DS: Kutheni kuyimfuneko ukuphakamisa umzekelo wonke? Sinomzekelo onama-cores angama-32, i-16 ... kwaye inokungena kuyo - umzekelo, ezine. Xa si-odola eyesihlanu, umzekelo uya kube sele uphakanyisiwe, kwaye emva koko uya kususwa.

NS: Ewe, umdla, uKubernetes ujika abe libali elahlukileyo. Idatabase yethu ayikho kwii-K8s, kwaye sinomzekelo omnye. Kodwa ukwenza i-database ye-multi-terabyte ayithathi ngaphezu kwemizuzwana emibini.

I-DS: Oku kakuhle. Kodwa inqaku lam lokuqala kukuba esi ayisosisombululo segeneric. Ewe, ipholile, kodwa ifanelekile kuphela kwi-Postgres kwaye kuphela kwindawo enye.

NS: Ayifanelekanga kuphela kwi-Postgres: ezi zicwangciso, njengoko ndichaze, ziya kusebenza kuphela kuyo. Kodwa ukuba asizikhathazi malunga nezicwangciso, kwaye sifuna nje yonke idatha yokuvavanya okusebenzayo, ngoko oku kulungele nayiphi na i-DBMS.

I-DS: Kwiminyaka emininzi eyadlulayo senze into efanayo kwiisnapshots zeLVM. Le yiklasikhi. Le ndlela isetyenziswa kakhulu. Amaqhuqhuva esizwe ziintlungu nje. Ngenxa yokuba akufanele uzilahle, kufuneka uhlale uzikhumbula ...

NS: Ngaba uyayibona into yokuba kukho umhlanganiselwa apha? Masithi i-stateful luhlobo oluthile lwepod, lusebenza kubantu abaninzi (abavavanyi abaninzi). Sinomthamo omnye, kodwa ngenxa yenkqubo yefayile, iiclones zezasekhaya. Ukuba i-pod iyawa, kodwa idiski ihleli, i-pod iya kunyuka, ibale ulwazi malunga nazo zonke ii-clones, ithathe yonke into kwakhona kwaye ithi: "Nazi ii-clones zakho ziqhuba kula mazibuko, qhubeka usebenza nazo."

I-DS: Ngobuchwephesha oku kuthetha ukuba ngaphakathi kwe-Kubernetes yipod enye apho siqhuba iiPostgres ezininzi.

NS: Ewe. Unomda: masithi akukho ngaphezu kwe-10 abantu abasebenza naye ngexesha elinye. Ukuba ufuna i-20, siya kusungula i-pod yesibini enjalo. Siya kuyidibanisa ngokupheleleyo, xa sifumene ivolumu epheleleyo yesibini, iya kuba ne-clones "encinci" efanayo ye-10. Awuliboni eli thuba?

I-DS: Kufuneka songeze imiba yokhuseleko apha. Olu hlobo lombutho luthetha ukuba le pod inamalungelo aphezulu (amandla), kuba iyakwazi ukwenza imisebenzi engekho-standard kwinkqubo yefayile ... Kodwa ndiyaphinda: Ndiyakholelwa ukuba kwixesha eliphakathi baya kulungisa ukugcinwa kwi-Kubernetes, kwaye amafu baya kulungisa lonke ibali kunye nemiqulu - yonke into iya "kusebenza nje". Kuya kubakho ubungakanani, i-cloning ... Kukho umthamo - sithi: "Yenza entsha ngokusekelwe kuloo nto," kwaye emva kwesibini kunye nesiqingatha sifumana into esiyidingayo.

NS: Andikholelwa kwimizuzwana enye enesiqingatha kwiiterabytes ezininzi. KuCeph uyayenza ngokwakho, kodwa uthetha ngamafu. Yiya efini, yenza i-clone yevolumu ye-EBS ye-multi-terabyte kwi-EC2 kwaye ubone ukuba kuya kuba yintoni ukusebenza. Ayizukuthatha imizuzwana embalwa. Ndinomdla kakhulu xa bayakufika kweli nqanaba. Ndiyayiqonda le nto uyithethayo, kodwa ndicela ukwahluka.

I-DS: Ok, kodwa ndithe ngexesha eliphakathi, hayi ixesha elifutshane. Kangangeminyaka eliqela.

Malunga nomsebenzisi wePostgreSQL osuka eZalando

Embindini wale ntlanganiso, u-Alexey Klyukin, owayengumphuhlisi waseZalando, naye wajoyina kwaye wathetha ngembali yomsebenzisi wePostgreSQL:

Kuhle ukuba esi sihloko sichukunyiswe ngokubanzi: zombini iiPostgres kunye neKubernetes. Ukuqala kwethu ukuyenza eZalando ngo-2017, yayiyisihloko esasifunwa ngumntu wonke, kodwa akukho mntu wenzayo. Wonke umntu sele enayo i-Kubernetes, kodwa xa bebuza ukuba benze ntoni nge-database, nabantu abathanda Kelsey Hightower, owayeshumayela iiK8, wathetha into efana nale:

“Yiya kwiinkonzo ezilawulwayo kwaye uzisebenzise, ​​musa ukuqhuba idatabase eKubernetes. Ngaphandle koko, ii-K8s zakho ziya kuthatha isigqibo, umzekelo, ukwenza uphuculo, cima zonke iindawo, kwaye idatha yakho iya kubhabhela kude, kude.

Sagqiba ekubeni senze umqhubi ukuba, ngokuchasene nale ngcebiso, uya kuqalisa i-Postgres database kwi-Kubernetes. Kwaye sasinesizathu esihle- uPatroni. Le yi-failover ezenzekelayo ye-PostgreSQL, eyenziwe ngokuchanekileyo, okt. usebenzisa etcd, consul okanye ZooKeeper njengendawo yokugcina ulwazi malunga neqela. I-repository enjalo eya kunika wonke umntu obuzayo, umzekelo, yintoni inkokeli yangoku, ulwazi olufanayo - nangona sinayo yonke into esasazwayo - ukwenzela ukuba kungabikho ubuchopho obuhlukeneyo. Ngaphezu koko besinako Umfanekiso weDocker ukwenzela yena.

Ngokubanzi, imfuno yenkampani ye-auto failover yabonakala emva kokufuduka kwiziko ledatha ye-hardware yangaphakathi ukuya efini. Ilifu lalisekelwe kwisisombululo se-PaaS (i-Platform-as-a-Service). NguMthombo oVulekileyo, kodwa kwathatha umsebenzi omninzi ukuwuphakamisa kwaye usebenze. Kwabizwa IZIXHOBO.

Ekuqaleni, kwakungekho Kubernetes. Ngokuchanekileyo, xa isisombululo sethu sasisetyenzisiwe, ii-K8 zazisele zikhona, kodwa zazikrwada kangangokuba zazingafanelekanga ukuveliswa. Kwakunjalo, ngokombono wam, i-2015 okanye i-2016. Ngo-2017, u-Kubernetes wayesele ekhulile okanye engaphantsi-kwakukho isidingo sokufudukela apho.

Kwaye sasisele sinaso isikhongozeli seDocker. Kwakukho iPaaS eyayisebenzisa iDocker. Kutheni ungazami ii-K8s? Kutheni ungabhali eyakho indlela? U-Murat Kabilov, oweza kuthi evela e-Avito, waqala oku njengeprojekthi ngokwakhe - "ukudlala" - kunye neprojekthi "yahamba."

Kodwa ngokubanzi, bendifuna ukuthetha nge-AWS. Kutheni bekukho ikhowudi enxulumene ne-AWS yembali...

Xa uqhuba into kwi-Kubernetes, kufuneka uqonde ukuba ii-K8s ngumsebenzi oqhubekayo. Ihlala iphuhlisa, iphucula kwaye iphinde iphuke ngamaxesha athile. Kuya kufuneka ubeke iliso elibukhali kulo lonke utshintsho kwi-Kubernetes, kufuneka ulungele ukuntywila kuyo ukuba kukho into eyenzekayo kwaye ufunde indlela esebenza ngayo ngokweenkcukacha - mhlawumbi ngaphezulu kunokuba ungathanda. Oku, ngokomgaqo, kusebenza kulo naliphi na iqonga osebenzisa kulo ugcino-lwazi lwakho...

Ngoko ke, xa senze isitatimende, sinePostgres eqhuba kwivolumu yangaphandle (EBS kule meko, ekubeni sasisebenza kwi-AWS). I-database yanda, ngexesha elithile kwakuyimfuneko ukuyibuyisela kwakhona: umzekelo, ubukhulu bokuqala be-EBS yayiyi-100 TB, i-database yanda kuyo, ngoku sifuna ukwenza i-EBS 200 TB. Njani? Masithi unokwenza ukulahla / ukubuyisela kwimeko entsha, kodwa oku kuya kuthatha ixesha elide kwaye kubandakanya ixesha lokuphumla.

Ke ngoko, bendifuna ubungakanani bomlinganiselo oza kwandisa isahlulelo se-EBS kwaye emva koko uxelele inkqubo yefayile ukuba isebenzise indawo entsha. Kwaye siyenzile, kodwa ngelo xesha u-Kubernetes wayengenayo i-API yokusebenza ngokutsha. Ekubeni sisebenze kwi-AWS, sabhala ikhowudi ye-API yayo.

Akukho mntu ukunqandayo ukuba wenze okufanayo kwamanye amaqonga. Akukho ngcebiso kwingxelo yokuba inokuqhutywa kuphela kwi-AWS, kwaye ayizukusebenza kuyo yonke enye into. Ngokubanzi, le yiprojekthi yoMthombo oVulekileyo: ukuba nabani na ufuna ukukhawuleza ukuvela kokusetyenziswa kwe-API entsha, wamkelekile. Yitya GitHub, ukutsala izicelo - iqela leZalando lizama ukuphendula kubo ngokukhawuleza kwaye likhuthaze umqhubi. Ngokwazi kwam, iprojekthi uthathe inxaxheba kwiHlobo likaGoogle leKhowudi kunye namanye amanyathelo afanayo. UZalando usebenza kakhulu kuyo.

PS Ibhonasi!

Ukuba unomdla kwisihloko sePostgreSQL kunye neKubernetes, ke nceda uqaphele ukuba i-Postgres elandelayo ngoLwesibini yenzeka kwiveki ephelileyo, apho ndathetha noNikolai. Alexander Kukushkin evela Zalando. Ividiyo evela kuyo iyafumaneka apha.

Iipps

Funda nakwibhlog yethu:

umthombo: www.habr.com

Yongeza izimvo