ProHoster > Blog > Administrazioa > Nola eraiki hodei hibrido bat DBaaS ordezkatu dezakeen Kubernetes erabiliz
Nola eraiki hodei hibrido bat DBaaS ordezkatu dezakeen Kubernetes erabiliz
Nire izena Petr Zaitsev da, zuzendari nagusia naiz, sortzailea percona eta esan nahi dizut:
nola heldu ginen kode irekiko irtenbideetatik Database as a Servicera;
zer ikuspegi dauden datu-baseak hodeian zabaltzeko;
Kubernetes-ek nola ordezkatu dezakeen DBaaS, hornitzaileen mendekotasuna ezabatuz eta DBMS zerbitzu gisa soiltasuna mantenduz.
Artikulua Mail.ru Cloud Solutions & Tarantool-en @Databases Meetup-en txosten batean oinarrituta prestatu zen. Irakurri nahi ez baduzu, ikus dezakezu:
Nola iritsi ginen kode irekitik Database zerbitzu gisa hodeian
90eko hamarkadaren amaieratik kode irekian lan egiten dut. Duela hogei urte, kode irekia erabiltzea, datu-baseak adibidez, ez zen hain erraza. Beharrezkoa zen iturburu-kodea deskargatu, adabakia, konpilatu eta gero bakarrik erabiltzea.
Ondoren, kode irekiak sinplifikazio batzuk egin zituen:
Konpilatu behar ziren Tar.gz eta INSTALL iturriak;
.deb eta .rpm bezalako menpekotasunak dituzten paketeak, non pakete multzo bat bakarrik instalatu behar duzun;
APT eta YUM bezalako pakete-biltegiak, eta horiekin instalazioa automatikoa da;
Docker eta Snap bezalako irtenbideak, kanpoko menpekotasunik gabe paketeak instalazio bidez jasotzeko aukera ematen dutenak.
Ondorioz, errazagoa da kode irekiko softwarea erabiltzea eta, gainera, horrelako aplikazioak garatzeko sartzeko oztopoak murrizten ditu.
Aldi berean, duela 20 urteko egoera ez bezala, mundu guztiak muntaian adituak zirenean, gaur egun garatzaile gehienek ezin dituzte iturritik eraiki erabiltzen dituzten tresnak.
Izan ere, hau ez da txarra, zeren eta:
Software konplexuagoa baina erabilerrazagoa erabil dezakegu. Adibidez, arakatzailea erabiltzeko erosoa da, baina kode irekiko osagai asko biltzen ditu eta hutsetik eraikitzea deserosoa da.
Jende gehiago kode irekiko eta beste software batzuen garatzaile bihur daiteke, enpresek software gehiago erabiltzen dute eta horren beharra handiagoa da.
Alde txarra da sinplifikazioaren hurrengo urratsa hodeiko soluzioen erabilerarekin lotuta dagoela, eta horrek saltzaileen blokeo jakin bat dakar, hau da, hornitzaile bati lotzea. Guk irtenbide sinpleak erabiltzen ditugu eta hornitzaileek kode irekiko osagaiak erabiltzen dituzte, baina egia esan hodei handietako batean daude iltzatuta. Hau da, kode irekia (eta harekin bateragarria den softwarea) zabaltzeko modurik errazena eta azkarrena hodeietan dago, jabedun API bat erabiliz.
Hodeian dauden datu-baseei dagokienez, bi ikuspegi daude:
Muntatu datu-basearen azpiegitura, ohiko datu-zentro batean bezala. Hau da, eraikuntza-bloke estandarrak hartu: konputatu, biltegiratu eta abar, instalatu Linux eta datu-base bat horietan, eta konfiguratu.
Erabili Datu-basea Zerbitzu gisa, non hornitzaileak prest egindako datu-base bat eskaintzen duen hodei barruan.
DBaaS oraintxe hazten ari den merkatua da, garatzaileei datu-baseekin zuzenean lan egiteko aukera ematen dielako eta ohiko lana gutxitzen duelako. Hornitzaileak erabilgarritasun handia eta eskalatze erraza, datu-baseen adabakia, babeskopiak eta errendimenduaren doikuntza bermatzeko konpromisoa hartzen du.
Bi datu-base mota kode irekian oinarritutako Zerbitzu gisa eta alternatiba bat Kubernetes moduan
Datu-baseak zerbitzu gisa bi mota daude datu-base irekietarako:
Kode irekiko produktu estandar bat administrazioaren backend batean bilduta inplementatzeko eta kudeatzeko errazak izateko.
Irtenbide komertzial aurreratua hainbat gehigarri dituena, kode irekiarekin bateragarria.
Bi aukerak hodeien artean migratzeko aukera murrizten dute eta datuen eta aplikazioen eramangarritasuna murrizten dute. Esate baterako, hodei mota ezberdinek funtsean MySQL estandar bera onartzen duten arren, alde handiak daude haien artean: funtzionamenduan, errendimenduan, babeskopian, etab. Hodei batetik bestera migratzea zaila izan daiteke, batez ere aplikazio konplexuetarako.
Eta hemen galdera sortzen da: posible al da Datu-basearen erosotasuna eskuratzea Zerbitzu gisa, baina kode irekiko irtenbide soil gisa?
Albiste txarra da, zoritxarrez, oraindik ez dagoela horrelako irtenbiderik merkatuan. Albiste ona da Kubernetes dagoela, eta horrek irtenbide horiek ezartzeko aukera ematen du.
Kubernetes hodeirako edo datu-zentrorako sistema eragile bat da, eta aplikazio bat ostalari bakarrean baino zerbitzari anitzetan zabaldu eta kudeatzeko aukera ematen du.
Orain Kubernetes liderra da horrelako softwareen kategorian. Hainbat irtenbide zeuden horrelako arazoetarako, baina estandar bihurtu zen. Konponbide alternatiboetan zentratzen ziren enpresa asko orain beren produktuak Kubernetes laguntzarako egokitzera bideratzen ari dira.
Horrez gain, Kubernetes saltzaile askoren hodei pribatu, publiko eta hibridoetan onartzen den irtenbide unibertsala da, adibidez: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.
Kubernetes-ek datu-baseekin nola funtzionatzen duen
Kubernetes jatorriz datuak prozesatzen dituzten baina ezer gordetzen ez duten estaturik gabeko aplikazioetarako diseinatu zen, adibidez, mikrozerbitzuak edo web aplikazioak. Datu-baseak espektroaren beste muturrean daude, hau da, egoera-aplikazioak dira. Eta Kubernetes ez zen jatorriz aplikazio horietarako pentsatuta.
Hala ere, azkenaldian Kubernetes-en agertu diren ezaugarriak daude datu-baseak eta beste egoera-aplikazio batzuk erabiltzeko aukera ematen dutenak:
StatefulSet kontzeptua primitibo sorta oso bat da, poden lana geldiarazteko eta Graceful Shutdown (aplikazioaren ixtea aurreikus daitekeen) ezartzeko gertaerak prozesatzeko.
Bolumen iraunkorrak podekin, Kubernetes kudeaketa-objektuekin lotutako datu-biltegiak dira.
Operator Framework - hau da, nodo askotan banatutako datu-baseak eta beste egoera-aplikazio batzuk kudeatzeko osagaiak sortzeko gaitasuna.
Dagoeneko gaur egun hodei publikoetan Datu-base handiak daude Zerbitzu gisa, eta horien atzealdea Kubernetes da, adibidez: CockroachCloud, InfluxDB, PlanetScale. Hau da, Kubernetes-en datu-base bat teorikoki posible den zerbait ez ezik, praktikan funtzionatzen duen zerbait ere bada.
Perconak kode irekiko bi irtenbide ditu Kubernetesentzat:
Kubernetes Operator for XtraDB CLUSTER MySQL-rekin bateragarria den eta erabilgarritasun eta koherentzia handia eskaintzen duen zerbitzua da. Nodo bakarra ere erabil dezakezu erabilgarritasun handia behar ez bada, adibidez garatzaileen datu-base baterako.
Kubernetesen erabiltzaileak bi taldetan bana daitezke. Batzuek Kubernetes Operadoreak zuzenean erabiltzen dituzte; teknologiaren funtzionamendua ondo ulertzen duten erabiltzaile aurreratuak dira batez ere. Beste batzuek backend-ean exekutatzen dute - erabiltzaile horiek Datu-basea Zerbitzu gisa bezalako zerbait interesatzen zaie, ez dute Kubernetesen Γ±abarduratan sakondu nahi. Bigarren erabiltzaile taldearentzat, kode irekiko beste irtenbide bat dugu - Percona DBaaS CLI Tool. Hau irtenbide esperimentala da Kubernetesen oinarritutako kode irekiko DBaaS bat lortu nahi dutenentzat, teknologia sakonki ulertu gabe.
Nola exekutatu Percona-ren DBaaS Google Kubernetes Engine-n
Google Kubernetes Engine, nire ustez, Kubernetes teknologiaren inplementaziorik funtzionalenetako bat da. Munduko eskualde askotan dago eskuragarri eta Komando Lineako Tresna (SDK) sinple eta erosoa du, plataforma eskuz kudeatu beharrean script-ak sortzeko aukera ematen duena.
Gure DBaaS funtziona dezan, osagai hauek behar ditugu:
Kubectl.
Google Cloud SDK.
Percona DBaaS CLI.
Instalatu kubectl
Zure sistema eragilerako paketea instalatzen dugu, Ubunturen adibidea ikusiko dugu. Xehetasun gehiago Hemen.
Software paketea modu berean instalatzen dugu. Xehetasun gehiago Hemen.
# 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 instalatzen
Instalatu Percona biltegietatik. Percona DBaaS CLI Tresna oraindik produktu esperimentala da, beraz, biltegi esperimentalean dago, eta hori bereiz gaitu behar da, nahiz eta dagoeneko Percona biltegiak instalatuta dituzun.
Konfiguratu Percona biltegiak percona-release tresna erabiliz. Lehenik eta behin Percona-ren percona-release pakete ofiziala deskargatu eta instalatu behar duzu:
Lehenik eta behin, zure Google kontuan saioa hasi behar duzu. Gainera, Google Cloud-ek erabiltzaile batek proiektu independente asko izan ditzake, beraz, lan-proiektu bat zehaztu behar duzu proiektu honen kodea erabiliz:
gcloud auth login
gcloud config set project hidden-brace-236921
Ondoren, kluster bat sortuko dugu. Demorako, hiru nodo baino ez dituen Kubernetes kluster bat sortu nuen - hau da erabilgarritasun handiko behar den gutxienekoa:
Ondoren, izen-espazio bat sortu eta aktibo bihurtzen dugu. Namespace, gutxi gorabehera, proiektu edo ingurune bat bezalakoa da, baina dagoeneko Kubernetes kluster baten barruan dago. Google Cloud proiektuetatik independentea da:
Urrats hauek igaro ondoren, hiru nodoko kluster bat abiarazi dezakegu komando sinple honekin:
# 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
Nola konektatu kluster batera
Lehenespenez, Kubernetesen barruan bakarrik dago erabilgarri. Hau da, "Sortu" komandoa exekutatu duzun zerbitzari honetatik ez dago eskuragarri. Eskuragarri izan dadin, adibidez, bezero batekin probak egiteko, portua birbidali behar duzu Port Mapping bidez:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Kluster kudeaketarako komando aurreratuak
IP publikoari buruzko datu-basea
Klusterren erabilgarritasunerako irtenbide iraunkorragoa nahi baduzu, kanpoko IP helbide bat lor dezakezu. Kasu honetan, datu-basea edozein lekutatik eskuragarri egongo da. Hau ez da hain segurua, baina askotan erosoagoa da. Kanpoko IPrako komando hau erabiltzen dugu:
# 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
Ezarri pasahitza esplizituki
Sistemak ausaz pasahitza sortu beharrean, pasahitza esplizituki ezar dezakezu:
MySQL ahalik eta azkarren eta errazen martxan jartzeko zereginak probatzeko irtenbide bat da, probatu eta gero itzali edo garapenerako erabiltzeko.
Percona DBaaS CLI tresnak Kubernetesen DBaaS moduko irtenbide bat lortzen laguntzen dizu. Aldi berean, bere funtzionaltasuna eta erabilgarritasuna lantzen jarraitzen dugu.