Postgres Chipiri Nhamba 5: "PostgreSQL uye Kubernetes. CI/CD. Test otomatiki"

Postgres Chipiri Nhamba 5: "PostgreSQL uye Kubernetes. CI/CD. Test otomatiki"

Pakupera kwegore rapfuura, imwe nhepfenyuro yepamoyo yeRussia PostgreSQL nharaunda yakaitika #RuPostgres, Panguva iyo mubatanidzwa wayo Nikolai Samokhvalov akataura naFlant technical director Dmitry Stolyarov nezveiyi DBMS mumamiriro eKubernetes.

Tiri kuburitsa chinyorwa chechikamu chikuru chenhaurirano iyi, uye pa Nharaunda YouTube chiteshi Vhidhiyo yakazara yakatumirwa:

Databases uye Kubernetes

НС: Hatisi kuzotaura nezve VACUUM neCHECKPOINTs nhasi. Tinoda kutaura nezve Kubernetes. Ndinoziva kuti une makore akawanda eruzivo. Ndakatarisa mavhidhiyo ako uye ndakatoona zvakare mamwe acho ... Ngatitorei takananga kune iyo pfungwa: nei Postgres kana MySQL muK8s zvachose?

ДС: Hapana uye haigone kuve nemhinduro chaiyo kumubvunzo uyu. Asi kazhinji, izvi zviri nyore uye zviri nyore ... zvinogona. Wese munhu anoda masevhisi anotariswa.

НС: Kuti sei RDS, kumba chete?

ДС: Ehe: senge RDS, chero kupi.

НС: "Kwese" ipfungwa yakanaka. Mumakambani makuru, zvinhu zvose zviri munzvimbo dzakasiyana. Sei zvino, kana iri kambani hombe, isingatore yakagadzirira-yakagadziriswa mhinduro? Semuenzaniso, Nutanix ine zvigadziriso zvayo, mamwe makambani (VMware ...) ane "RDS" yakafanana, kumba chete.

ДС: Asi isu tiri kutaura nezve yakaparadzana kuita iyo inongoshanda mune mamwe mamiriro. Uye kana isu tichitaura nezve Kubernetes, saka pane yakakura siyana yezvivakwa (inogona kunge iri muK8s). Chaizvoizvo iyi ndiyo chiyero che APIs kune gore...

НС: Zvakare mahara!

ДС: Hazvina kunyanya kukosha. Rusununguko rwakakosha kune kwete chikamu chikuru chemusika. Chimwezve chinhu chakakosha... Unogona kurangarira mushumo wacho “Databases uye Kubernetes"?"

НС: Ehe.

ДС: Ndakaona kuti yakagamuchirwa zvisinganzwisisike. Vamwe vanhu vakafunga kuti ndanga ndichiti: "Varume, ngatitorei madhatabhesi ese muKubernetes!", Asi vamwe vakafunga kuti aya aive mabhasikoro anotyisa. Asi ndaida kutaura chimwe chinhu chakasiyana zvachose: “Ona zviri kuitika, matambudziko api aripo uye kuti angapedzwa sei. Tinofanira kushandisa Kubernetes dhatabhesi izvozvi? Kugadzirwa? Zvakanaka, chete kana iwe uchida ... kuita zvimwe zvinhu. Asi kune dev, ndinogona kutaura kuti ndinoikurudzira. Kune dev, simba rekugadzira / kudzima nharaunda rakakosha zvakanyanya. "

NS: Ne dev, unoreva nharaunda dzese dzisiri prod? Kutanga, QA…

ДС: Kana isu tichitaura nezve perf stands, saka pamwe kwete, nekuti izvo zvinodiwa zviripo zvakanangana. Kana isu tichitaura nezvezviitiko zvakakosha apo dhatabhesi yakakura kwazvo inodiwa pakugadzirisa, saka pamwe kwete ... Kana iyi inzvimbo yakamira, yakagara kwenguva refu, zvino chii chinobatsira chekuve nedatabase iri muK8s?

НС: Hapana. Asi ndekupi kwatinoona nzvimbo dzakasimba? Nzvimbo yakadzikama ichave isingachashandi mangwana.

ДС: Staging inogona kumira. Tine vatengi...

НС: Hongu, ndinewo imwe. Idambudziko hombe kana uine gumi TB dhatabhesi uye 10 GB staging...

ДС: Ndine nyaya inotonhorera! Pachiratidziro pane dhatabhesi yechigadzirwa iyo shanduko inoitwa. Uye pane bhatani: "kubuditsa kugadzirwa". Idzi shanduko - deltas - dzinowedzerwa (zvinoratidzika kunge dzakangowiriraniswa kuburikidza neAPI) mukugadzira. Iyi isarudzo yakasarudzika.

