Èske baz done ap viv nan Kubernetes?

Èske baz done ap viv nan Kubernetes?

Yon jan kanmenm, istorikman, endistri IT la divize an de kan kondisyonèl pou nenpòt ki rezon: moun ki "pou" ak moun ki "kont". Anplis, sijè a nan diskisyon ka konplètman abitrè. Ki OS ki pi bon: Win oswa Linux? Sou yon smartphone Android oswa iOS? Èske ou ta dwe estoke tout bagay nan nwaj yo oswa mete l sou depo frèt RAID epi mete vis yo nan yon sekirite? Èske moun PHP yo gen dwa pou yo rele pwogramasyon? Diskisyon sa yo, pafwa, sèlman ekzistans nan nati epi yo pa gen okenn baz lòt pase enterè espòtif.

Li te jis rive ke ak avenman nan resipyan ak tout sa a cuisine renmen anpil ak docker ak kondisyonèl k8s, deba yo "pou" ak "kont" itilizasyon nouvo kapasite nan divès zòn nan backend la te kòmanse. (Ann fè yon rezèvasyon davans ke byenke Kubernetes yo pral pi souvan endike kòm yon òkestratè nan diskisyon sa a, chwa zouti patikilye sa a pa gen enpòtans fondamantal. Olye de sa, ou ka ranplase nenpòt lòt ki sanble pi pratik ak abitye pou ou. .)

Epi, li ta sanble, sa a ta dwe yon diskisyon senp ant de kote nan menm pyès monnen an. Kòm san sans ak pitye tankou konfwontasyon ki p'ap janm fini an ant Win vs Linux, nan ki moun adekwat egziste yon kote nan mitan an. Men, nan ka a nan containerization, se pa tout bagay se konsa senp. Anjeneral nan diskisyon sa yo pa gen okenn bò dwat, men nan ka "itilize" oswa "pa sèvi ak" resipyan pou estoke baz done, tout bagay vire tèt anba. Paske nan yon sèten sans, tou de sipòtè ak opozan apwòch sa a gen rezon.

Bò klere

Agiman Light Side a ka dekri yon ti tan nan yon fraz: "Bonjou, 2k19 se deyò fenèt la!" Li son popilis, nan kou, men si ou fouye nan sitiyasyon an an detay, li gen avantaj li yo. Ann regle yo kounye a.

Ann di ou gen yon gwo pwojè entènèt. Li te kapab okòmansman bati sou baz yon apwòch mikwosèvis, oswa nan kèk pwen li te vin jwenn li atravè yon chemen evolisyonè - sa a pa trè enpòtan, an reyalite. Ou gaye pwojè nou an nan mikwo-sèvis separe, mete òkestrasyon, balans chaj, ak echèl. Epi, koulye a, ak yon konsyans klè, ou bwè yon mojito nan yon Hammock pandan efè habra olye pou yo leve sèvè tonbe. Men, nan tout aksyon ou dwe konsistan. Trè souvan, se sèlman aplikasyon an li menm—kod la—nan kontenè. Ki lòt bagay nou genyen anplis kòd?

Sa a dwat, done. Kè nenpòt pwojè se done li yo: sa ka swa yon DBMS tipik - MySQL, Postgre, MongoDB, oswa depo yo itilize pou rechèch (ElasticSearch), depo kle-valè pou kachèt - pou egzanp, redis, elatriye. Kounye a nou pa. nou pral pale sou opsyon aplikasyon backend kwochi lè baz done a aksidan akòz demann mal ekri, epi olye nou pral pale sou asire tolerans nan fay nan baz done sa a anba chaj kliyan. Apre yo tout, lè nou containerize aplikasyon nou an epi pèmèt li lib echèl pou trete nenpòt kantite demann fèk ap rantre, sa natirèlman ogmante chaj la sou baz done a.

An reyalite, kanal la pou jwenn aksè nan baz done a ak sèvè a sou kote li kouri vin je a nan zegwi a nan bèl backend containerized nou an. An menm tan an, motif prensipal la nan Virtualization veso se mobilite ak fleksibilite nan estrikti a, ki pèmèt nou òganize distribisyon an nan chaj pik atravè tout enfrastrikti ki disponib pou nou avèk efikasite ke posib. Sa vle di, si nou pa mete kontenè epi woule tout eleman ki egziste nan sistèm nan atravè gwoup la, n ap fè yon erè grav anpil.

Li pi lojik pou gwoupe non sèlman aplikasyon an tèt li, men tou sèvis ki responsab pou estoke done yo. Nan gwoupman ak deplwaye sèvè entènèt ki travay poukont yo epi distribye chaj la nan mitan tèt yo nan k8s, nou deja rezoud pwoblèm nan nan senkronizasyon done - menm kòmantè yo sou posts, si nou pran kèk medya oswa platfòm blog kòm yon egzanp. Nan nenpòt ka, nou gen yon reprezantasyon entra-cluster, menm vityèl, nan baz done a kòm yon ExternalService. Kesyon an se ke baz done a li menm poko gwoupe - sèvè entènèt yo deplwaye nan kib la pran enfòmasyon sou chanjman ki soti nan baz done konba estatik nou an, ki wotasyon separeman.

