KÄ izveidot hibrÄ«da mÄkoni, izmantojot Kubernetes, kas var aizstÄt DBaaS
Mani sauc Petrs Zaicevs, es esmu izpilddirektors, dibinÄtÄjs Perkona un es gribu jums pateikt:
kÄ mÄs nonÄcÄm no atvÄrtÄ pirmkoda risinÄjumiem lÄ«dz datu bÄzei kÄ pakalpojumam;
kÄdas pieejas pastÄv datu bÄzu izvietoÅ”anai mÄkonÄ«;
kÄ Kubernetes var aizstÄt DBaaS, novÄrÅ”ot atkarÄ«bu no pÄrdevÄja un saglabÄjot DBVS kÄ pakalpojuma vienkÄrŔību.
Raksts tika sagatavots, pamatojoties uz Mail.ru Cloud Solutions & Tarantool ziÅojumu vietnÄ @Databases Meetup. Ja nevÄlies lasÄ«t, vari noskatÄ«ties:
KÄ mÄs no atvÄrtÄ pirmkoda nonÄcÄm lÄ«dz datu bÄzei kÄ pakalpojumam mÄkonÄ«
Es strÄdÄju atvÄrtÄ pirmkoda sistÄmÄ kopÅ” 90. gadu beigÄm. Pirms divdesmit gadiem atvÄrtÄ koda, piemÄram, datu bÄzes, izmantoÅ”ana nebija tik vienkÄrÅ”a. Bija jÄlejupielÄdÄ avota kods, jÄpielÄgo, jÄapkopo un tikai tad jÄizmanto.
PÄc tam atvÄrtÄ koda tika veikta virkne vienkÄrÅ”ojumu:
Tar.gz un INSTALL avoti, kas bija jÄapkopo;
pakotnes ar atkarÄ«bÄm, piemÄram, .deb un .rpm, kur jums ir jÄinstalÄ tikai pakotÅu kopa;
pakeÅ”u krÄtuves, piemÄram, APT un YUM, ar kurÄm instalÄÅ”ana notiek automÄtiski;
risinÄjumi, piemÄram, Docker un Snap, kas ļauj saÅemt pakotnes, instalÄjot bez ÄrÄjÄm atkarÄ«bÄm.
TajÄ paÅ”Ä laikÄ, atŔķirÄ«bÄ no situÄcijas pirms 20 gadiem, kad visi bija montÄžas eksperti, tagad lielÄkÄ daļa izstrÄdÄtÄju nevar izveidot izmantotos rÄ«kus no pirmavota.
PatiesÄ«bÄ tas nav slikti, jo:
MÄs varam izmantot sarežģītÄku, bet lietotÄjam draudzÄ«gÄku programmatÅ«ru. PiemÄram, pÄrlÅ«kprogramma ir Ärti lietojama, taÄu tajÄ ir iekļauti daudzi atvÄrtÄ pirmkoda komponenti, un to ir neÄrti izveidot no nulles.
VairÄk cilvÄku var kļūt par atvÄrtÄ pirmkoda un citas programmatÅ«ras izstrÄdÄtÄjiem, uzÅÄmumi izmanto vairÄk programmatÅ«ras, un nepiecieÅ”amÄ«ba pÄc tÄs ir lielÄka.
NegatÄ«vÄ puse ir tÄda, ka nÄkamais vienkÄrÅ”oÅ”anas solis ir saistÄ«ts ar mÄkoÅrisinÄjumu izmantoÅ”anu, un tas noved pie noteikta pÄrdevÄja bloÄ·ÄÅ”anas, tas ir, piesaistes vienam piegÄdÄtÄjam. MÄs izmantojam vienkÄrÅ”us risinÄjumus, un pakalpojumu sniedzÄji izmanto atvÄrtÄ pirmkoda komponentus, taÄu patiesÄ«bÄ tie ir pienagloti vienÄ no lielajiem mÄkoÅiem. Tas nozÄ«mÄ, ka vienkÄrÅ”Äkais un ÄtrÄkais atvÄrtÄ koda (un ar to saderÄ«gas programmatÅ«ras) izvietoÅ”anas veids ir mÄkoÅos, izmantojot patentÄtu API.
RunÄjot par datu bÄzÄm mÄkonÄ«, ir divas pieejas:
Salieciet datu bÄzes infrastruktÅ«ru, tÄpat kÄ parastajÄ datu centrÄ. Tas ir, Åemiet standarta veidoÅ”anas blokus: aprÄÄ·inu, krÄtuvi un tÄ tÄlÄk, instalÄjiet uz tiem Linux un datubÄzi un konfigurÄjiet tos.
Izmantojiet datu bÄzi kÄ pakalpojumu, kur pakalpojumu sniedzÄjs piedÄvÄ gatavu datu bÄzi mÄkonÄ«.
DBaaS Å”obrÄ«d ir strauji augoÅ”s tirgus, jo tas ļauj izstrÄdÄtÄjiem strÄdÄt tieÅ”i ar datu bÄzÄm un samazina ikdienas darbu. Pakalpojumu sniedzÄjs apÅemas nodroÅ”inÄt augstu pieejamÄ«bu un vieglu mÄrogoÅ”anu, datu bÄzes ielÄpu, dublÄÅ”anu un veiktspÄjas regulÄÅ”anu.
Divu veidu datu bÄze kÄ pakalpojums, kura pamatÄ ir atvÄrtais avots, un alternatÄ«va Kubernetes formÄ
Ir divu veidu datu bÄze kÄ pakalpojums atvÄrtÄm datu bÄzÄm:
Standarta atvÄrtÄ pirmkoda produkts, kas iepakots administrÄcijas aizmugursistÄmÄ, lai to varÄtu viegli izvietot un pÄrvaldÄ«t.
Uzlabots komerciÄls risinÄjums ar dažÄdiem papildinÄjumiem, kas ir savietojams ar atvÄrto avotu.
Abas iespÄjas samazina migrÄcijas iespÄju starp mÄkoÅiem un samazina datu un lietojumprogrammu pÄrnesamÄ«bu. PiemÄram, neskatoties uz to, ka dažÄda veida mÄkoÅi pamatÄ atbalsta vienu un to paÅ”u standarta MySQL, starp tiem ir bÅ«tiskas atŔķirÄ«bas: darbÄ«bÄ, veiktspÄjÄ, dublÄjumkopijÄ utt. MigrÄÅ”ana no viena mÄkoÅa uz citu var bÅ«t sarežģīta, jo Ä«paÅ”i sarežģītÄs lietojumprogrammÄs.
Un te rodas jautÄjums ā vai ir iespÄjams iegÅ«t Database ÄrtÄ«bas kÄ pakalpojumu, bet kÄ vienkÄrÅ”u atvÄrtÄ koda risinÄjumu?
SliktÄ ziÅa ir tÄ, ka diemžÄl tirgÅ« vÄl nav tÄdu risinÄjumu. LabÄ ziÅa ir tÄda, ka ir Kubernetes, kas ļauj ieviest Å”Ädus risinÄjumus.
Kubernetes ir mÄkoÅa vai datu centra operÄtÄjsistÄma, kas ļauj izvietot un pÄrvaldÄ«t lietojumprogrammu vairÄkos serveros klasterÄ«, nevis vienÄ resursdatorÄ.
Tagad Kubernetes ir lÄ«deris Å”Ädas programmatÅ«ras kategorijÄ. Å ÄdÄm problÄmÄm bija daudz dažÄdu risinÄjumu, taÄu tas kļuva par standartu. Daudzi uzÅÄmumi, kas agrÄk koncentrÄjÄs uz alternatÄ«viem risinÄjumiem, tagad koncentrÄjas uz savu produktu pielÄgoÅ”anu Kubernetes atbalstam.
TurklÄt Kubernetes ir universÄls risinÄjums, kas tiek atbalstÄ«ts daudzu piegÄdÄtÄju privÄtajos, publiskajos un hibrÄ«dos mÄkoÅos, piemÄram: AWS, Google Cloud, Microsoft Azure, Mail.ru mÄkoÅa risinÄjumi.
KÄ Kubernetes darbojas ar datu bÄzÄm
Kubernetes sÄkotnÄji tika izstrÄdÄts bezvalsts lietojumprogrammÄm, kas apstrÄdÄ datus, bet neko neuzglabÄ, piemÄram, mikropakalpojumiem vai tÄ«mekļa lietojumprogrammÄm. Datu bÄzes atrodas spektra otrÄ galÄ, tas ir, tÄs ir statusa lietojumprogrammas. Un Kubernetes sÄkotnÄji nebija paredzÄts Å”Ädiem lietojumiem.
TomÄr ir funkcijas, kas nesen parÄdÄ«jÄs Kubernetes, kas ļauj izmantot datu bÄzes un citas statusa lietojumprogrammas:
StatefulSet koncepcija ir vesela virkne primitÄ«vu notikumu apstrÄdei, lai apturÄtu podziÅu darbÄ«bu un ieviestu Graceful Shutdown (paredzama lietojumprogrammas izslÄgÅ”ana).
PastÄvÄ«gie sÄjumi ir datu krÄtuves, kas ir saistÄ«tas ar podiem, Kubernetes pÄrvaldÄ«bas objektiem.
Operator Framework - tas ir, iespÄja izveidot komponentus datu bÄzu un citu statusu lietojumprogrammu pÄrvaldÄ«bai, kas izplatÄ«tas daudzos mezglos.
Jau Å”obrÄ«d publiskajos mÄkoÅos ir lielas Databases as a Service, kuru aizmugure ir Kubernetes, piemÄram: CockroachCloud, InfluxDB, PlanetScale. Tas nozÄ«mÄ, ka Kubernetes datubÄze ir ne tikai teorÄtiski iespÄjama, bet arÄ« praktiski darbÄ«ba.
Percona ir divi Kubernetes atvÄrtÄ pirmkoda risinÄjumi:
Kubernetes operators Percona serverim MongoDB.
Kubernetes Operator for XtraDB CLUSTER ir pakalpojums, kas ir saderÄ«gs ar MySQL un nodroÅ”ina augstu pieejamÄ«bu un konsekvenci. Varat arÄ« izmantot vienu mezglu, ja nav nepiecieÅ”ama augsta pieejamÄ«ba, piemÄram, izstrÄdÄtÄju datu bÄzei.
Kubernetes lietotÄjus var iedalÄ«t divÄs grupÄs. Daži cilvÄki Kubernetes operatorus izmanto tieÅ”i ā tie galvenokÄrt ir pieredzÄjuÅ”i lietotÄji, kuriem ir laba izpratne par Ŕīs tehnoloÄ£ijas darbÄ«bu. Citi to palaiž aizmugursistÄmÄ - Å”Ädus lietotÄjus interesÄ kaut kas lÄ«dzÄ«gs Database as a Service, viÅi nevÄlas iedziļinÄties Kubernetes niansÄs. Otrajai lietotÄju grupai mums ir vÄl viens atvÄrtÄ pirmkoda risinÄjums - Percona DBaaS CLI Tool. Å is ir eksperimentÄls risinÄjums tiem, kas vÄlas iegÅ«t atvÄrtÄ pirmkoda DBaaS, kura pamatÄ ir Kubernetes, bez dziļas izpratnes par tehnoloÄ£iju.
KÄ palaist Percona DBaaS pakalpojumÄ Google Kubernetes Engine
Google Kubernetes Engine, manuprÄt, ir viena no funkcionÄlÄkajÄm Kubernetes tehnoloÄ£ijas ievieÅ”anÄm. Tas ir pieejams daudzos pasaules reÄ£ionos, un tam ir vienkÄrÅ”s un Ärts komandrindas rÄ«ks (SDK), kas ļauj izveidot skriptus, nevis manuÄli pÄrvaldÄ«t platformu.
Lai mÅ«su DBaaS darbotos, mums ir nepiecieÅ”ami Å”Ädi komponenti:
# Add the Cloud SDK distribution URI as a package source
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg]
http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk
Percona DBaaS CLI instalÄÅ”ana
InstalÄjiet no Percona krÄtuvÄm. Percona DBaaS CLI rÄ«ks joprojÄm ir eksperimentÄls produkts, tÄpÄc tas atrodas eksperimentÄlajÄ repozitorijÄ, kas ir jÄiespÄjo atseviŔķi, pat ja jums jau ir instalÄti Percona repozitoriji.
Iestatiet Percona repozitorijus, izmantojot Percona izlaiÅ”anas rÄ«ku. Vispirms jums ir jÄlejupielÄdÄ un jÄinstalÄ oficiÄlÄ Percona izlaiduma pakotne:
Vispirms jums jÄpiesakÄs savÄ Google kontÄ. TurklÄt Google Cloud ļauj vienam lietotÄjam izmantot vairÄkus neatkarÄ«gus projektus, tÄpÄc jums ir jÄnorÄda darba projekts, izmantojot Ŕī projekta kodu:
gcloud auth login
gcloud config set project hidden-brace-236921
TÄlÄk mÄs izveidojam kopu. DemonstrÄcijai es izveidoju Kubernetes klasteru, kurÄ ir tikai trÄ«s mezgli - tas ir minimums, kas nepiecieÅ”ams augstai pieejamÄ«bai:
PÄc tam mÄs izveidojam nosaukumvietu un aktivizÄjam to. VÄrdtelpa, rupji runÄjot, ir arÄ« kÄ projekts vai vide, bet jau ir Kubernetes klastera iekÅ”pusÄ. Tas ir neatkarÄ«gs no Google Cloud projektiem:
Kad esam veikuÅ”i Ŕīs dažas darbÄ«bas, mÄs varam sÄkt trÄ«s mezglu kopu ar Å”o vienkÄrÅ”o komandu:
# percona-dbaas mysql create-db example
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider: k8s
Engine: pxc
Resource Name: example
Resource Endpoint: example-proxysql.my-namespace.pxc.svc.local
Port: 3306
User: root
Pass: Nt9YZquajW7nfVXTTrP
Status: ready
KÄ izveidot savienojumu ar kopu
PÄc noklusÄjuma tas ir pieejams tikai iekÅ”Ä Kubernetes. Tas ir, tas nav pieejams no Ŕī servera, no kura palaidÄt komandu āIzveidotā. Lai tas bÅ«tu pieejams, piemÄram, testiem ar klientu, jums ir jÄpÄrsÅ«ta ports, izmantojot Port Mapping:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Uzlabotas klasteru pÄrvaldÄ«bas komandas
Datu bÄze par publisko IP
Ja vÄlaties pastÄvÄ«gÄku risinÄjumu klasteru pieejamÄ«bai, varat iegÅ«t ÄrÄju IP adresi. Å ajÄ gadÄ«jumÄ datu bÄze bÅ«s pieejama no jebkuras vietas. Tas ir mazÄk droÅ”i, bet bieži vien ÄrtÄk. ÄrÄjam IP mÄs izmantojam Å”Ädu komandu:
# percona-dbaas mysql create-db exposed
--options="proxysql.serviceType=LoadBalancer"
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider: k8s
Engine: pxc
Resource Name: exposed
Resource Endpoint: 104.154.133.197
Port: 3306
User: root
Pass: k0QVxTr8EVfgyCLYse
Status: ready
To access database please run the following command:
mysql -h 104.154.133.197 -P 3306 -uroot -pk0QVxTr8EVfgyCLYse
Skaidri iestatiet paroli
TÄ vietÄ, lai sistÄma nejauÅ”i Ä£enerÄtu paroli, varat to iestatÄ«t tieÅ”i:
Å is ir risinÄjums testÄÅ”anas uzdevumiem, lai pÄc iespÄjas ÄtrÄk un vienkÄrÅ”Äk sÄktu MySQL darbÄ«bu, pÄrbaudÄ«tu to un pÄc tam izslÄgtu vai izmantotu izstrÄdei.
Percona DBaaS CLI rÄ«ks palÄ«dz sasniegt DBaaS lÄ«dzÄ«gu risinÄjumu vietnÄ Kubernetes. TajÄ paÅ”Ä laikÄ mÄs turpinÄm strÄdÄt pie tÄ funkcionalitÄtes un lietojamÄ«bas.
Å is ziÅojums pirmo reizi tika prezentÄts plkst @Databases Meetup Mail.ru Cloud Solutions&Tarantool. Skaties Video citas izrÄdes un abonÄjiet notikumu paziÅojumus Telegram Ap Kubernetes Mail.ru grupÄ.