НС: Ndakaona kutanga muMupata akagara muRSS kana kunyange muHeroku - idzi inyaya kubva makore 2-3 apfuura - uye vanorodha dump kune yavo laptop. Nekuti dhatabhesi ichiri 80 GB chete, uye pane nzvimbo pane laptop. Vanobva vatenga mamwe madhisiki emunhu wese kuti ave nemadhatabhesi matatu ekuita mabudiriro akasiyana. Izvi ndizvo zvinoitikawo. Ndakaona zvakare kuti ivo havatye kutevedzera prod mune staging - zvakanyanya zvinoenderana nekambani. Asi ndakaonawo kuti vanotya zvikuru, uye kuti kazhinji havana nguva yakakwana uye maoko. Asi tisati taenderera mberi nemusoro wenyaya, ndinoda kunzwa nezve Kubernetes. Ini ndinonzwisisa here kuti hapana ari muprod parizvino?

ДС: Tine diki dhatabhesi mune prod. Tiri kutaura pamusoro pemakumi emakumi egigabytes uye asina-akakosha masevhisi ayo isu takanga tine usimbe kuita replicas (uye hapana chakadaro chinodiwa). Uye kupa kuti pane zvakajairika kuchengetedza pasi peKubernetes. Iyi dhatabhesi yakashanda mumushini chaiwo - zvine mamiriro muVMware, pamusoro peiyo yekuchengetedza system. Takaisa mukati PV uye ikozvino tinogona kuiendesa kubva kumushini kuenda kumuchina.

НС: Databases yehukuru uhu, kusvika ku100 GB, pamadhisiki akanaka uye network yakanaka inogona kubudiswa mumaminitsi mashomanana, handizvo? Kumhanya kwe1 GB pasekondi haisisiri yechienzi.

ДС: Hongu, kune mutsara wekushanda iri harisi dambudziko.

НС: Zvakanaka, isu tinofanirwa kufunga nezve prod. Uye kana isu tichifunga nezveKubernetes kune asiri-prod nharaunda, chii chatinofanira kuita? Ndinoona kuti kuZalando ita opareta, in Crunchy sawing, pane dzimwe sarudzo. Uye pane OnGres - iyi ishamwari yedu yakanaka Alvaro anobva kuSpain: zvavanoita hazvisi izvo chete Anoshanda, uye kugoverwa kwese (StackGres), mazviri, kuwedzera kune Postgres pachayo, ivo vakafungawo kuisa backup, iyo Envoy proxy...

ДС: Envoy yei? Kuenzanisa Postgres traffic chaizvo?

НС: Ehe. Ndokunge, ivo vanozviona se: kana iwe ukatora kugovera kweLinux uye kernel, ipapo yakajairwa PostgreSQL ndiyo kernel, uye ivo vanoda kuita kugovera kunenge kuine makore-hushamwari uye kumhanya paKubernetes. Vanoisa pamwechete zvikamu (backups, nezvimwewo) uye vanozvigadzirisa kuti zvishande zvakanaka.

ДС: Zvakanaka kwazvo! Chaizvoizvo iyi software yekugadzira yako yakachengetedzwa Postgres.

НС: Kugoverwa kweLinux kune matambudziko asingaperi: maitiro ekugadzira madhiraivha kuitira kuti hardware yese itsigirwe. Uye vane pfungwa yekuti vachashanda muKubernetes. Ini ndoziva kuti mune yeZalando opareta isu munguva pfupi yapfuura takaona chinongedzo kuAWS uye izvi hazvisisina kunaka. Hakufanirwe kunge paine chisungo kune chakati gadziriso - chii chinodiwa ipapo?

ДС: Handizivi chaizvo kuti Zalando yakapinda sei mumamiriro ezvinhu, asi muKubernetes kuchengetedza ikozvino yakaitwa nenzira yekuti hazvibviri kutora disk backup uchishandisa nzira yegeneric. Munguva pfupi yapfuura mune standard - mune yazvino vhezheni CSI tsanangudzo - isu takaita kuti snapshots igoneke, asi inofambiswa kupi? Kutendeseka, zvinhu zvose zvichiri zvakasvibirira ... Tiri kuedza CSI pamusoro peAWS, GCE, Azure, vSphere, asi pakarepo paunotanga kuishandisa, unogona kuona kuti haisati yagadzirira.

НС: Ndosaka dzimwe nguva tichifanira kuvimba nezvivakwa. Ndinofunga ichi ichiri danho rekutanga - kukura marwadzo. Mubvunzo: Ndeapi mazano aungapa kune vatsva vanoda kuedza PgSQL muK8s? Ndeupi operator pamwe?

