Postgres Dimàirt Àir. 5: “PostgreSQL agus Kubernetes. CI/CD. Dèan deuchainn air fèin-ghluasad"

Postgres Dimàirt Àir. 5: “PostgreSQL agus Kubernetes. CI/CD. Dèan deuchainn air fèin-ghluasad"

Aig deireadh na bliadhna an-uiridh, chaidh craoladh beò eile de choimhearsnachd PostgreSQL na Ruis a chumail #RuPostgres, nuair a bhruidhinn a cho-stèidheadair Nikolai Samokhvalov ri stiùiriche teignigeach Flant Dmitry Stolyarov mun DBMS seo ann an co-theacsa Kubernetes.

Tha sinn a’ foillseachadh tar-sgrìobhadh den phrìomh phàirt den deasbad seo, agus aig Sianal coimhearsnachd YouTube Bhidio slàn air a phostadh:

Stòr-dàta agus Kubernetes

НС: Cha bhith sinn a’ bruidhinn mu dheidhinn VACUUM agus CHECKPOINTs an-diugh. Tha sinn airson bruidhinn mu Kubernetes. Tha fios agam gu bheil iomadh bliadhna de eòlas agad. Choimhead mi na bhideothan agad agus eadhon air cuid dhiubh a choimhead a-rithist... Rachamaid dìreach chun a’ phuing: carson Postgres no MySQL ann an K8s idir?

Dh': Chan eil agus chan urrainn freagairt chinnteach a bhith ann don cheist seo. Ach san fharsaingeachd, is e sìmplidheachd agus goireasachd a tha seo ... comas. Tha a h-uile duine ag iarraidh seirbheisean fo stiùir.

НС: Ciamar leudachadh RDS, dìreach aig an taigh?

Dh': Tha: mar RDS, dìreach àite sam bith.

НС: Tha “àite sam bith” na phuing math. Ann an companaidhean mòra, tha a h-uile dad suidhichte ann an diofar àiteachan. Carson ma-thà, mas e companaidh mòr a th’ ann, nach gabh thu fuasgladh deiseil? Mar eisimpleir, tha na leasachaidhean aige fhèin aig Nutanix, tha an aon “RDS aig companaidhean eile (VMware ...), dìreach aig an taigh.”

Dh': Ach tha sinn a 'bruidhinn mu dheidhinn buileachadh fa leth nach obraich ach fo chumhachan sònraichte. Agus ma tha sinn a 'bruidhinn mu dheidhinn Kubernetes, tha measgachadh mòr de bhun-structair (a dh'fhaodas a bhith ann an K8). Gu bunaiteach is e seo inbhe airson APIan don sgòth ...

НС: Tha e an-asgaidh cuideachd!

Dh': Chan eil e cho cudromach. Tha saorsa cudromach airson nach eil pàirt glè mhòr den mhargaidh. Tha rudeigin eile cudromach... Is dòcha gu bheil cuimhne agad air an aithisg “Stòr-dàta agus Kubernetes"?"

НС: Tha.

Dh': Thuig mi gu 'n d' fhuaradh e gu ro dhiongmhalta. Bha cuid den bheachd gu robh mi ag ràdh: “Guys, leig dhuinn na stòran-dàta gu lèir a chuir a-steach gu Kubernetes!”, agus cho-dhùin cuid eile gur e baidhsagalan uamhasach a bh’ annta. Ach bha mi airson rudeigin gu tur eadar-dhealaichte a ràdh: “Seall dè tha a’ tachairt, dè na duilgheadasan a th’ ann agus mar as urrainn dhaibh am fuasgladh. Am bu chòir dhuinn stòran-dàta Kubernetes a chleachdadh a-nis? Riochdachadh? Uill, dìreach ma thogras tu...a’ dèanamh rudan sònraichte. Ach airson dev, is urrainn dhomh a ràdh gu bheil mi ga mholadh. Airson leasachadh, tha spionnadh àrainneachdan a chruthachadh/sguabadh às.”

NS: Le dev, a bheil thu a’ ciallachadh a h-uile àrainneachd nach eil prod? Stèidhich, QA…

Dh': Ma tha sinn a 'bruidhinn mu dheidhinn ionadan perf, is dòcha nach eil, oir tha na riatanasan sònraichte ann. Ma tha sinn a' bruidhinn air cùisean sònraichte far a bheil feum air stòr-dàta glè mhòr airson a bhith a' cur air dòigh, is dòcha nach eil... Mas e àrainneachd statach, fad-ùine a tha seo, dè a' bhuannachd a th' ann an stòr-dàta a bhith suidhichte ann an K8n?

НС: Chan eil. Ach càite am faic sinn àrainneachdan statach? Bidh àrainneachd statach a’ dol à bith a-màireach.

Dh': Faodaidh staging a bhith statach. Tha luchd-dèiligidh againn ...

НС: Tha, tha fear agam cuideachd. Tha e na dhuilgheadas mòr ma tha stòr-dàta 10 TB agad agus stèidse 200 GB ...

Dh': Tha cùis glè fhionnar agam! Air an àrd-ùrlar tha stòr-dàta toraidh far an tèid atharrachaidhean a dhèanamh. Agus tha putan ann: “Rolaig a-mach gu cinneasachadh”. Tha na h-atharrachaidhean sin - deltas - air an cur ris (tha e coltach gu bheil iad dìreach air an sioncronadh tron ​​​​API) ann an cinneasachadh. Is e roghainn glè exotic a tha seo.

