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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. Prodott standard ta' sors miftuħ ippakkjat f'backend ta' amministrazzjoni għal skjerament u ġestjoni faċli.
  2. 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:

  1. 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).
  2. Volumi Persistenti huma ħwienet tad-dejta li huma assoċjati ma 'miżwed, oġġetti ta' ġestjoni Kubernetes.
  3. 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:

  1. Kubernetes Operatur għal Percona Server għal MongoDB.
  2. 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:

  1. Kubectl.
  2. Google Cloud SDK.
  3. 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.

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

Installazzjoni ta' Google Cloud SDK

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.

Aktar hawn.

Algoritmu ta' installazzjoni:

  1. 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:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Ippermetti l-komponent tar-repożitorju tal-għodda sperimentali kif ġej:
    sudo percona-release enable tools experimental
    
  3. Installa l-pakkett percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Twaqqif tat-tħaddim tal-komponenti

Aktar dwar is-settings hawn.

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:

gcloud container clusters create --zone us-central1-a your-cluster-name --cluster-version 1.15 --num-nodes=3

Il-kmand kubectl li ġej jagħti l-privileġġi mixtieqa lill-utent attwali tagħna:

kubectl create clusterrolebinding cluster-admin-binding-$USER 
--clusterrole=cluster-admin --user=$(gcloud config get-value core/account)

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:

kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace

Jibda l-cluster

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:

kubectl port-forward svc/example-proxysql 3306:3306 $

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:

# percona-dbaas mysql create-db withpw --password=mypassword
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     withpw
Resource Endpoint: withpw-proxysql.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              mypassword
Status:            ready

Qed nuri l-output tal-iskripts f'format li jinqara mill-bniedem, iżda l-format JSON huwa appoġġjat ukoll.

Itfi disponibbiltà għolja

Bil-kmand li ġej tista 'tiddiżattiva disponibbiltà għolja biex tuża nodu wieħed:

# percona-dbaas mysql create-db singlenode 
--options="proxysql.enabled=false, allowUnsafeConfigurations=true,pxc.size=1"
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     singlenode
Resource Endpoint: singlenode-pxc.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              22VqFD96mvRnmPMGg
Status:            ready

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.

Dan ir-rapport ġie ppreżentat għall-ewwel darba fi @Databases Meetup minn Mail.ru Cloud Solutions&Tarantool. Ħares video wirjiet oħra u abbona għall-avviżi tal-avvenimenti fuq Telegram Madwar Kubernetes fil-Grupp Mail.ru.

X'iktar għandek taqra dwar is-suġġett:

  1. Databases fi pjattaforma IIoT moderna.
  2. Kif tagħżel database għal proġett sabiex ma jkollokx għalfejn terġa' tagħżel.

Sors: www.habr.com

Żid kumment