ДС: Dambudziko nderekuti Postgres ndeye 3% kwatiri. Isu tinewo rondedzero yakakura kwazvo yemasoftware akasiyana muKubernetes, ini handitombo nyora zvese. Somuenzaniso, Elasticsearch. Kune akawanda evashandisi: vamwe vari kushingaira kusimudzira, vamwe havasi. Isu takagadzira zvinodikanwa zvedu isu nezve izvo mushandisi anofanira kuve nazvo kuti isu tizvitore zvakakomba. Mune opareta akananga Kubernetes - kwete mu "operator kuita chimwe chinhu mumamiriro eAmazon"... Kutaura zvazviri, isu takanyanya (= vangangoita vatengi vese) tinoshandisa mushandisi mumwechete - nokuda kweRedis (tichaburitsa chinyorwa nezvake munguva pfupi iri kutevera).

НС: Uye kwete yeMySQL futi? Ndinoziva kuti Percona ... sezvo iye zvino vari kushanda paMySQL, MongoDB, uye Postgres, vachazofanira kugadzira imwe mhando yemhinduro yepasi rose: yezvinyorwa zvose, zvevose vanopa makore.

ДС: Takanga tisina nguva yekutarisa kune vashandisi veMySQL. Iyi haisiriyo tarisiro yedu huru izvozvi. MySQL inoshanda zvakanaka mune yakamira. Sei uchishandisa opareta kana uchingokwanisa kuvhura dhatabhesi... Unogona kuvhura mudziyo weDocker nePostrges, kana unogona kuuvhura nenzira iri nyore.

НС: Paive nemubvunzo pamusoro peizvi zvakare. Hapana opareta zvachose?

ДС: Ehe, 100% yedu tine PostgreSQL inomhanya pasina mushandisi. Kusvika zvino. Isu tinoshandisa nesimba mushandisi wePrometheus uye Redis. Tine zvirongwa zvekutsvaga mushandisi weElasticsearch - ndiyo inonyanya "kupisa", nekuti isu tinoda kuiisa muKubernetes mu100% yemakesi. Sezvatinoda kuona kuti MongoDB inogara yaiswa muKubernetes. Pano zvimwe zvishuwo zvinoonekwa - pane manzwiro ekuti mune izvi zviitiko chimwe chinhu chinogona kuitwa. Uye isu hatina kana kutarisa kuPostgres. Ehe, isu tinoziva kuti kune dzakasiyana sarudzo, asi kutaura zvazviri isu tine yakamira.

DB yekuyedza muKubernetes

НС: Ngatienderere mberi kune nyaya yekuedzwa. Maitiro ekuburitsa shanduko kune dhatabhesi - kubva kuDevOps maonero. Kune microservices, akawanda dhatabhesi, chimwe chinhu chiri kuchinja pane imwe nzvimbo nguva dzese. Nzira yekuita sei yakajairika CI / CD kuitira kuti zvese zvigadzirike kubva pakuona kweDBMS. Ndeipi nzira yako?

ДС:Hakugoni kuva nemhinduro imwe chete. Pane zvakawanda zvingasarudzwa. Chekutanga hukuru hwehwaro hwatinoda kuburitsa. Iwe pachako wakataura kuti makambani ane maitiro akasiyana ekuva nekopi yeprod database pane dev uye nhanho.

НС: Uye pasi pemamiriro eGDPR, ndinofunga kuti vari kunyanya kuchenjerera ... Ndinogona kutaura kuti muEurope vakatotanga kuisa mari.

ДС: Asi kazhinji iwe unogona kunyora software inotora marara kubva mukugadzira uye kuikanganisa. Prod data inowanikwa (snapshot, dump, binary kopi ...), asi haina kuzivikanwa. Pane kudaro, panogona kuve nezvinyorwa zvechizvarwa: izvi zvinogona kuve zvigadziriso kana kungoita script inoburitsa yakakura dhatabhesi. Dambudziko nderekuti: zvinotora nguva yakareba sei kugadzira mufananidzo wekutanga? Uye zvinotora nguva yakareba sei kuti iendeswe munzvimbo inodiwa?

Takasvika kune chirongwa: kana mutengi ane yakagadziriswa data set (diki vhezheni yedhatabhesi), saka isu tinovashandisa nekukasira. Kana isu tichitaura nezve ongororo nharaunda, patakagadzira bazi, isu takaisa chiitiko chekushandisa - tinoburitsa diki dhatabhesi ipapo. Asi zvakazoitika zvakanaka sarudzo, patinotora dump kubva mukugadzirwa kamwe chete pazuva (husiku) uye kuvaka mudziyo weDocker nePostgreSQL uye MySQL neiyi data yakatakurwa yakavakirwa pairi. Kana iwe uchida kuwedzera dhatabhesi ka50 kubva pamufananidzo uyu, izvi zvinoitwa zviri nyore uye nekukurumidza.