НС: Tha mi air companaidhean tòiseachaidh fhaicinn sa ghleann a tha nan suidhe ann an RDS no eadhon ann an Heroku - is e sgeulachdan a tha seo bho chionn 2-3 bliadhna - agus bidh iad a’ luchdachadh sìos an dump chun laptop aca. Leis nach eil an stòr-dàta fhathast ach 80 GB, agus tha àite air an laptop. An uairsin bidh iad a 'ceannach diosgan a bharrachd airson a h-uile duine gus am bi 3 stòran-dàta aca airson diofar leasachaidhean a dhèanamh. Seo mar a tha e a’ tachairt cuideachd. Chunnaic mi cuideachd nach eil eagal orra a bhith a 'dèanamh lethbhreac de phròd gu àrd-ùrlar - tha e gu mòr an urra ris a' chompanaidh. Ach chunnaic mi cuideachd gu bheil eagal mòr orra, agus gu tric chan eil ùine agus làmhan gu leòr aca. Ach mus gluais sinn air adhart chun chuspair seo, tha mi airson cluinntinn mu Kubernetes. A bheil mi a’ tuigsinn gu ceart nach eil duine ann am pròis fhathast?

Dh': Tha stòran-dàta beaga againn ann am prod. Tha sinn a’ bruidhinn air na tha de dheichean de gigabytes agus seirbheisean neo-riatanach air an robh sinn ro leisg airson mac-samhail a dhèanamh (agus chan eil feum air). Agus fhad ‘s a tha stòradh àbhaisteach ann fo Kubernetes. Bha an stòr-dàta seo ag obair ann an inneal brìgheil - le cumhachan ann an VMware, a bharrachd air an t-siostam stòraidh. Chuir sinn a-steach e PV agus a-nis is urrainn dhuinn a ghluasad bho inneal gu inneal.

НС: Faodar stòran-dàta den mheud seo, suas ri 100 GB, a chuir a-steach ann am beagan mhionaidean air diosgan math agus lìonra math, ceart? Chan eil astar de 1 GB gach diog tuilleadh annasach.

Dh': Tha, airson obrachadh sreathach chan eil seo na dhuilgheadas.

НС: Ceart gu leòr, feumaidh sinn smaoineachadh air prod. Agus ma tha sinn a’ beachdachadh air Kubernetes airson àrainneachdan neo-phrothaid, dè a bu chòir dhuinn a dhèanamh? Chì mi sin ann an Zalando dèan gnìomhaiche, ann an Crunchy sàbhaidh, tha roghainnean eile ann. Agus tha OnGres - is e seo ar deagh charaid Alvaro às an Spàinn: gu dearbh chan eil na bhios iad a’ dèanamh dìreach an gnìomhaiche, agus an sgaoileadh gu lèir (StacGres), anns an do cho-dhùin iad, a bharrachd air Postgres fhèin, cùl-taic a chuir a-steach, neach-ionaid an Tosgaire ...

Dh': Tosgaire airson dè? A’ cothromachadh trafaic Postgres gu sònraichte?

НС: Tha. Is e sin, tha iad ga fhaicinn mar: ma ghabhas tu cuairteachadh Linux agus kernel, is e PostgreSQL cunbhalach an kernel, agus tha iad airson cuairteachadh a dhèanamh a bhios càirdeil do sgòthan agus a ruith air Kubernetes. Bidh iad a 'cur phàirtean ri chèile (cùl-taic, msaa) agus gan dì-bhugachadh gus an obraich iad gu math.

Dh': Gu math snog! Gu bunaiteach is e seo bathar-bog gus na Postgres stiùirichte agad fhèin a chruthachadh.

НС: Tha duilgheadasan sìorraidh aig sgaoilidhean Linux: mar a nì thu draibhearan gus am faigh a h-uile bathar-cruaidh taic. Agus tha beachd aca gun obraich iad ann an Kubernetes. Tha fios agam gum faca sinn ann an gnìomhaiche Zalando o chionn ghoirid ceangal ri AWS agus chan eil seo fìor mhath tuilleadh. Cha bu chòir ceangal a bhith ann ri bun-structar sònraichte - dè a’ phuing an uairsin?

Dh': Chan eil fios agam dè dìreach an suidheachadh anns an d’ fhuair Zalando a-steach, ach ann an stòradh Kubernetes a-nis air a dhèanamh ann an dòigh is gu bheil e do-dhèanta cùl-taic diosc a ghabhail a’ cleachdadh modh coitcheann. O chionn ghoirid ann an inbhe - anns an dreach as ùire Sònrachaidhean CSI - rinn sinn dealbhan-camara comasach, ach càite a bheil e air a bhuileachadh? Gu h-onarach, tha a h-uile dad fhathast cho amh ... Tha sinn a’ feuchainn CSI a bharrachd air AWS, GCE, Azure, vSphere, ach cho luath ‘s a thòisicheas tu ga chleachdadh, chì thu nach eil e deiseil fhathast.

НС: Sin as coireach gum feum sinn uaireannan a bhith an urra ri bun-structar. Tha mi a 'smaoineachadh gur e ìre thràth a tha seo fhathast - pianta a' fàs. Ceist: Dè a’ chomhairle a bheireadh tu dha daoine ùra a tha airson PgSQL fheuchainn ann an K8n? Dè an gnìomhaiche 's dòcha?

