Kif tibni sħaba ibrida billi tuża Kubernetes li jista 'jissostitwixxi DBaaS
Jisimni Petr Zaitsev, jien il-Kap Eżekuttiv, fundatur percona u rrid ngħidlek:
kif ġejna minn soluzzjonijiet ta’ sors miftuħ għal Database bħala Servizz;
liema approċċi jeżistu għall-iskjerament tad-databases fil-cloud;
kif Kubernetes jista 'jissostitwixxi d-DBaaS, jelimina d-dipendenza tal-bejjiegħ u jżomm is-sempliċità tad-DBMS bħala servizz.
L-artiklu tħejja bbażat fuq rapport f'@Databases Meetup minn Mail.ru Cloud Solutions & Tarantool. Jekk ma tridx taqra, tista' tara:
Kif ġejna minn sors miftuħ għal Database bħala Servizz fil-cloud
Ilni naħdem f'sors miftuħ mill-aħħar tas-snin 90. Għoxrin sena ilu, l-użu ta’ sors miftuħ, bħal databases, ma kienx daqshekk faċli. Kien meħtieġ li tniżżel il-kodiċi tas-sors, garża, tikkumpilaha u mbagħad tużah biss.
Is-sors miftuħ imbagħad għadda minn serje ta’ simplifikazzjonijiet:
Tar.gz u INSTALLA sorsi li kellhom bżonn jiġu kkompilati;
pakketti b'dipendenzi bħal .deb u .rpm, fejn għandek bżonn biss tinstalla sett ta' pakketti;
repożitorji tal-pakketti bħal APT u YUM, li magħhom l-installazzjoni hija awtomatika;
soluzzjonijiet bħal Docker u Snap, li jippermettulek tirċievi pakketti bl-installazzjoni mingħajr dipendenzi esterni.
Bħala riżultat, isir aktar faċli li tuża softwer open source u wkoll inaqqas l-ostaklu għad-dħul fl-iżvilupp ta 'applikazzjonijiet bħal dawn.
Fl-istess ħin, b'differenza mis-sitwazzjoni ta '20 sena ilu, meta kulħadd kien espert tal-assemblaġġ, issa ħafna mill-iżviluppaturi ma jistgħux jibnu l-għodod li jużaw mis-sors.
Fil-fatt, dan mhux ħażin, għaliex:
Nistgħu nużaw softwer aktar kumpless iżda aktar faċli għall-utent. Pereżempju, browser huwa konvenjenti biex jintuża, iżda jinkludi ħafna komponenti ta 'sors miftuħ u huwa inkonvenjenti biex jinbena mill-bidu.
Aktar nies jistgħu jsiru żviluppaturi ta 'sors miftuħ u softwer ieħor, aktar softwer jintuża min-negozji, u l-ħtieġa tiegħu hija akbar.
L-iżvantaġġ huwa li l-pass li jmiss fis-simplifikazzjoni huwa assoċjat mal-użu ta 'soluzzjonijiet tal-cloud, u dan iwassal għal ċertu lock-in tal-bejjiegħ, jiġifieri, jorbot ma' fornitur wieħed. Aħna nużaw soluzzjonijiet sempliċi u l-fornituri jużaw komponenti open source, iżda fil-fatt huma nailed f'wieħed mill-sħab kbar. Jiġifieri, l-eħfef u l-aktar mod biex tuża sors miftuħ (u softwer kompatibbli miegħu) huwa fis-sħab, bl-użu ta 'API proprjetarja.
Meta niġu għad-databases fil-cloud, hemm żewġ approċċi:
Arma l-infrastruttura tad-database, bħal f'ċentru tad-dejta regolari. Jiġifieri, ħu blokki ta 'bini standard: ikkalkula, ħażna, eċċ, installa Linux u database fuqhom, u kkonfigurahom.
Uża Database bħala Servizz, fejn il-fornitur joffri database lesta ġewwa l-cloud.
DBaaS huwa suq li qed jikber b'rata mgħaġġla bħalissa peress li jippermetti lill-iżviluppaturi jaħdmu direttament ma 'databases u jimminimizza x-xogħol ta' rutina. Il-fornitur jimpenja ruħu li jiżgura Disponibbiltà Għolja u skalar faċli, patching tad-database, backups, u rfinar tal-prestazzjoni.
Żewġ tipi ta’ Database bħala Servizz ibbażat fuq sors miftuħ u alternattiva fil-forma ta’ Kubernetes
Hemm żewġ tipi ta' Database bħala Servizz għal databases miftuħa:
Prodott standard ta' sors miftuħ ippakkjat f'backend ta' amministrazzjoni għal skjerament u ġestjoni faċli.
Soluzzjoni kummerċjali avvanzata b'diversi add-ons, kompatibbli ma 'sors miftuħ.
Iż-żewġ għażliet inaqqsu l-possibbiltà ta’ migrazzjoni bejn is-sħab u jnaqqsu l-portabbiltà tad-dejta u l-applikazzjonijiet. Pereżempju, minkejja l-fatt li tipi differenti ta 'sħab jappoġġjaw essenzjalment l-istess MySQL standard, hemm differenzi sinifikanti bejniethom: fl-operat, prestazzjoni, backup, eċċ. Il-migrazzjoni minn sħaba għal oħra tista' tkun ta' sfida, speċjalment għal applikazzjonijiet kumplessi.
U hawn tqum il-mistoqsija - huwa possibbli li tinkiseb il-konvenjenza ta 'Database bħala Servizz, iżda bħala soluzzjoni sempliċi ta' sors miftuħ?
L-aħbar ħażina hija li, sfortunatament, għad m'hemmx soluzzjonijiet bħal dawn fis-suq. L-aħbar tajba hija li hemm Kubernetes, li jippermettilek timplimenta soluzzjonijiet bħal dawn.
Kubernetes hija sistema operattiva għall-cloud jew iċ-ċentru tad-dejta li tippermettilek li tuża u timmaniġġja applikazzjoni fuq servers multipli fi cluster aktar milli fuq host wieħed.
Issa Kubernetes huwa l-mexxej fil-kategorija ta 'softwer bħal dan. Kien hemm ħafna soluzzjonijiet differenti għal problemi bħal dawn, iżda sar l-istandard. Ħafna kumpaniji li kienu jiffokaw fuq soluzzjonijiet alternattivi issa qed jiffokaw fuq l-adattament tal-prodotti tagħhom biex jappoġġjaw Kubernetes.
Barra minn hekk, Kubernetes hija soluzzjoni universali li hija appoġġjata fi sħab privati, pubbliċi u ibridi ta 'ħafna bejjiegħa, pereżempju: AWS, Google Cloud, Microsoft Azure, Mail.ru Soluzzjonijiet Cloud.
Kif jaħdem Kubernetes mad-databases
Kubernetes kien oriġinarjament iddisinjat għal applikazzjonijiet mingħajr stat li jipproċessaw id-dejta iżda ma jaħżnu xejn, bħal mikroservizzi jew applikazzjonijiet tal-web. Id-databases jinsabu fit-tarf l-ieħor tal-ispettru, jiġifieri, huma applikazzjonijiet stateful. U Kubernetes ma kienx oriġinarjament maħsub għal applikazzjonijiet bħal dawn.
Madankollu, hemm karatteristiċi li dehru f'Kubernetes reċentement li jippermettu l-użu ta 'databases u applikazzjonijiet oħra ta' stat:
Il-kunċett StatefulSet huwa serje sħiħa ta 'primittivi għall-ipproċessar ta' avvenimenti dwar il-waqfien tax-xogħol tal-imżiewed u l-implimentazzjoni Graceful Shutdown (għeluq prevedibbli tal-applikazzjoni).
Volumi Persistenti huma ħwienet tad-dejta li huma assoċjati ma 'miżwed, oġġetti ta' ġestjoni Kubernetes.
Operator Framework - jiġifieri, il-ħila li jinħolqu komponenti għall-ġestjoni tad-databases u applikazzjonijiet oħra mqassma f'ħafna nodi.
Diġà issa fis-sħab pubbliċi hemm Databases kbar bħala Servizz, li l-backend tagħhom huwa Kubernetes, pereżempju: CockroachCloud, InfluxDB, PlanetScale. Jiġifieri, database fuq Kubernetes mhix biss xi ħaġa li hija teoretikament possibbli, iżda wkoll xi ħaġa li taħdem fil-prattika.
Percona għandu żewġ soluzzjonijiet ta' sors miftuħ għal Kubernetes:
Kubernetes Operatur għal Percona Server għal MongoDB.
Kubernetes Operator għal XtraDB CLUSTER huwa servizz li huwa kompatibbli mal-MySQL u jipprovdi disponibbiltà u konsistenza għolja. Tista 'wkoll tuża node wieħed jekk ma tkunx meħtieġa disponibbiltà għolja, pereżempju għal database dev.
L-utenti ta' Kubernetes jistgħu jinqasmu f'żewġ gruppi. Xi nies jużaw Operaturi Kubernetes direttament - dawn huma prinċipalment utenti avvanzati li jifhmu tajjeb kif taħdem it-teknoloġija. Oħrajn imexxuha fuq il-backend - utenti bħal dawn huma interessati f'xi ħaġa bħal Database bħala Servizz, ma jridux jidħlu fis-sfumaturi ta 'Kubernetes. Għat-tieni grupp ta 'utenti, għandna soluzzjoni oħra ta' sors miftuħ - Percona DBaaS CLI Tool. Din hija soluzzjoni sperimentali għal dawk li jixtiequ jiksbu DBaaS ta 'sors miftuħ ibbażat fuq Kubernetes mingħajr fehim profond tat-teknoloġija.
Kif tħaddem id-DBaaS ta' Percona fuq Google Kubernetes Engine
Google Kubernetes Engine, fl-opinjoni tiegħi, hija waħda mill-aktar implimentazzjonijiet funzjonali tat-teknoloġija Kubernetes. Huwa disponibbli f'ħafna reġjuni tad-dinja u għandu Għodda tal-Linja tal-Kmand (SDK) sempliċi u konvenjenti, li tippermettilek toħloq skripts aktar milli timmaniġġja l-pjattaforma manwalment.
Sabiex id-DBaaS tagħna jaħdem, neħtieġu l-komponenti li ġejjin:
Kubectl.
Google Cloud SDK.
Percona DBaaS CLI.
Installa kubectl
Aħna ninstallaw il-pakkett għas-sistema operattiva tiegħek, se nħarsu lejn l-eżempju ta 'Ubuntu. Iktar dettalji hawn.
Aħna ninstallaw il-pakkett tas-softwer bl-istess mod. Iktar dettalji hawn.
# 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
Installazzjoni ta' Percona DBaaS CLI
Installa mir-repożitorji Percona. Percona DBaaS CLI Tool għadu prodott sperimentali, għalhekk jinsab fir-repożitorju sperimentali, li għandu jkun attivat separatament, anki jekk diġà għandek repożitorji Percona installati.
Stabbilixxi repożitorji Percona billi tuża l-għodda percona-release. L-ewwel trid tniżżel u tinstalla l-pakkett uffiċjali ta' percona-release minn Percona:
L-ewwel trid tidħol fil-kont Google tiegħek. Barra minn hekk, Google Cloud jippermetti li utent wieħed ikollu ħafna proġetti indipendenti, għalhekk trid tispeċifika proġett ta' ħidma billi tuża l-kodiċi għal dan il-proġett:
gcloud auth login
gcloud config set project hidden-brace-236921
Sussegwentement, noħolqu cluster. Għad-demo, ħloqt raggruppament Kubernetes ta 'tliet nodi biss - dan huwa l-minimu meħtieġ għal disponibbiltà għolja:
Imbagħad noħolqu namespace u nagħmluh attiv. L-ispazju tal-isem huwa, bejn wieħed u ieħor, bħal proġett jew ambjent, iżda diġà ġewwa cluster Kubernetes. Hija indipendenti mill-proġetti tal-Google Cloud:
Ladarba għaddejna minn dawn il-ftit passi, nistgħu nibdew cluster bi tliet nodi b'dan il-kmand sempliċi:
# 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
Kif tikkonnettja ma 'cluster
B'mod awtomatiku, huwa disponibbli biss ġewwa Kubernetes. Jiġifieri, mhuwiex aċċessibbli minn dan is-server li minnu ħadt il-kmand "Oħloq". Biex tagħmilha disponibbli, pereżempju, għal testijiet ma' klijent, trid tibgħat il-port permezz ta' Port Mapping:
Imbagħad aħna nikkonnettjaw il-klijent MySQL tiegħek:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Kmandi avvanzati tal-ġestjoni tal-clusters
Database dwar IP pubbliku
Jekk trid soluzzjoni aktar permanenti għad-disponibbiltà tal-clusters, tista 'tikseb indirizz IP estern. F'dan il-każ, id-database tkun aċċessibbli minn kullimkien. Dan huwa inqas sigur, iżda ħafna drabi aktar konvenjenti. Għal IP esterna nużaw il-kmand li ġej:
# 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
Issettja espliċitament il-password
Minflok is-sistema tiġġenera password b'mod każwali, tista' tissettja l-password b'mod espliċitu:
Din hija soluzzjoni għall-kompiti tal-ittestjar biex il-MySQL jibda jaħdem malajr u faċilment, ittestjah, u mbagħad itfih jew jużah għall-iżvilupp.
L-għodda Percona DBaaS CLI tgħinek tikseb soluzzjoni bħal DBaaS fuq Kubernetes. Fl-istess ħin, inkomplu naħdmu fuq il-funzjonalità u l-użabilità tagħha.