НС: Nekukopa kuri nyore?

ДС: Dhata inochengetwa yakananga muDocker mufananidzo. Avo. Tine mufananidzo wakagadzirwa, kunyangwe 100 GB. Nekuda kwezvikamu muDocker, tinogona kukurumidza kutumira mufananidzo uyu kakawanda sezvatinoda. Nzira yacho ibenzi, asi inoshanda zvakanaka.

НС: Zvino, paunoyedza, inochinja mukati meDocker, handiti? Kopa-pa-kunyora mukati meDocker - kanda kure uye uende zvakare, zvese zvakanaka. Kirasi! Uye uri kutoishandisa zvakazara here?

ДС: Kwenguva refu.

НС: Isu tinoita zvinhu zvakafanana. Chete isu hatishandise Docker's kopi-pa-kunyora, asi imwe imwe.

ДС: Haisi generic. Uye Docker inoshanda kwese kwese.

НС: Mukutaura, hongu. Asi isu tinewo mamodule ipapo, unogona kugadzira akasiyana mamodule uye kushanda neakasiyana faira masisitimu. Inguvai apa. Kubva kudivi rePostgres, tinotarisa zvese izvi zvakasiyana. Zvino ndakatarisa kubva kudivi reDocker ndikaona kuti zvese zvinokushandira. Asi kana dhatabhesi yakakura, semuenzaniso, 1 TB, zvino zvese izvi zvinotora nguva yakareba: mashandiro ehusiku, uye kuisa zvese muDocker ... Uye kana 5 TB yakaiswa muDocker ... Kana kuti zvese zvakanaka here?

ДС: Ndeupi mutsauko: aya mabhurobhu, angori mabits nemabyte.

НС: Musiyano ndeuyu: unozviita kuburikidza nekurasa uye kudzoreredza?

ДС:Hazvidi hazvo. Nzira dzekugadzira mufananidzo uyu dzinogona kunge dzakasiyana.

НС: Kune vamwe vatengi, takazvigadzira kuitira kuti pane kugara tichigadzira mufananidzo wekutanga, isu tinogara tichiuchengeta kusvika parizvino. Iri chaizvo replica, asi inogamuchira data kwete kubva kuna tenzi zvakananga, asi kuburikidza neyakachengetwa. Binary archive apo WALs anotorwa zuva rega rega, uko ma backups anotorwa... Aya maWAL anobva asvika pachifananidzo chepasi nekunonoka kudiki (chaizvoizvo masekonzi 1-2). Isu tinozviita kubva pairi chero nzira - ikozvino isu tine ZFS nekukasira.

ДС: Asi neZFS unogumira kune imwe node.

НС: Ehe. Asi ZFS zvakare ine mashiripiti tuma: nayo unogona kutumira mufananidzo uye kunyange (handisati ndanyatso edza izvi, asi ...) unogona kutumira delta pakati pezviviri. PGDATA. Muchokwadi, isu tine chimwe chishandiso chatisina kunyatso funga nezvemabasa akadaro. PostgreSQL ine pg_rewind, iyo inoshanda se "smart" rsync, kusvetuka zvakawanda zvausingafaniri kutarisa, nokuti hapana chakachinja ipapo. Tinogona kuita kukurumidza kuwiriranisa pakati pemasevha maviri uye kudzosera kumashure nenzira imwechete.

Saka, kubva pane izvi, zvakanyanya kudivi reDBA, tiri kuedza kugadzira chishandiso chinotibvumira kuita chinhu chimwe chete chawakataura: isu tine imwe dhatabhesi, asi isu tinoda kuedza chimwe chinhu ka50, kanenge panguva imwe chete.

ДС: 50 nguva zvinoreva kuti unoda kuodha makumi mashanu Spot zviitiko.

НС: Kwete, tinoita zvese pamushini mumwe.

ДС: Asi uchawedzera sei ka50 kana iyi dhatabhesi iri, toti, terabyte. Angangove achida ane conditional 256 GB RAM?

НС: Ehe, dzimwe nguva unoda ndangariro zhinji - ndizvo zvakajairika. Asi uyu muenzaniso kubva muupenyu. Muchina wekugadzira une 96 cores uye 600 GB. Panguva imwecheteyo, 32 cores (kunyangwe 16 cores ikozvino dzimwe nguva) uye 100-120 GB yekuyeuka inoshandiswa kune dhatabhesi.

ДС: Uye 50 makopi anokodzera imomo?

НС: Saka pane kopi imwe chete, ipapo kopi-on-write (ZFS) inoshanda ... Ndichakuudza zvakadzama.