Dh': Is e an duilgheadas a th 'ann gu bheil Postgres 3% dhuinne. Tha liosta glè mhòr againn cuideachd de dhiofar bhathar-bog ann an Kubernetes, cha bhith mi eadhon a’ liostadh a h-uile dad. Mar eisimpleir, Elasticsearch. Tha mòran ghnìomhaichean ann: tha cuid a 'leasachadh gu gnìomhach, chan eil cuid eile. Tha sinn air riatanasan a dhealbhadh dhuinn fhìn mu na bu chòir a bhith aig gnìomhaiche gus an gabh sinn dha-rìribh e. Ann an gnìomhaiche gu sònraichte airson Kubernetes - chan ann ann an “obraiche rudeigin a dhèanamh ann an suidheachaidhean Amazon”... Gu dearbh, bidh sinn gu math farsaing (= cha mhòr a h-uile neach-dèiligidh) a’ cleachdadh aon ghnìomhaiche - airson Redis (foillsichidh sinn artaigil mu dheidhinn a dh’ aithghearr).

НС: Agus chan ann airson MySQL an dàrna cuid? Tha fios agam gu bheil Percona ... leis gu bheil iad a-nis ag obair air MySQL, MongoDB, agus Postgres, feumaidh iad seòrsa de fhuasgladh uile-choitcheann a chruthachadh: airson a h-uile stòr-dàta, airson a h-uile solaraiche sgòthan.

Dh': Cha robh tìde againn coimhead air na gnìomhaichean airson MySQL. Chan e seo ar prìomh fòcas an-dràsta. Bidh MySQL ag obair gu math leis fhèin. Carson a chleachdas tu gnìomhaiche mas urrainn dhut dìreach stòr-dàta a chuir air bhog... Faodaidh tu soitheach Docker a chuir air bhog le Postrges, no faodaidh tu a chuir air bhog ann an dòigh shìmplidh.

НС: Bha ceist ann mu dheidhinn seo cuideachd. Gun ghnìomhaiche idir?

Dh': Tha, tha PostgreSQL aig 100% againn a 'ruith às aonais gnìomhaiche. Gu ruige seo. Bidh sinn gu gnìomhach a’ cleachdadh a’ ghnìomhaiche airson Prometheus agus Redis. Tha planaichean againn gnìomhaiche a lorg airson Elasticsearch - is e am fear as motha a tha “na theine”, oir tha sinn airson a chuir a-steach ann an Kubernetes ann an 100% de chùisean. Dìreach mar a tha sinn airson dèanamh cinnteach gu bheil MongoDB cuideachd an-còmhnaidh air a chuir a-steach ann an Kubernetes. An seo tha miann sònraichte a 'nochdadh - tha faireachdainn ann gum faodar rudeigin a dhèanamh anns na cùisean sin. Agus cha do choimhead sinn eadhon air Postgres. Gu dearbh, tha fios againn gu bheil diofar roghainnean ann, ach gu dearbh tha sinn leis fhèin.

DB airson deuchainn ann an Kubernetes

НС: Rachamaid air adhart gu cuspair na deuchainn. Mar a chuireas tu a-steach atharrachaidhean air an stòr-dàta - bho shealladh DevOps. Tha microservices ann, mòran stòran-dàta, tha rudeigin ag atharrachadh am badeigin fad na h-ùine. Mar a nì thu cinnteach à CI / CD àbhaisteach gus am bi a h-uile càil ann an òrdugh bho shealladh DBMS. Dè an dòigh-obrach a th’ agad?

Dh': Chan urrainn aon fhreagairt a bhith ann. Tha grunn roghainnean ann. Is e a’ chiad fhear meud a’ bhunait a tha sinn airson a roiligeadh a-mach. Dh’ainmich thu fhèin gu bheil beachdan eadar-dhealaichte aig companaidhean a thaobh leth-bhreac den stòr-dàta prod a bhith aca air dev agus àrd-ùrlar.

НС: Agus fo chumhachan an GDPR, tha mi a’ smaoineachadh gu bheil iad a’ fàs nas faiceallach... Is urrainn dhomh a ràdh gu bheil iad san Roinn Eòrpa mu thràth air tòiseachadh air càin a chuir orra.

Dh': Ach gu tric is urrainn dhut bathar-bog a sgrìobhadh a bheir cnap bho riochdachadh agus a chuireas bacadh air. Gheibhear dàta toraidh (dealbh, dump, leth-bhreac binary ...), ach tha e gun urra. An àite sin, faodaidh sgriobtaichean ginealach a bhith ann: faodaidh iad sin a bhith nan tàmh-àirneisean no dìreach sgriobt a chruthaicheas stòr-dàta mòr. Is e an duilgheadas a th 'ann: dè cho fada' sa bheir e gus ìomhaigh bunaiteach a chruthachadh? Agus dè cho fada ’s a bheir e airson a chleachdadh san àrainneachd a tha thu ag iarraidh?

Thàinig sinn gu sgeama: ma tha seata dàta stèidhichte aig an neach-dèiligidh (dreach as ìsle den stòr-dàta), bidh sinn gan cleachdadh gu bunaiteach. Ma tha sinn a’ bruidhinn mu àrainneachdan ath-bhreithneachaidh, nuair a chruthaich sinn meur, chuir sinn a-steach eisimpleir den tagradh - bidh sinn a’ sgaoileadh stòr-dàta beag an sin. Ach thionndaidh e a-mach gu math roghainn, nuair a bheir sinn dump bho chinneasachadh uair san latha (air an oidhche) agus a’ togail inneal Docker le PostgreSQL agus MySQL leis an dàta luchdaichte seo stèidhichte air. Ma dh'fheumas tu an stòr-dàta a leudachadh 50 uair bhon ìomhaigh seo, thèid seo a dhèanamh gu math sìmplidh agus luath.