Ou santi yon trape? Nou itilize k8s oswa Swarm pou distribye chaj la epi evite krazman sèvè entènèt prensipal la, men nou pa fè sa pou baz done a. Men, si baz done a aksidan, Lè sa a, tout enfrastrikti gwoup nou an pa gen okenn sans - ki sa ki bon yo paj wèb vid ki retounen yon erè aksè baz done?

Se poutèt sa li nesesè pou gwoupe pa sèlman sèvè entènèt, jan sa fèt anjeneral, men tou, enfrastrikti baz done a. Se sèlman nan fason sa a nou ka asire yon estrikti ki travay konplètman nan yon ekip, men an menm tan an endepandan youn ak lòt. Anplis, menm si mwatye nan backend nou an "effondre" anba chaj, rès la pral siviv, ak sistèm nan senkronize baz done yo youn ak lòt nan gwoup la ak kapasite nan san limit echèl ak deplwaye grap nouvo pral ede byen vit rive jwenn kapasite ki nesesè yo - si sèlman te gen etajè nan sant done a.

Anplis de sa, modèl baz done distribye nan grap pèmèt ou mennen baz done sa a kote li nesesè; Si nou ap pale de yon sèvis mondyal, Lè sa a, li se byen lojik vire moute yon gwoup entènèt yon kote nan zòn nan San Francisco ak an menm tan an voye pake lè gen aksè nan yon baz done nan rejyon an Moskou ak tounen lakay ou.

Epitou, containerization nan baz done a pèmèt ou bati tout eleman nan sistèm nan nan menm nivo nan abstraksyon. Ki, nan vire, fè li posib jere sistèm sa a dirèkteman nan kòd, pa devlopè, san patisipasyon aktif administratè yo. Devlopè yo te panse ke yon DBMS separe te nesesè pou nouvo sou-pwojè a - fasil! ekri yon fichye yaml, telechaje li nan gwoup la epi w ap fini.

Ak nan kou, operasyon entèn yo anpil senplifye. Di m 'konbyen fwa ou fèmen je ou lè yon nouvo manm ekip mete men l' nan baz done konba a pou travay? Kiyès, an reyalite, se sèlman youn ou genyen epi k ap vire kounye a? Natirèlman, nou tout se granmoun isit la, ak yon kote nou gen yon sovgad fre, e menm pi lwen - dèyè etajè a ak konkonm granmè ak ski fin vye granmoun - yon lòt backup, petèt menm nan depo frèt, paske biwo ou a te deja sou dife yon fwa. Men tou, chak entwodiksyon nan yon nouvo manm ekip ki gen aksè nan enfrastrikti konba a ak, nan kou, nan baz done konba a se yon bokit validol pou tout moun alantou. Oke, ki moun ki konnen l ', yon newbie, petèt li nan kwa-men? Li fè pè, ou pral dakò.

Containerization ak, an reyalite, distribye topoloji fizik baz done pwojè ou a ede pou evite moman validation sa yo. Ou pa fè yon nouvo konfyans? OK! Ann ba li pwòp gwoup li pou travay ak dekonekte baz done a soti nan lòt grap yo - senkronizasyon sèlman pa manyèl pouse ak wotasyon synchrone de kle (youn pou dirije ekip la, lòt la pou admin). E tout moun kontan.

Epi, koulye a li lè yo chanje nan opozan nan clustering baz done.

Kote sonb

Lè n diskite poukisa li pa vo kontenèrize baz done a epi kontinye kouri li sou yon sèl sèvè santral, nou pa pral bese nan diskou nan orthodoxis ak deklarasyon tankou "granpapa te kouri baz done sou pyès ki nan konpitè, epi nou pral tou!" Olye de sa, ann eseye vini ak yon sitiyasyon kote containerization ta aktyèlman peye dividann byen mèb.

Dakò, pwojè yo ki reyèlman bezwen yon baz nan yon veso ka konte sou dwèt yo nan yon sèl men pa pa pi bon operatè a fraisage machin. Pou pati ki pi, menm itilizasyon k8s oswa Docker Swarm tèt li se redondants - byen souvan yo itilize zouti sa yo akòz battage jeneral teknoloji ak atitid "Toupwisan" nan moun nan sèks yo pouse tout bagay nan la. nwaj ak kontenè. Oke, paske kounye a li nan alamòd ak tout moun fè li.

Nan omwen mwatye nan ka yo, lè l sèvi avèk Kubernetis oswa jis Docker sou yon pwojè se redondants. Pwoblèm lan se ke se pa tout ekip oswa konpayi externalisation anboche pou kenbe enfrastrikti kliyan an okouran de sa. Li pi mal lè resipyan yo enpoze, paske li koute yon sèten kantite pyès monnen kliyan an.