Semuenzaniso, tine dhatabhesi gumi reTB. Vakaigadzira dhisiki, ZFS yakatsikirirawo ukuru hwayo ne10-30 muzana. Sezvo isu tisingaite kuyera kuyera, iyo chaiyo yekupindura nguva haina kukosha kwatiri: ngaive kusvika ka40 zvishoma zvishoma - ndizvozvo.

Isu tinopa mukana kune vanogadzira mapurogiramu, QA, DBA, nezvimwe. ita bvunzo mune 1-2 shinda. Semuenzaniso, vanogona kumhanya neimwe mhando yekutama. Izvo hazvidi gumi cores kamwechete - inoda 10 Postgres backend, 1 musimboti. Kutama kunotanga - pamwe autovacuum zvicharamba zvichitanga, ipapo yechipiri musimboti uchashandiswa. Isu tine 16-32 cores yakagoverwa, saka vanhu gumi vanogona kushanda panguva imwe chete, hapana dambudziko.

Nokuti mumuviri PGDATA zvakafanana, zvinozoitika kuti isu tiri kunyengedza Postgres. Hunyengeri ndeichi: semuenzaniso, 10 Postgres inotangwa panguva imwe chete. Kazhinji dambudziko nderei? Vakaisa shared_buffers, ngatitii 25%. Saizvozvowo, iyi 200 GB. Iwe haugone kuvhura zvinopfuura zvitatu zveizvi, nekuti ndangariro dzinopera.

Asi pane imwe nguva takaona kuti izvi zvaisafanira: isu takaisa share_buffers ku2 GB. PostgreSQL ine inoshanda_cache_size, uye chaizvoizvo ndiyo chete inopesvedzera zvirongwa. Isu takaisa ku0,5 TB. Uye hazvina basa kuti ivo havapo chaizvo: anoita zvirongwa sekunge zviripo.

Saizvozvo, kana isu tikayedza imwe mhando yekutama, tinogona kuunganidza zvese zvirongwa - isu tichaona kuti zvichaitika sei mukugadzira. Sekondi ichave yakasiyana (inononoka), asi iyo data yatinoverenga chaizvo, uye zvirongwa pachazvo (izvo JOINs zviripo, nezvimwewo) zvinoshanduka zvakafanana nekugadzirwa. Uye iwe unogona kumhanyisa akawanda macheki akadaro akafanana pamushini mumwe.

ДС: Haufungi here kuti kune matambudziko mashoma pano? Yekutanga imhinduro inoshanda chete paPostgreSQL. Iyi nzira ndeye yakavanzika, haina generic. Chechipiri ndechekuti Kubernetes (uye zvese izvo matekinoroji ari kuenda iko zvino) zvinosanganisira node dzakawanda, uye idzi node dziri ephemeral. Uye mune yako inzvimbo yakasarudzika, inoenderera mberi. Zviro izvi zvinoita kuti ndikonane.

НС: Chekutanga, ndinobvuma, iyi inyaya yePostgres chete. Ndinofunga kana tine imwe mhando yakananga IO uye buffer dziva kunenge ndangariro dzose, nzira iyi haizoshandi - zvirongwa zvichava zvakasiyana. Asi parizvino tinoshanda chete nePostgres, hatifungi nezvevamwe.

About Kubernetes. Iwe pachako unotiudza kwese kwese kuti isu tine dhatabhesi rinoramba riripo. Kana iyo muenzaniso ikakundikana, chinhu chikuru ndechekuchengetedza dhisiki. Pano isu tinewo chikuva chese muKubernetes, uye chikamu nePostgres chakaparadzana (kunyangwe chichave chiripo rimwe zuva). Naizvozvo, zvese zvakaita seizvi: muenzaniso wakadonha, asi isu takachengeta PV yayo uye takangoibatanidza kune imwe (itsva) muenzaniso, sekunge hapana chakaitika.

ДС: Kubva pakuona kwangu, tinogadzira mapodhi muKubernetes. K8s - elastic: mapfundo anorairwa sezvinodiwa. Basa nderekungogadzira podhi wotaura kuti inoda X huwandu hwezviwanikwa, uye ipapo maK8 anozozviona ega. Asi tsigiro yekuchengetedza muKubernetes haisati yagadzikana: 1.16in 1.17 (kuburitswa uku kwakaburitswa yevhiki ago) aya maficha anove beta chete.

Mwedzi mitanhatu kusvika pagore ichapfuura - ichave yakanyanya kugadzikana, kana kuti zvishoma ichaziviswa seyakadaro. Ipapo mukana wekutora mifananidzo uye resize inogadzirisa dambudziko rako zvachose. Nekuti une base. Hongu, inogona kunge isingakurumidze, asi kumhanya kunoenderana nezviri "pasi pehodhi", nekuti mamwe maitiro anogona kukopa uye kukopa-pa-kunyora padhisiki subsystem level.