НС: Le bhith a 'dèanamh lethbhreac sìmplidh?

Dh': Tha dàta air a stòradh gu dìreach ann an ìomhaigh Docker. An fheadhainn sin. Tha ìomhaigh deiseil againn, ged is e 100 GB a th’ ann. Taing dha sreathan ann an Docker, is urrainn dhuinn an ìomhaigh seo a chuir an sàs gu sgiobalta cho tric ‘s a dh’ fheumas sinn. Tha an dòigh-obrach gòrach, ach tha e ag obair gu math.

НС: An uairsin, nuair a nì thu deuchainn, bidh e ag atharrachadh taobh a-staigh Docker, ceart? Dèan lethbhreac-air-sgrìobhadh taobh a-staigh Docker - tilg air falbh e agus falbh a-rithist, tha a h-uile dad gu math. Clas! Agus a bheil thu mu thràth ga chleachdadh chun na h-ìre as àirde?

Dh': Airson ùine mhòr.

НС: Bidh sinn a’ dèanamh rudan glè choltach. Is ann dìreach nach bi sinn a’ cleachdadh leth-bhreac Docker air sgrìobhadh, ach fear eile.

Dh': Chan eil e coitcheann. Agus bidh Docker ag obair anns a h-uile àite.

НС: Ann an teòiridh, tha. Ach tha modalan againn an sin cuideachd, faodaidh tu diofar mhodalan a dhèanamh agus obrachadh le diofar shiostaman faidhle. Abair mionaid an seo. Bho thaobh Postgres, bidh sinn a’ coimhead air seo uile ann an dòigh eadar-dhealaichte. A-nis choimhead mi bho thaobh an Docker agus chunnaic mi gu bheil a h-uile dad ag obair dhut. Ach ma tha an stòr-dàta fìor mhòr, mar eisimpleir, 1 TB, an uairsin bheir seo ùine mhòr: obair air an oidhche, agus a h-uile càil a lìonadh a-steach do Docker... Agus ma tha 5 TB air a lìonadh a-steach do Docker... No a bheil a h-uile càil ceart?

Dh': Dè an diofar: 's e bloban a tha seo, dìreach pìosan is bytes.

НС: Is e seo an diofar: an dèan thu e tro dhumpadh agus ath-nuadhachadh?

Dh': Chan eil feum air idir. Faodaidh na dòighean airson an ìomhaigh seo a chruthachadh a bhith eadar-dhealaichte.

НС: Airson cuid de luchd-dèiligidh, tha sinn air a dhèanamh gus an àite a bhith a 'gineadh gu cunbhalach ìomhaigh bunaiteach, tha sinn daonnan a' cumail suas e. Is e mac-samhail a th’ ann gu bunaiteach, ach bidh e a’ faighinn dàta chan ann bhon mhaighstir gu dìreach, ach tro thasglann. Tasglann dàna far a bheilear a’ luchdachadh sìos WALs a h-uile latha, far an tèid cùl-taic a ghabhail... Bidh na WALn sin an uairsin a’ ruighinn an ìomhaigh bhunaiteach le beagan dàil (gu litearra 1-2 diogan). Bidh sinn a’ clonadh bhuaithe ann an dòigh sam bith - a-nis tha ZFS againn gu bunaiteach.

Dh': Ach le ZFS tha thu cuingealaichte ri aon nód.

НС: Tha. Ach tha draoidheachd aig ZFS cuideachd cuir: leis faodaidh tu dealbh a chuir agus eadhon (cha do rinn mi deuchainn air seo fhathast, ach ...) faodaidh tu delta a chuir eadar dhà PGDATA. Gu dearbh, tha inneal eile againn nach do bheachdaich sinn dha-rìribh airson gnìomhan mar sin. Tha aig PostgreSQL pg_ath-thionndaidh, a tha ag obair mar rsync “smart”, a’ leum air mòran de na rudan nach fheum thu a choimhead, leis nach eil dad air atharrachadh an sin. Is urrainn dhuinn sioncronadh sgiobalta a dhèanamh eadar an dà fhrithealaiche agus ath-fhilleadh san aon dòigh.

Mar sin, bhon taobh seo, barrachd DBA, tha sinn a 'feuchainn ri inneal a chruthachadh a leigeas leinn an aon rud a thuirt thu a dhèanamh: tha aon stòr-dàta againn, ach tha sinn airson rudeigin a dhearbhadh 50 uair, cha mhòr aig an aon àm.

Dh': Tha 50 uair a’ ciallachadh gum feum thu 50 cùis Spot òrdachadh.

НС: Chan e, bidh sinn a 'dèanamh a h-uile càil air aon inneal.

Dh': Ach ciamar a leudaicheas tu 50 uair ma tha an aon stòr-dàta seo, can, terabyte. Is dòcha gu bheil feum aice air 256 GB de RAM gun chumhachan?

НС: Tha, uaireannan feumaidh tu tòrr cuimhne - tha sin àbhaisteach. Ach tha seo na eisimpleir bho bheatha. Tha 96 cores agus 600 GB aig an inneal cinneasachaidh. Aig an aon àm, thathas a’ cleachdadh 32 cores (eadhon 16 cores a-nis uaireannan) agus 100-120 GB de chuimhne airson an stòr-dàta.

Dh': Agus 50 leth-bhreac a’ freagairt ann?