An jeneral, gen yon opinyon ke mafya docker / kib la ap kraze kliyan estipid ki konfye pwoblèm enfrastrikti sa yo. Apre yo tout, yo nan lòd yo travay ak grap, nou bezwen enjenyè ki kapab sa a epi jeneralman konprann achitekti a nan solisyon an aplike. Nou yon fwa te deja dekri ka nou an ak piblikasyon Repiblik la - la nou te fòme ekip kliyan an pou travay nan reyalite Kubernetis, ak tout moun te satisfè. Epi li te desan. Souvan, k8s "implementers" pran enfrastrikti kliyan an an otaj - paske kounye a sèlman yo konprann ki jan tout bagay ap travay la; pa gen okenn espesyalis sou bò kliyan an.

Koulye a, imajine ke nan fason sa a nou konfye pa sèlman pati nan sèvè entènèt, men tou, antretyen an baz done. Nou te di ke BD se kè a, epi pèt kè a fatal pou nenpòt òganis vivan. Nan ti bout tan, kandida yo pa pi bon an. Se konsa, olye pou yo battage Kubernetis, anpil pwojè ta dwe tou senpleman pa deranje ak tarif nòmal pou AWS, ki pral rezoud tout pwoblèm yo ak chaj la sou sit yo / pwojè yo. Men, AWS pa alamòd ankò, ak show-off yo vo plis pase lajan - malerezman, nan anviwònman IT a tou.

OK. Petèt pwojè a reyèlman bezwen clustering, men si tout bagay klè ak aplikasyon pou apatrid, Lè sa a, ki jan nou ka òganize koneksyon rezo desan pou yon baz done grap?

Si nou ap pale de yon solisyon jeni san pwoblèm, ki se sa ki tranzisyon an nan k8s se, Lè sa a, tèt fè mal prensipal nou an se replikasyon done nan yon baz done grap. Gen kèk DBMS yo okòmansman byen fidèl a distribisyon done ant ka endividyèl yo. Anpil lòt yo pa tèlman akeyan. Ak byen souvan agiman prensipal la nan chwazi yon DBMS pou pwojè nou an se pa kapasite nan repwodui ak resous minimòm ak depans jeni. Espesyalman si pwojè a pa te okòmansman te planifye kòm yon mikwosèvis, men tou senpleman evolye nan direksyon sa a.

Nou panse ke pa gen okenn bezwen pale sou vitès la nan kondui rezo - yo dousman. Moun sa yo. Nou toujou pa gen yon opòtinite reyèl, si yon bagay rive, rekòmanse yon egzanp DBMS yon kote ki gen plis, pou egzanp, pouvwa processeur oswa RAM gratis. Nou pral trè byen vit kouri nan pèfòmans nan subsistèm nan disk virtualize. An konsekans, DBMS yo dwe kloure sou pwòp seri machin pèsonèl li ki sitiye nan tou pre. Oswa li nesesè yon jan kanmenm separeman refwadi ase rapid senkronizasyon done pou rezèv yo sipoze.

Kontinye sijè a nan sistèm dosye vityèl: Docker Volumes, malerezman, pa gen pwoblèm. An jeneral, nan yon pwoblèm tankou alontèm depo done serye, mwen ta renmen fè fè ak rapid yo ki pi teknikman senp. Epi ajoute yon nouvo kouch abstrè soti nan FS veso a nan FS lame paran an se yon risk nan tèt li. Men, lè operasyon an nan sistèm nan sipò kontenèr tou rankontre difikilte ak transmèt done ant kouch sa yo, Lè sa a, li vrèman yon dezas. Nan moman sa a, pi fò nan pwoblèm limanite pwogresis yo konnen yo sanble yo te elimine. Men, ou konprann, pi konplèks mekanis lan, pi fasil li kraze.

Nan limyè de tout "avantur" sa yo, li se pi plis pwofitab ak pi fasil kenbe baz done a nan yon sèl kote, e menm si ou bezwen vetenè aplikasyon an, kite l kouri poukont li epi atravè pòtay distribisyon an resevwa kominikasyon similtane ak la. baz done, ki pral li ak ekri sèlman yon fwa ak Nan yon sèl kote. Apwòch sa a diminye chans pou erè ak desinkronizasyon nan yon minimòm.

Ki sa nap mennen? Anplis, kontenèrizasyon baz done apwopriye kote gen yon bezwen reyèl pou li. Ou pa ka mete yon baz done plen aplikasyon epi vire l tankou si ou te gen de douzèn mikwosèvis - li pa travay konsa. Ak sa a dwe byen klè konprann.

Olye pou yo pwodiksyon an

Si w ap tann yon konklizyon klè "pou virtualize baz done a oswa ou pa," Lè sa a, nou pral desevwa ou: li pa pral isit la. Paske lè w ap kreye nenpòt solisyon enfrastrikti, youn pa dwe gide pa mòd ak pwogrè, men, anvan tout bagay, pa bon sans.

Gen pwojè pou prensip ak zouti ki vini ak Kubernetis anfòm parfe, ak nan pwojè sa yo gen lapè omwen nan zòn nan backend. Epi gen pwojè ki pa bezwen kontenèrizasyon, men yon enfrastrikti sèvè nòmal, paske yo fondamantalman pa ka re-echèl nan modèl gwoup mikwosèvis la, paske yo pral tonbe.

Sous: www.habr.com

Add nouvo kòmantè