НС: Izvo zvinodiwawo kuti injini dzese (Amazon, Google ...) dzitange kutsigira iyi shanduro - izvi zvinotorawo nguva.

ДС: Hatisati tavashandisa. Isu tinoshandisa zvedu.

Kuvandudzwa kwenzvimbo yeKubernetes

НС: Wakambosangana nechishuwo chakadaro kana iwe uchida kuisa ese mapodhi pamushini mumwe uye kuita diki bvunzo. Kukurumidza kuwana humbowo hwepfungwa, ona kuti iyo application inomhanya muKubernetes, pasina kutsaurira boka remakina ayo. Pane Minikube, handiti?

ДС: Zvinoita sekuti nyaya iyi - yakaiswa pane imwe node - ndeye chete nezve budiriro yenzvimbo. Kana zvimwe zviratidzo zvemuenzaniso wakadaro. Eat Minikube, Pane k3s, RUDO. Tiri kufamba takananga kushandisa Kubernetes IN Docker. Zvino takatanga kushanda nayo kuti tiedze.

НС: Ini ndaifunga kuti uku kwaive kuyedza kuputira mapodhi ese mune imwe Docker mufananidzo. Asi zvakazoitika kuti izvi ndezvechimwe chinhu chakasiyana zvachose. Zvakadaro, kune midziyo yakaparadzana, mapodhi akasiyana - muDocker chete.

ДС: Ehe. Uye pane kuteedzera kunosetsa kwakaitwa, asi zvinoreva izvi... werf. Tinoda kuita kuti ive yemamiriro ezvinhu werf up: "Nditsvagire Kubernetes emuno." Uye wobva wamhanyisa conditional ipapo werf follow. Ipapo mugadziri achakwanisa kugadzirisa IDE, uye hurongwa huchatangwa muhurongwa hunoona shanduko uye kuvakazve mifananidzo, kuitumira kune maK8 emunharaunda. Aya ndiwo maitiro atinoda kuedza kugadzirisa dambudziko rebudiriro yenzvimbo.

Snapshots uye dhatabhesi cloning muK8s chokwadi

НС: Kana tikadzokera kukopa-pa-kunyora. Ndakaona kuti makore anewo snapshots. Vanoshanda zvakasiyana. Semuenzaniso, muGCP: une multi-terabyte muenzaniso kumahombekombe ekumabvazuva kweUnited States. Iwe unotora snapshots nguva nenguva. Iwe unotora kopi ye diski kumhenderekedzo yekumadokero kubva pamufananidzo - mumaminitsi mashomanana zvinhu zvose zvakagadzirira, zvinoshanda nokukurumidza zvikuru, chete cache inoda kuzadzwa mundangariro. Asi aya ma clones (snapshots) ari kuitira 'kupa' vhoriyamu nyowani. Izvi zvinotonhorera kana iwe uchida kugadzira akawanda ezviitiko.

Asi kune bvunzo, zvinoratidzika kwandiri kuti snapshots, iyo yaunotaura nezvayo muDocker kana ini yandinotaura nezvayo muZFS, btrfs uye kunyange LVM ... - vanokubvumidza kuti usagadzira data nyowani chaiyo pamushini mumwe. Mugore, iwe ucharamba uchibhadhara ivo nguva dzese uye kumirira kwete masekondi, asi maminetsi (uye mune iyo kesi usimbe mutoro, zvichida wachi).

Pane kudaro, iwe unogona kuwana iyi data mune yechipiri kana maviri, mhanyisa bvunzo uye uirase kure. Aya ma snapshots anogadzirisa matambudziko akasiyana. Muchiitiko chekutanga - kukwira kumusoro uye kuwana replicas mitsva, uye yechipiri - yebvunzo.

ДС: Handibvumi. Kuita kuti volume cloning ishande nemazvo ibasa regore. Ini handina kutarisa kuita kwavo, asi ndinoziva maitiro atinoita pane Hardware. Tine Ceph, inobvumira chero vhoriyamu yemuviri (RBD) kutaura clone uye tora vhoriyamu yechipiri ine maitiro akafanana mumakumi emamilliseconds, IOPS'amai, etc. Iwe unofanirwa kunzwisisa kuti pane inonyengera kopi-pa-kunyora mukati. Nei gore risingaite zvimwe chetezvo? Ndine chokwadi chekuti vari kuyedza kuita izvi neimwe nzira.

НС: Asi zvicharamba zvichitora iwo masekondi, makumi emasekonzi kusimudza muenzaniso, kuunza Docker ipapo, nezvimwe.

ДС: Sei zvakakosha kusimudza chiitiko chose? Tine muenzaniso ne 32 cores, 16 ... uye inogona kupinda mairi - semuenzaniso, ina. Patinoodha yechishanu, muenzaniso unenge watosimudzwa, uye wobva wabviswa.