НС: Mar sin chan eil ann ach aon leth-bhreac, agus an uairsin bidh lethbhreac-air-sgrìobhadh (ZFS) ag obair ... innsidh mi dhut nas mionaidiche.

Mar eisimpleir, tha stòr-dàta 10 TB againn. Rinn iad diosc air a shon, rinn ZFS cuideachd teannachadh air a mheud le 30-40 sa cheud. Leis nach bi sinn a’ dèanamh deuchainn luchdan, chan eil an dearbh ùine freagairt cudromach dhuinn: leig leis a bhith suas ri 2 uair nas slaodaiche - tha sin ceart gu leòr.

Bheir sinn an cothrom do luchd-prògramaidh, QA, DBA, msaa. dèan deuchainn ann an 1-2 snàithlean. Mar eisimpleir, is dòcha gun ruith iad seòrsa de dh’ imrich. Chan fheum e 10 coraichean aig an aon àm - feumaidh e backend 1 Postgres, 1 cridhe. Tòisichidh imrich - 's dòcha fèin-ghluasadach tòiseachadh fhathast, agus an uairsin thèid an dàrna cridhe a chleachdadh. Tha 16-32 cores againn air an riarachadh, agus mar sin faodaidh 10 neach obrachadh aig an aon àm, gun duilgheadas sam bith.

Air sgàth gu corporra PGDATA an aon rud, tha e a 'tionndadh a-mach gu bheil sinn dha-rìribh a' mealladh Postgres. Is e an cleas seo: mar eisimpleir, thèid 10 Postgres a chuir air bhog aig an aon àm. Dè an duilgheadas a th’ ann mar as trice? Chuir iad buffers_roinnte, canaidh sinn 25%. A rèir sin, is e seo 200 GB. Cha bhith e comasach dhut barrachd air trì dhiubh sin a chuir air bhog, oir ruithidh a’ chuimhne a-mach.

Ach aig àm air choreigin thuig sinn nach robh seo riatanach: shuidhich sinn share_buffers gu 2 GB. Tha aig PostgreSQL èifeachdach_cache_size, agus ann an da-rìribh is e an aon fhear a bheir buaidh planaichean. Chuir sinn e gu 0,5 TB. Agus chan eil e gu diofar nach eil iad ann dha-rìribh: bidh e a’ dèanamh phlanaichean mar gum biodh iad ann.

A rèir sin, nuair a nì sinn deuchainn air imrich de sheòrsa air choreigin, is urrainn dhuinn na planaichean gu lèir a chruinneachadh - chì sinn mar a thachras e ann an cinneasachadh. Bidh na diogan eadar-dhealaichte (nas slaodaiche), ach bidh an dàta a leugh sinn dha-rìribh, agus na planaichean fhèin (dè na JOINs a th’ ann, msaa) dìreach mar a tha iad ann an cinneasachadh. Agus faodaidh tu mòran de sgrùdaidhean mar sin a ruith aig an aon àm air aon inneal.

Dh': Nach eil thu a’ smaoineachadh gu bheil beagan dhuilgheadasan an seo? Is e a’ chiad fhear fuasgladh nach obraich ach air PostgreSQL. Tha an dòigh-obrach seo gu math prìobhaideach, chan eil e coitcheann. Is e an dàrna fear gu bheil Kubernetes (agus a h-uile càil a tha teicneòlasan sgòthan a’ dol a-nis) a’ toirt a-steach mòran nodan, agus tha na nodan sin neo-sheasmhach. Agus anns a 'chùis agad tha e na nód stàiteil, seasmhach. Tha na rudan seo a’ toirt còmhstri dhomh.

НС: An toiseach, tha mi ag aontachadh, is e sgeulachd dìreach Postgres a tha seo. Tha mi a’ smaoineachadh ma tha seòrsa de IO dìreach againn agus amar bufair airson cha mhòr a h-uile cuimhne, cha obraich an dòigh-obrach seo - bidh na planaichean eadar-dhealaichte. Ach airson a-nis chan eil sinn ag obair ach le Postgres, chan eil sinn a’ smaoineachadh air feadhainn eile.

Mu Kubernetes. Tha thu fhèin ag innse dhuinn anns a h-uile àite gu bheil stòr-dàta seasmhach againn. Ma dh’ fhailicheas an t-eisimpleir, is e am prìomh rud an diosc a shàbhaladh. An seo tha an àrd-ùrlar gu lèir againn ann an Kubernetes cuideachd, agus tha am pàirt le Postgres air leth (ged a bhios e ann aon latha). Mar sin, tha a h-uile dad mar seo: thuit an suidheachadh, ach shàbhail sinn am PV aige agus dìreach cheangail sinn e ri eisimpleir eile (ùr), mar nach biodh dad air tachairt.

Dh': Bho mo shealladh, bidh sinn a 'cruthachadh pods ann an Kubernetes. K8s - elastagach: tha snaidhmean air an òrdachadh mar a dh’ fheumar. Is e an obair dìreach pod a chruthachadh agus a ràdh gu bheil feum aige air X meud de ghoireasan, agus an uairsin nì K8s a-mach e leis fhèin. Ach tha taic stòraidh ann an Kubernetes fhathast neo-sheasmhach: 1.16, ann 1.17 (chaidh am brath seo fhoillseachadh недели air ais) bidh na feartan sin gu bhith dìreach beta.

