Cumu custruisce un nuvola hibrida cù Kubernetes chì pò rimpiazzà DBaaS
Mi chjamu Petr Zaitsev, sò u CEO, fundatore percona è ti vogliu dì :
cumu avemu vinutu da suluzioni open source à Database as a Service;
quali approcci esistenu per implementà e basa di dati in u nuvulu;
cumu Kubernetes pò rimpiazzà DBaaS, eliminendu a dependenza di u venditore è mantene a simplicità di DBMS cum'è serviziu.
L'articulu hè statu preparatu basatu annantu à un rapportu à @Databases Meetup da Mail.ru Cloud Solutions & Tarantool. Se ùn vulete micca leghje, pudete fighjà:
Cumu avemu vinutu da open source à Database as a Service in u nuvulu
Aghju travagliatu in open source da a fine di l'anni 90. Vint'anni fà, l'usu open source, cum'è e basa di dati, ùn era micca cusì faciule. Era necessariu di scaricà u codice fonte, patch it, compile è solu dopu aduprà.
L'open source dopu hà attraversatu una seria di simplificazioni:
Tar.gz è INSTALLA fonti chì avianu bisognu à esse compilatu;
pacchetti cù dipendenze cum'è .deb è .rpm, induve solu bisognu di stallà un set di pacchetti;
repositori di pacchetti cum'è APT è YUM, cù quale l'installazione hè automatica;
suluzioni cum'è Docker è Snap, chì permettenu di riceve pacchetti per installazione senza dipendenze esterne.
In u risultatu, diventa più faciule d'utilizà software open source è ancu riduce a barriera à l'ingressu à u sviluppu di tali applicazioni.
À u listessu tempu, à u cuntrariu di a situazione di 20 anni fà, quandu tutti era un espertu di assemblea, avà a maiò parte di i sviluppatori ùn ponu micca custruisce l'arnesi chì utilizanu da a fonte.
In fatti, questu ùn hè micca male, perchè:
Pudemu usà un software più cumplessu, ma più amichevule. Per esempiu, un navigatore hè cunvenutu d'utilizà, ma include assai cumpunenti open source è hè inconveniente per custruisce da zero.
Più persone ponu diventà sviluppatori di open source è altre software, più software hè utilizatu da l'imprese, è a necessità hè più grande.
U svantaghju hè chì u prossimu passu in a simplificazione hè assuciatu cù l'usu di suluzioni nuvola, è questu porta à un certu lock-in di u venditore, vale à dì, ubligatoriu à un fornitore. Avemu aduprà suluzioni simplici è i fornituri utilizanu cumpunenti open source, ma in fattu sò chjappi à unu di i grandi nuvuli. Questu hè, u modu più faciule è veloce per implementà open source (è software cumpatibile cù questu) hè in i nuvuli, utilizendu una API patentata.
Quandu si tratta di basa di dati in u nuvulu, ci sò dui approcci:
Assemble l'infrastruttura di basa di dati, cum'è in un centru di dati regulare. Vale à dì, pigliate blocchi di custruzzione standard: calculà, almacenamiento, è cusì, installate Linux è una basa di dati nantu à elli, è cunfigurà.
Utilizà a basa di dati cum'è serviziu, induve u fornitore offre una basa di dati pronta in u nuvulu.
DBaaS hè un mercatu chì cresce rapidamente perchè permette à i sviluppatori di travaglià direttamente cù basa di dati è minimizza u travagliu di rutina. U fornitore s'impegna à assicurà una Alta Disponibilità è una scala faciule, patching di basa di dati, backups è sintonizazione di u rendiment.
Dui tipi di Database cum'è Serviziu basatu annantu à l'open source è una alternativa in a forma di Kubernetes
Ci hè dui tipi di basa di dati cum'è serviziu per basa di dati aperti:
Un pruduttu standard open source imballatu in un backend di amministrazione per una facilità di implementazione è gestione.
Una soluzione cummerciale avanzata cù diversi add-ons, cumpatibili cù open source.
E duie opzioni riducenu a pussibilità di migrazione trà i nuvuli è riducenu a portabilità di dati è applicazioni. Per esempiu, malgradu u fattu chì diversi tipi di nuvole supportanu essenzialmente u stessu MySQL standard, ci sò differenzi significati trà elli: in funziunamentu, performance, backup, etc. Migrazione da una nuvola à l'altru pò esse sfida, soprattuttu per applicazioni cumplesse.
È quì hè a quistione - hè pussibule di ottene a cunvenzione di Database cum'è serviziu, ma cum'è una solu suluzione open source?
A mala nutizia hè chì, sfurtunatamenti, ùn ci sò micca tali suluzioni in u mercatu. A bona nova hè chì ci hè Kubernetes, chì vi permette di implementà tali suluzioni.
Kubernetes hè un sistema operatore per u nuvulu o un centru di dati chì vi permette di implementà è gestisce una applicazione in parechji servitori in un cluster invece di un unicu host.
Avà Kubernetes hè u capu in a categuria di tali software. Ci era parechje suluzione diffirenti per tali prublemi, ma hè diventatu u standard. Parechje cumpagnie chì si focalizavanu in suluzioni alternative sò avà cuncentrate à adattà i so prudutti per sustene Kubernetes.
Inoltre, Kubernetes hè una suluzione universale chì hè supportata in nuvuli privati, publichi è hibridi di parechji venditori, per esempiu: AWS, Google Cloud, Microsoft Azure, Mail.ru Soluzioni Cloud.
Cumu Kubernetes travaglia cù basa di dati
Kubernetes hè statu inizialmente cuncepitu per l'applicazioni senza statu chì processanu e dati ma ùn guardanu nunda, cum'è microservizi o applicazioni web. E basa di dati sò à l'altru finale di u spettru, vale à dì, sò applicazioni stateful. È Kubernetes ùn era micca uriginale destinatu à tali applicazioni.
Tuttavia, ci sò funzioni chì sò apparsu recentemente in Kubernetes chì permettenu l'usu di basa di dati è altre applicazioni stateful:
U cuncettu StatefulSet hè una seria sana di primitivi per processà l'avvenimenti nantu à a cessazione di u travagliu di pods è l'implementazione di Graceful Shutdown (arrestu previdibile di l'applicazione).
I volumi persistenti sò magazzini di dati chì sò assuciati cù pods, oggetti di gestione Kubernetes.
Operator Framework - vale à dì, a capacità di creà cumpunenti per a gestione di basa di dati è altre applicazioni stateful distribuite in parechji nodi.
Dighjà avà in i nuvuli publichi ci sò grandi basa di dati cum'è serviziu, u backend di quale hè Kubernetes, per esempiu: CockroachCloud, InfluxDB, PlanetScale. Questu hè, una basa di dati nantu à Kubernetes ùn hè micca solu qualcosa chì hè teoricamente pussibule, ma ancu qualcosa chì travaglia in pratica.
Percona hà duie soluzioni open source per Kubernetes:
Operatore Kubernetes per Percona Server per MongoDB.
Kubernetes Operator for XtraDB CLUSTER hè un serviziu chì hè cumpatibile cù MySQL è furnisce alta dispunibilità è cunsistenza. Pudete ancu aduprà un unicu node se l'alta dispunibilità ùn hè micca necessariu, per esempiu per una basa di dati dev.
L'utilizatori di Kubernetes ponu esse divisu in dui gruppi. Alcune persone utilizanu direttamente Operatori Kubernetes - sò principalmente utilizatori avanzati chì anu una bona cunniscenza di cumu funziona a tecnulugia. L'altri l'anu in u backend - tali utilizatori sò interessate in qualcosa cum'è Database as a Service, ùn volenu micca sfondate in e sfumature di Kubernetes. Per u sicondu gruppu di utilizatori, avemu una altra suluzione open source - Percona DBaaS CLI Tool. Questa hè una suluzione sperimentale per quelli chì volenu acquistà un DBaaS open source basatu in Kubernetes senza una cunniscenza prufonda di a tecnulugia.
Cumu eseguisce DBaaS di Percona in Google Kubernetes Engine
Google Kubernetes Engine, in my opinion, hè una di e implementazioni più funziunali di a tecnulugia Kubernetes. Hè dispunibule in parechje regioni di u mondu è hà un Strumentu di Linea di Command (SDK) simplice è convenientu, chì vi permette di creà script invece di gestisce manualmente a piattaforma.
Per u nostru DBaaS per travaglià, avemu bisognu di i seguenti cumpunenti:
Kubectl.
Google Cloud SDK.
Percona DBaaS CLI.
Installa kubectl
Stallà u pacchettu per u vostru sistema operatore, fighjemu l'esempiu di Ubuntu. Più dettagli ccà.
Installemu u pacchettu di software in u listessu modu. Più dettagli ccà.
# 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
Installazione di Percona DBaaS CLI
Installa da i repositori Percona. Percona DBaaS CLI Tool hè sempre un pruduttu sperimentale, per quessa, si trova in u repository sperimentale, chì deve esse attivatu separatamente, ancu s'ellu avete digià installatu repository Percona.
Configurate i repositori Percona cù l'utillita percona-release. Prima avete bisognu di scaricà è stallà u pacchettu ufficiale percona-release da Percona:
Prima vi tocca à accede à u vostru contu Google. Inoltre, Google Cloud permette à un utilizatore per avè parechji prughjetti indipendenti, cusì avete bisognu di specificà un prughjettu di travagliu cù u codice per stu prughjettu:
gcloud auth login
gcloud config set project hidden-brace-236921
Dopu, creemu un cluster. Per a demo, aghju creatu un cluster Kubernetes di solu trè nodi - questu hè u minimu necessariu per a dispunibilità alta:
Allora creamu un spaziu di nome è facemu attivu. U spaziu di nomi hè, à pocu pressu, ancu cum'è un prughjettu o un ambiente, ma digià in un cluster Kubernetes. Hè indipendente da i prughjetti di Google Cloud:
Una volta chì avemu passatu sti pochi passi, pudemu inizià un cluster di trè nodi cù stu cumandamentu simplice:
# 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
Cumu cunnette à un cluster
Per automaticamente, hè dispunibule solu in Kubernetes. Questu hè, ùn hè micca accessibile da stu servitore da quale avete eseguitu u cumandamentu "Crea". Per fà dispunibule, per esempiu, per e teste cù un cliente, avete bisognu di rinvià u portu attraversu Port Mapping:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Cumandamenti avanzati di gestione di cluster
Database nantu à l'IP publicu
Se vulete una suluzione più permanente per a dispunibilità di cluster, pudete uttene un indirizzu IP esternu. In questu casu, a basa di dati serà accessibile da ogni locu. Questu hè menu sicuru, ma spessu più convenientu. Per l'IP esterna usemu u cumandimu seguitu:
# 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
Definite esplicitamente a password
Invece di u sistema chì generà una password aleatoriu, pudete stabilisce a password esplicitamente:
Questa hè una suluzione per pruvà i travaglii per mette MySQL in funziunamentu u più veloce è faciule pussibule, pruvà, è dopu chjude o aduprate per u sviluppu.
U strumentu Percona DBaaS CLI vi aiuta à ottene una soluzione DBaaS-like in Kubernetes. À u listessu tempu, cuntinuemu à travaglià nantu à a so funziunalità è usabilità.