НС: Ehe, zvinonakidza, Kubernetes inoshanduka kuva imwe nyaya. Dhatabhesi redu harisi muK8s, uye tine muenzaniso mumwe. Asi kugadzira dhatabheti yakawanda-terabyte hakutore kupfuura masekonzi maviri.

ДС: Izvi zvakanaka. Asi pfungwa yangu yekutanga ndeyekuti iyi haisi generic solution. Ehe, inotonhorera, asi inokodzera chete Postgres uye chete pane imwe node.

НС: Haikodzeri kuPostgres chete: zvirongwa izvi, sezvandakatsanangura, zvinongoshanda mairi. Asi kana isu tisinganetseki nezvezvirongwa, uye isu tinongoda data rese rekuyedza kushanda, zvino izvi zvakakodzera kune chero DBMS.

ДС: Makore mazhinji apfuura takaita zvakafanana paLVM snapshots. Ichi chinyakare. Iyi nzira yakashandiswa zvakanyanya. Stateful nodes marwadzo chete. Nekuti haufanirwe kuvadonhedza, iwe unofanirwa kugara uchivarangarira ...

НС: Unoona here mukana wekuti pave nehybrid pano? Ngatiti stateful imwe mhando yepodhi, inoshanda kune vanhu vakati wandei (vazhinji vanoedza). Tine vhoriyamu imwe, asi nekuda kweiyo faira system, ma clones ndeemunharaunda. Kana iyo pod ikadonha, asi dhisiki rikaramba riripo, iyo pod inosimuka, iverenge ruzivo nezvese clones, tora zvese zvakare uye uti: "Heano ma clones ako ari kushanda pazviteshi izvi, ramba uchishanda navo."

ДС: Nehunyanzvi izvi zvinoreva kuti mukati meKubernetes mune imwe pod mukati matinomhanyisa akawanda maPostgres.

НС: Ehe. Ane muganhu: ngatiti kwete vanhu vanopfuura 10 vanoshanda naye panguva imwe chete. Kana iwe uchida makumi maviri, tichavhura yechipiri podhi yakadaro. Isu tichaibatanidza zvizere, tagamuchira yechipiri yakazara vhoriyamu, ichava yakafanana gumi "matete" clones. Hauoni mukana uyu here?

ДС: Tinofanira kuwedzera nyaya dzekuchengetedza pano. Mhando iyi yesangano inoreva kuti iyi pod ine ropafadzo dzakakwirira (mano), nokuti inogona kuita zvisingaenzaniswi pane faira system ... Asi ndinodzokorora: Ndinotenda kuti munguva yepakati vachagadzirisa kuchengetedza muKubernetes, uye mu. makore ivo vachagadzirisa nyaya yese nemavhoriyamu - zvese "zvichashanda". Pachave neresize, cloning ... Pane vhoriyamu - tinoti: "Gadzira imwe itsva kubva pane izvozvo," uye mushure mechipiri nehafu tinowana zvatinoda.

НС: Handitendi mune imwe nehafu sekondi kune akawanda terabytes. PaCeph unozviita wega, asi unotaura nezvemakore. Enda kune gore, gadzira clone ye-multi-terabyte EBS vhoriyamu paEC2 uye uone kuti kuita kuchave kudii. Hazvitore masekonzi mashoma. Ndiri kufarira chaizvo kuti vachasvika riini level iyi. Ndiri kunzwisisa zvauri kutaura, asi ndinokumbira kusiyana nazvo.

ДС: Ok, asi ndati munguva yepakati, kwete pfupi. Kwemakore akawanda.

Nezve mushandisi wePostgreSQL kubva kuZalando

Pakati pemusangano uyu, Alexey Klyukin, aimbove mugadziri kubva kuZalando, akapindawo akataura nezve nhoroondo yePostgreSQL opareta:

Zvakanaka kuti nyaya iyi inobatwa pane zvakazara: zvese Postgres uye Kubernetes. Patakatanga kuzviita kuZalando muna 2017, yaive nyaya yaida kuitwa nemunhu wese, asi hapana akazviita. Wese munhu aitove naKubernetes, asi pavakabvunza zvekuita nemadhatabhesi, kunyangwe vanhu vanofarira Kelsey Hightower, aiparidza maK8, akataura zvakadayi:

"Enda kumasevhisi anogadziriswa uye uashandise, usamhanye dhatabhesi muKubernetes. Zvikasadaro, maK8s ako achasarudza, semuenzaniso, kukwidziridza, kudzima node dzese, uye data rako richabhururuka kure, kure.