Thèid sia mìosan gu bliadhna seachad - bidh e nas seasmhaiche no nas lugha, no co-dhiù thèid ainmeachadh mar sin. An uairsin bidh an comas dealbhan-camara agus ath-mheudachadh a’ fuasgladh do dhuilgheadas gu tur. A chionn gu bheil bunait agad. Tha, is dòcha nach bi e gu math luath, ach tha an astar an urra ri dè a tha “fon chochall”, oir faodaidh cuid de bhuileachadh a chopaigeadh agus a chopaigeadh aig ìre fo-shiostam diosc.

НС: Tha e riatanach cuideachd gun tòisich a h-uile einnsean (Amazon, Google ...) a 'toirt taic don dreach seo - bheir seo beagan ùine cuideachd.

Dh': Chan eil sinn gan cleachdadh fhathast. Bidh sinn a’ cleachdadh ar cuid.

Leasachadh ionadail airson Kubernetes

НС: A bheil thu air tighinn tarsainn air a leithid de mhiann nuair a dh'fheumas tu na pods gu lèir a stàladh air aon inneal agus dèan deuchainn cho beag. Gus dearbhadh bun-bheachd fhaighinn gu sgiobalta, faic gu bheil an tagradh a ’ruith ann an Kubernetes, gun a bhith a’ coisrigeadh dòrlach de dh ’innealan air a shon. Tha Minikube ann, ceart?

Dh': Tha e coltach rium gu bheil a’ chùis seo - air a chleachdadh air aon nód - dìreach mu leasachadh ionadail. No cuid de thaisbeanaidhean air a leithid de phàtran. Ith Minikube, Tha k3s, KIND. Tha sinn a’ gluasad a dh’ionnsaigh cleachdadh Kubernetes IN Docker. A-nis thòisich sinn ag obair leis airson deuchainnean.

НС: B ’àbhaist dhomh a bhith a’ smaoineachadh gur e oidhirp a bha seo air a h-uile pod a phasgadh ann an aon ìomhaigh Docker. Ach thionndaidh e a-mach gu bheil seo mu dheidhinn rudeigin gu tur eadar-dhealaichte. Co-dhiù, tha soithichean fa leth, pods air leth - dìreach ann an Docker.

Dh': Tha. Agus tha aithris caran èibhinn air a dhèanamh, ach is e seo an ciall... Tha goireas againn airson a chleachdadh - gaoir. Tha sinn airson a dhèanamh na mhodh cumhach werf up: “Faigh dhomh Kubernetes ionadail.” Agus an uairsin ruith an cùmhnant an sin werf follow. An uairsin bidh e comasach don leasaiche an IDE a dheasachadh, agus thèid pròiseas a chuir air bhog san t-siostam a chì na h-atharrachaidhean agus ag ath-thogail nan ìomhaighean, gan ath-shuidheachadh gu K8n ionadail. Seo mar a tha sinn airson feuchainn ri fuasgladh fhaighinn air duilgheadas leasachadh ionadail.

Snapshots agus clonadh stòr-dàta ann am fìrinn K8s

НС: Ma thilleas sinn gu lethbhreac-air-sgrìobhadh. Mhothaich mi gu bheil dealbhan sna sgòthan cuideachd. Bidh iad ag obair ann an dòigh eadar-dhealaichte. Mar eisimpleir, ann an GCP: tha eisimpleir ioma-terabyte agad air costa an ear nan Stàitean Aonaichte. Bidh thu a’ gabhail dealbhan bho àm gu àm. Bidh thu a’ togail leth-bhreac den diosc air a’ chosta an iar bho dhealbh - ann am beagan mhionaidean tha a h-uile dad deiseil, bidh e ag obair gu math luath, chan fheumar ach an tasgadan a lìonadh mar chuimhne. Ach tha na clones (dealbhan) sin airson ‘leabhar’ ùr a sholarachadh. Tha seo fionnar nuair a dh'fheumas tu tòrr shuidheachaidhean a chruthachadh.