Isu takafunga kugadzira opareta uyo, zvinopesana nezano iri, achavhura dhatabhesi rePostgres muKubernetes. Uye isu takanga tine chikonzero chakanaka - Patroni. Iyi iotomatiki failover yePostgreSQL, yakaitwa nemazvo, i.e. uchishandisa etcd, consul kana ZooKeeper sekuchengetedza ruzivo nezve cluster. Nzvimbo yakadaro iyo ichapa munhu wese anobvunza, semuenzaniso, chii chiri mutungamiri iye zvino, ruzivo rwakafanana - pasinei nokuti tine zvose zvakagoverwa - kuitira kuti pave pasina uropi hwakaparadzana. Uyezve taiva nazvo Docker mufananidzo zvake.

Kazhinji, kudiwa kwekambani kweauto failover kwakaonekwa mushure mekutama kubva kune yemukati hardware data centre kuenda kune gore. Gore raive rakavakirwa pamugadziriso wePaaS (Platform-as-a-Service). Ndiyo Open Source, asi zvakatora basa rakawanda kuti isimuke uye ishande. Yakanzi STUPS.

Pakutanga, pakanga pasina Kubernetes. Zvakanyanya, apo mhinduro yedu pachedu yakaiswa, maK8 akange atovepo, asi aive asina kuchena zvekuti akange asina kukodzera kugadzirwa. Yakanga iri, mumaonero angu, 2015 kana 2016. Pakazosvika 2017, Kubernetes akange atokura kana kushoma - pakanga paine chikonzero chekutamira ikoko.

Uye isu taitova neDocker mudziyo. Paive nePaaS yaishandisa Docker. Wadii kuedza maK8? Wadii kunyora wako opareta? Murat Kabilov, akauya kwatiri kubva kuAvito, akatanga izvi sepurojekiti pachake - "kutamba" - uye chirongwa "chakatanga."

Asi kazhinji, ndaida kutaura nezve AWS. Nei paive nenhoroondo yeAWS ine chekuita nekodhi...

Paunomhanyisa chimwe chinhu muKubernetes, unofanirwa kunzwisisa kuti maK8 ibasa rakadaro ririkuitika. Inogara ichivandudza, kuvandudza uye kunyange kuputsa nguva nenguva. Iwe unofanirwa kutarisisa nezvese shanduko muKubernetes, iwe unofanirwa kuve wakagadzirira kunyura mairi kana chimwe chinhu chikaitika uye kudzidza kuti chinoshanda sei zvakadzama - pamwe kupfuura zvaungada. Izvi, mumusimboti, zvinoshanda kune chero chikuva chaunomhanyisa dhatabhesi yako ...

Saka, patakaita chirevo, taive nePostgres ichimhanya pane yekunze vhoriyamu (EBS mune iyi kesi, sezvo isu taishanda paAWS). Dhatabhesi yakakura, pane imwe nguva yaive yakakosha kuigadzirisa: semuenzaniso, saizi yekutanga yeEBS yaive 100 TB, iyo database yakakura kwairi, ikozvino tinoda kuita EBS 200 TB. Sei? Ngatiti iwe unogona kuita kurasa / kudzorera pane imwe chiitiko chitsva, asi izvi zvinotora nguva yakareba uye zvinosanganisira nguva yekudzikira.

Naizvozvo, ini ndaida resize iyo yaizokudza iyo EBS chikamu uyezve kuudza iyo faira system kushandisa iyo nzvimbo nyowani. Uye isu takazviita, asi panguva iyoyo Kubernetes akange asina chero API yekugadziridza mashandiro. Sezvo takashanda paAWS, takanyora kodhi yeAPI yayo.

Hapana ari kukumisa kuita zvimwe chete kune mamwe mapuratifomu. Iko hakuna zano mune chirevo chekuti inogona chete kumhanya paAWS, uye haishande pane zvese zvimwe. Kazhinji, iyi iOpen Source purojekiti: kana paine anoda kukurumidza kubuda kwekushandiswa kweiyo API nyowani, unogamuchirwa. Eat GitHub, dhonza zvikumbiro - timu yeZalando inoedza kuvapindura nekukurumidza uye kukurudzira anoshanda. Sekuziva kwangu, chirongwa akatora chikamu paGoogle Zhizha reCode uye mamwe maitiro akafanana. Zalando iri kushanda nesimba pairi.

PS Bonus!

Kana iwe uchifarira nyaya yePostgreSQL uye Kubernetes, saka ndokumbirawo uone kuti inotevera Postgres Chipiri yakaitika svondo rapfuura, kwandakataura naNikolai. Alexander Kukushkin kubva kuZalando. Vhidhiyo kubva kwairi inowanikwa pano.

PPS

Verenga zvakare pablog yedu:

Source: www.habr.com

Voeg