Ach airson deuchainnean, tha e coltach riumsa gu bheil dealbhan-camara, air am bi thu a’ bruidhinn ann an Docker no air am bruidhinn mi ann an ZFS, btrfs agus eadhon LVM… - leigidh iad leat gun a bhith a’ cruthachadh dàta fìor ùr air aon inneal. Anns an sgòth, bidh thu fhathast a 'pàigheadh ​​​​air an son a h-uile uair agus a' feitheamh chan e diogan, ach mionaidean (agus anns a 'chùis eallach leisg, is dòcha uaireadair).

An àite sin, gheibh thu an dàta seo ann an diog no dhà, ruith an deuchainn agus tilg air falbh e. Bidh na dealbhan seo a’ fuasgladh diofar dhuilgheadasan. Anns a 'chiad chùis - gus sgèile suas agus faigh mac-samhail ùra, agus anns an dàrna fear - airson deuchainnean.

Dh': Chan eil mi ag aontachadh. Is e obair an sgòth a th’ ann a bhith a’ toirt air clonadh meud obrachadh gu ceart. Cha do choimhead mi air an cur an gnìomh, ach tha fios agam mar a nì sinn e air bathar-cruaidh. Tha Ceph againn, leigidh e le meud corporra sam bith (RBD) abair clone agus faigh dàrna leabhar leis na h-aon fheartan ann an deichean milliseconds, IOPS'am, etc. Feumaidh tu tuigsinn gu bheil lethbhreac-air-sgrìobhadh duilich a-staigh. Carson nach bu chòir don sgòth an aon rud a dhèanamh? Tha mi cinnteach gu bheil iad a’ feuchainn ri seo a dhèanamh aon dòigh no dòigh eile.

НС: Ach bheir e fhathast diogan dhaibh, deichean diogan airson eisimpleir a thogail, Docker a thoirt ann, msaa.

Dh': Carson a tha feum air eisimpleir slàn a thogail? Tha eisimpleir againn le 32 cores, 16... agus faodaidh e tighinn a-steach ann - mar eisimpleir, ceithir. Nuair a dh ’òrduicheas sinn an còigeamh fear, thèid an eisimpleir a thogail mu thràth, agus an uairsin thèid a dhubhadh às.

НС: Tha, inntinneach, tha Kubernetes a 'tionndadh a-mach gu bhith na sgeulachd eadar-dhealaichte. Chan eil an stòr-dàta againn ann an K8n, agus tha aon eisimpleir againn. Ach cha toir clonadh stòr-dàta ioma-terabyte barrachd air dà dhiog.

Dh': Tha seo sgoinneil. Ach is e a’ chiad phuing a th’ agam nach e fuasgladh coitcheann a tha seo. Tha, tha e fionnar, ach chan eil e freagarrach ach airson Postgres agus dìreach air aon nód.

НС: Tha e freagarrach chan ann a-mhàin airson Postgres: chan obraich na planaichean sin, mar a thuirt mi, ach ann. Ach mura dèan sinn dragh mu phlanaichean, agus mura feum sinn ach an dàta gu lèir airson deuchainn gnìomh, tha seo freagarrach airson DBMS sam bith.

Dh': O chionn iomadh bliadhna rinn sinn rudeigin coltach ris air snapshots LVM. Is e clasaig a tha seo. Chaidh an dòigh-obrach seo a chleachdadh gu gnìomhach. Chan eil ann an nodan stàiteil ach pian. Leis nach bu chòir dhut an leigeil às, bu chòir dhut an-còmhnaidh cuimhneachadh orra ...

НС: A bheil thu a’ faicinn comas hybrid an seo? Canaidh sinn gur e seòrsa de pod a th’ ann an stàiteil, bidh e ag obair dha grunn dhaoine (mòran luchd-dearbhaidh). Tha aon leabhar againn, ach le taing don t-siostam faidhle, tha na clones ionadail. Ma thuiteas am pod, ach ma dh’ fhanas an diosc, èiridh am pod, cunnt fiosrachadh mu na clones gu lèir, tog a h-uile càil a-rithist agus abair: “Seo na clones agad a’ ruith air na puirt sin, lean ort ag obair còmhla riutha. ”

Dh': Gu teicnigeach tha seo a 'ciallachadh gur e aon pod a th' ann an Kubernetes anns a bheil sinn a 'ruith mòran Postgres.

НС: Tha. Tha crìoch aige: canaidh sinn nach bi barrachd air 10 neach ag obair còmhla ris aig an aon àm. Ma tha feum agad air 20, cuiridh sinn air bhog dàrna pod mar sin. Bidh sinn ga ghleusadh gu h-iomlan, às deidh dhuinn an dàrna leabhar slàn fhaighinn, bidh na h-aon 10 clones “tana” aige. Nach faic thu an cothrom seo?

Dh': Feumaidh sinn cùisean tèarainteachd a chur ris an seo. Tha an seòrsa seo de bhuidheann a’ ciallachadh gu bheil sochairean àrda (comasan) aig a’ pod seo, oir is urrainn dha gnìomhachd neo-àbhaisteach a dhèanamh air an t-siostam faidhle... na sgòthan socraichidh iad an sgeulachd gu lèir le leabhraichean - bidh a h-uile dad “dìreach ag obair”. Bidh ath-mheudachadh, clonadh... Tha tomhas-lìonaidh ann - canaidh sinn: “Cruthaich fear ùr stèidhichte air sin,” agus às deidh diog gu leth gheibh sinn na tha a dhìth oirnn.

НС: Chan eil mi a’ creidsinn ann an diog gu leth airson mòran terabytes. Air Ceph ni thu e fein, ach labhraidh tu air na neoil. Rach don sgòth, dèan clon de leabhar EBS ioma-terabyte air EC2 agus faic dè an coileanadh a bhios ann. Cha toir e beagan dhiog. Tha ùidh mhòr agam cuin a ruigeas iad an ìre seo. Tha mi a 'tuigsinn na tha thu ag ràdh, ach tha mi a' guidhe a bhith eadar-dhealaichte.

Dh': Ceart gu leòr, ach thuirt mi sa mheadhan-ùine, chan e geàrr-ùine. Airson grunn bhliadhnaichean.

Mun ghnìomhaiche airson PostgreSQL à Zalando

Ann am meadhan na coinneimh seo, thàinig Alexey Klyukin, a bha na leasaichear à Zalando, a-steach cuideachd agus bhruidhinn e mu eachdraidh gnìomhaiche PostgreSQL:

Tha e math gun tèid suathadh air a’ chuspair seo san fharsaingeachd: an dà chuid Postgres agus Kubernetes. Nuair a thòisich sinn ga dhèanamh aig Zalando ann an 2017, bha e na chuspair a bha a h-uile duine airson a dhèanamh, ach cha do rinn duine. Bha Kubernetes aig a h-uile duine mu thràth, ach nuair a dh'fhaighnich iad dè a bu chòir a dhèanamh le stòran-dàta, is toil le eadhon daoine Tùr Àrd Kelsey, a shearmonaich K8s, ag ràdh rudeigin mar seo:

“Rach gu seirbheisean fo stiùir agus cleachd iad, na ruith an stòr-dàta ann an Kubernetes. Rud eile, co-dhùinidh na K8n agad, mar eisimpleir, ùrachadh a dhèanamh, cuir dheth na nodan gu lèir, agus itealaichidh an dàta agad fada, fada air falbh. ”

Cho-dhùin sinn gnìomhaiche a dhèanamh a chuireas, an aghaidh na comhairle seo, stòr-dàta Postgres air bhog ann an Kubernetes. Agus bha adhbhar math againn - Pàtran. Is e fàilligeadh fèin-ghluasadach a tha seo airson PostgreSQL, air a dhèanamh ceart, i.e. cleachdadh msaa, consul no ZooKeeper mar stòradh fiosrachaidh mun bhuidheann. A leithid de thasgadh a bheir a h-uile duine a dh'iarras, mar eisimpleir, dè an ceannard a th 'ann an-dràsta, an aon fhiosrachadh - a dh' aindeoin gu bheil a h-uile càil againn air a chuairteachadh - gus nach bi sgoltadh eanchainn ann. A bharrachd air an sin bha againn Dealbh docker dha.

San fharsaingeachd, nochd feum na companaidh airson fèin-ghluasad às deidh dhaibh imrich bho ionad dàta bathar-cruaidh a-staigh chun sgòth. Bha an sgòth stèidhichte air fuasgladh seilbhe PaaS (Platform-as-a-Service). Is e Open Source a th’ ann, ach thug e tòrr obrach gus a chuir an gnìomh. Chaidh a ghairm STEAPAN.

An toiseach, cha robh Kubernetes ann. Nas mionaidiche, nuair a chaidh am fuasgladh againn fhèin a chleachdadh, bha K8n ann mu thràth, ach bha e cho amh nach robh e freagarrach airson cinneasachadh. B’ e, nam bheachd-sa, 2015 no 2016. Ro 2017, bha Kubernetes air fàs gu ìre mhòr aibidh - bha feum air imrich ann.

Agus bha soitheach Docker againn mu thràth. Bha PaaS ann a chleachd Docker. Carson nach fheuch thu K8s? Carson nach sgrìobh thu an gnìomhaiche agad fhèin? Thòisich Murat Kabilov, a thàinig thugainn bho Avito, mar phròiseact air a cheann fhèin - “a chluich” - agus thòisich am pròiseact “air falbh.”

Ach san fharsaingeachd, bha mi airson bruidhinn mu AWS. Carson a bha còd eachdraidheil co-cheangailte ri AWS ...

Nuair a ruitheas tu rudeigin ann an Kubernetes, feumaidh tu tuigsinn gur e obair mar sin a th’ ann an K8n. Tha e daonnan a 'leasachadh, a' leasachadh agus eadhon a 'briseadh sìos bho àm gu àm. Feumaidh tu sùil gheur a chumail air na h-atharrachaidhean gu lèir ann an Kubernetes, feumaidh tu a bhith deiseil airson dàibheadh ​​​​a-steach dha ma thachras rudeigin agus ionnsaich mar a tha e ag obair gu mionaideach - is dòcha barrachd na bhiodh tu ag iarraidh. Tha seo, ann am prionnsapal, a’ buntainn ri àrd-ùrlar sam bith air am bi thu a’ ruith na stòran-dàta agad...

Mar sin, nuair a rinn sinn an aithris, bha Postgres againn a’ ruith air meud a-muigh (EBS sa chùis seo, leis gu robh sinn ag obair air AWS). Dh'fhàs an stòr-dàta, aig àm air choreigin bha feum air ath-mheudachadh: mar eisimpleir, b 'e meud tùsail EBS 100 TB, dh'fhàs an stòr-dàta dha, a-nis tha sinn airson EBS 200 TB a dhèanamh. Ciamar? Canaidh sinn gun urrainn dhut dump / ath-nuadhachadh a dhèanamh air eisimpleir ùr, ach bheir seo ùine mhòr agus bidh ùine downt ann.

Mar sin, bha mi ag iarraidh ath-mheudachadh a leudaicheadh ​​​​an sgaradh EBS agus an uairsin innse don t-siostam faidhle an àite ùr a chleachdadh. Agus rinn sinn e, ach aig an àm sin cha robh API aig Kubernetes airson an obair ath-mheudachadh. Bhon a bha sinn ag obair air AWS, sgrìobh sinn còd airson an API aige.

Chan eil duine a’ cur stad ort bho bhith a’ dèanamh an aon rud airson àrd-ùrlaran eile. Chan eil beachd sam bith anns an aithris nach urrainnear a ruith ach air AWS, agus nach obraich e air a h-uile càil eile. San fharsaingeachd, is e pròiseact Stòr Fosgailte a tha seo: ma tha duine airson cleachdadh an API ùr a luathachadh, tha fàilte ort. Ith GitHub, tarraing iarrtasan - bidh sgioba Zalando a 'feuchainn ri freagairt a thoirt dhaibh gu math luath agus a' brosnachadh a 'ghnìomhaiche. Cho fad 's as aithne dhomh, tha am pròiseact ghabh pàirt aig Google Summer of Code agus cuid de dh’ iomairtean eile den aon seòrsa. Tha Zalando ag obair gu gnìomhach air.

PS Bonus!

Ma tha ùidh agad ann an cuspair PostgreSQL agus Kubernetes, thoir an aire cuideachd gun deach an ath Dimàirt Postgres a chumail an t-seachdain sa chaidh, far an do bhruidhinn mi ri Nikolai Alasdair Kukushkin bho Zalando saor an asgaidh. Tha bhidio bhuaithe ri fhaighinn an seo.

Pps

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann