Më quajnë Pjetër Zajcev, jam drejtor i përgjithshëm, themelues dhe dua të tregoj:
- si kaluam nga zgjidhjet open source në Database as a Service;
- cilat janë qasjet për shtrirjen e bazave të të dhënave në cloud;
- si Kubernetes mund të zëvendësojë DBaaS, duke eliminuar varësinë nga ofruesit dhe ruajtur thjeshtësinë e DBMS si shërbim.
Artikulli është përgatitur mbi bazën e një prezantimi në @Databases Meetup nga Mail.ru Cloud Solutions & Tarantool. Nëse nuk doni të lexoni, mund ta shikoni:

Si kaluam nga open source në Database as a Service në cloud
Unë merrem me open source që nga fundi i viteve '90. Dymbëdhjetë vjet më parë, përdorimi i zgjidhjeve open source, si bazat e të dhënave, nuk ishte aq i thjeshtë. Duhej të shkarkohej kodi burimor, të patchohej, të kompiloheshin dhe vetëm atëherë të përdorej.
Pas kësaj, open source përjetoi një seri thjeshtësish:
- kodet burimore Tar.gz dhe INSTALL, që duhej të kompiloheshin;
- paketat me varësi si .deb dhe .rpm, ku duhej vetëm të instaloheshe një grup paketash;
- depote paketash si APT dhe YUM, me ndihmën e të cilave instalimi ndodh automatikisht;
- zgjidhje si Docker dhe Snap, të cilat lejojnë marrjen e paketeve për instalim pa varësi të jashtme.
Si rezultat, përdorimi i softuerit të hapur bëhet më i thjeshtë, dhe për këtë arsye barrierat për t'u angazhuar në zhvillimin e aplikacioneve të tilla ulen.
Megjithatë, ndryshe nga situata 20 vjet më parë, kur të gjithë ishin ekspertë për ndërtimin, tani shumica e zhvilluesve nuk mund të ndërtoshin nga kodet burimor të mjeteve që përdorin.
Në të vërtetë, kjo nuk është e keqe, pasi:
- Ne mund tĂ« pĂ«rdorim softuer mĂ« kompleks, por mĂ« tĂ« lehtĂ« pĂ«r t'u pĂ«rdorur. PĂ«r shembull, shfletuesi â Ă«shtĂ« e lehtĂ« pĂ«r t'u pĂ«rdorur, por pĂ«rmban shumĂ« komponente open source, Ă«shtĂ« e vĂ«shtirĂ« tĂ« ndĂ«rtosh nga zero.
- Më shumë njerëz mund të bëhen zhvillues të open source dhe softuerit tjetër, më shumë softuer përdoret nga biznesi, më e madhe është kërkesa për të.
Pjesa tjetër është se hapi i ardhshëm në thjeshtësim lidhet me përdorimin e zgjidhjeve cloud, gjë që çon në një lloj lock-in me ofruesin, pra varësia nga një ofrues të vetëm. Ne përdorim zgjidhje të thjeshta dhe ofruesit përdorin komponente open source, por në fakt ata janë ngjitur me një nga cloud-ët e mëdhenj. Pra, mënyra më e thjeshtë dhe më e shpejtë për të shtrirë open source (dhe softuerin e saj të përputhshëm) është në cloud, duke përdorur API proprietar.
Nëse flasim për bazat e të dhënave në cloud, ka dy qasjesh:
- Krijoni infrastrukturën e bazës së të dhënave, si në një qendër tradicionale të të dhënave. Domethënë, merrni blloqet standarde të kompozimit: compute, storage dhe kështu me radhë, instaloni Linux mbi to, bazën e të dhënave, dhe konfiguroni.
- Përdorni Database as a Service, ku ofruesi ofron një bazë të dhënash gati brenda re.
Tani DBaaS është një treg në rritje të shpejtë, sepse ky shërbim lejon zhvilluesit të punojnë direkt me bazat e të dhënave dhe minimizon punën monotone. Ofruesi merr përsipër sigurimin e High Availability (disponueshmërisë së lartë) dhe shkallëzimit të lehtë, patching e bazës së të dhënave, backup-eve, dhe konfigurimin e performancës.
Dy lloje Database as a Service mbi bazën e open source dhe një alternativë me Kubernetes
Ekzistojnë dy lloje Database as a Service për bazat e të dhënave të hapura:
- Një produkt standard open source, i paketuar në backend për administrim, që thjeshton deploy-in dhe menaxhimin.
- Një zgjidhje komerciale e avancuar me shtesa të ndryshme, në përputhje me open source.
Të dy opsionet zvogëlojnë mundësinë e migrimit midis re, duke ulur portabilitetin e të dhënave dhe aplikacioneve. Për shembull, megjithëse lloje të ndryshme re mbështesin, në thelb, të njëjtin standard MySQL, midis tyre ka dallime të mëdha: në funksionim, performancë, backup dhe kështu me radhë. Migrimi nga një re në tjetrën mund të jetë i vështirë, veçanërisht për aplikacione të komplikuara.
Dhe kĂ«tu lind pyetja â a Ă«shtĂ« e mundur tĂ« merrni komoditetin e Database as a Service, por si njĂ« zgjidhje tĂ« thjeshtĂ« open source?
Lajmi i keq Ă«shtĂ« se, pĂ«r fat tĂ« keq, aktualisht nuk ka zgjidhje tĂ« tilla nĂ« treg. Lajmi i mirĂ« Ă«shtĂ« â ekziston Kubernetes, i cili lejon implementimin e tillĂ«.
Kubernetes Ă«shtĂ« njĂ« sistem operativ pĂ«r re ose qendĂ«r tĂ« dhĂ«nash, qĂ« lejon tĂ« vendosni aplikacione dhe tâi menaxhoni ato nĂ« shumĂ« serverĂ« tĂ« klasterit, nĂ« vend qĂ« nĂ« njĂ« host tĂ« vetĂ«m.
Aktualisht Kubernetes është lider në kategorinë e këtij lloji të softuerit. Për këto detyra ka pasur shumë zgjidhje të ndryshme, por ai ka arritur të bëhet standardi. Shumë kompani, të cilat më parë merreshin me zgjidhje alternative, tani përqendrohen në adaptimin e produkteve të tyre për të mbështetur Kubernetes.
Përveç kësaj, Kubernetes është një zgjidhje universale, që mbështetet në re private, publike, dhe hibride nga shumë ofrues, për shembull: AWS, Google Cloud, Microsoft Azure, .
Si funksionon Kubernetes me bazat e të dhënave
Kubernetes fillimisht është zhvilluar për aplikacione pa gjendje, të cilat procesojnë të dhëna pa ruajtjen e tyre, siç janë mikroshërbimet ose aplikacionet web. Bazat e të dhënave ndodhen në skajin e kundërt të spektrit, domethënë ato janë aplikacione me gjendje. Dhe Kubernetes fillimisht nuk ishte projektuar për këto lloje aplikacionesh.
Megjithatë, ekzistojnë disa karakteristika që u shfaqën së fundmi në Kubernetes dhe që lejojnë përdorimin e bazave të të dhënave dhe aplikacioneve të tjera me gjendje:
- Koncepti StatefulSet është një seri primitivash për trajtimin e ngjarjeve në lidhje me ndalimin e punës së podëve dhe për realizimin e Graceful Shutdown (ndërprerjes së parashikueshme të punës së aplikacionit).
- Volumet e Përhershme janë depo për të dhëna që lidhen me podët, objektet e menaxhimit të Kubernetes.
- Operator Framework është mundësia për të krijuar komponentë për menaxhimin e bazave të të dhënave dhe aplikacioneve të tjera me gjendje, të shpërndara në shumë node.
Tani për tani, në re publike ekzistojnë shërbime të mëdha Database as a Service, në sfondin e të cilave është Kubernetes, për shembull: CockroachCloud, InfluxDB, PlanetScale. Kjo do të thotë se baza e të dhënave në Kubernetes është jo vetëm diçka që është teorikisht e mundshme, por edhe ajo që funksionon në praktikë.
Percona ka dy zgjidhje open source për Kubernetes:
- Kubernetes Operator për Percona Server për MongoDB.
- Kubernetes Operator pĂ«r XtraDB CLUSTER â njĂ« shĂ«rbim qĂ« Ă«shtĂ« i pajtueshĂ«m me MySQL, siguron disponueshmĂ«ri tĂ« lartĂ« dhe konsistencĂ«. Po ashtu, mund tĂ« pĂ«rdoret njĂ« nod i vetĂ«m, nĂ«se nuk nevojitet disponueshmĂ«ri e lartĂ«, pĂ«r shembull pĂ«r njĂ« bazĂ« tĂ« dhĂ«nash zhvillimi.
PĂ«rdoruesit e Kubernetes mund tĂ« ndahen nĂ« dy grupe. NjĂ« grup pĂ«rdor direkt Kubernetes Operators â kĂ«ta zakonisht janĂ« pĂ«rdorues tĂ« avancuar qĂ« kuptojnĂ« mirĂ« se si funksionon teknologjia. Grupi tjetĂ«r e ekzekuton atĂ« nĂ« sfond â kĂ«tyre pĂ«rdoruesve u intereson diçka si Database as a Service, nuk duan tĂ« thellohen nĂ« detajet e funksionimit tĂ« Kubernetes. PĂ«r grupin e dytĂ« tĂ« pĂ«rdoruesve, ne kemi njĂ« tjetĂ«r zgjidhje open source â Percona DBaaS CLI Tool. Kjo Ă«shtĂ« njĂ« zgjidhje eksperimentale pĂ«r ata qĂ« duan tĂ« fitojnĂ« njĂ« DBaaS open source mbi Kubernetes pa njĂ« kuptim tĂ« thellĂ« tĂ« teknologjisĂ«.
Si të filloni DBaaS nga Percona në Google Kubernetes Engine
Google Kubernetes Engine, në mendimin tim, është një nga realizimet më funksionale të teknologjisë Kubernetes. Ajo është e disponueshme në shumë rajone të botës dhe ka një Tool të thjeshtë dhe të rehatshëm të Komandës (SDK), që lejon krijimin e skripteve, në vend që të menaxhojmë platformën manualisht.
Për të bërë që DBaaS-i ynë të funksionojë, janë të nevojshme komponentët e mëposhtëm:
- Kubectl.
- Google Cloud SDK.
- Percona DBaaS CLI.
Instaloni kubectl
Instaloni paketin për sistemin tuaj operativ, do të shqyrtojmë me shembullin Ubuntu. Më shumë .
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
Instaloni Google Cloud SDK
Po ashtu instaloni paketën e softuerit. Më shumë .
# 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
Instaloni Percona DBaaS CLI
Instaloni nga repository-t e Percona. Percona DBaaS CLI Tool është për momentin një produkt eksperimental, prandaj ndodhet në një repository eksperimental që duhet të aktivizohet veçmas, edhe nëse tashmë keni të instaluara repository-t e Percona.
Më shumë .
Algoritmi i instalimit:
- Konfiguroni repository-t e Percona duke përdorur mjetin percona-release. Së pari, ju nevojitet të shkarkoni dhe instaloni paketën zyrtare percona-release nga Percona:
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb - Aktivizoni komponentin eksperimental të repository-t të mjeteve si më poshtë:
sudo percona-release enable tools experimental - Instaloni paketën percona-dbaas-cli:
sudo apt-get update sudo apt-get install percona-dbaas-cli
Konfigurimi i funksionimit të komponentëve
Më shumë mbi konfigurimet .
Së pari, duhet të regjistroheni në llogarinë tuaj Google. Më pas, Google Cloud lejon një përdorues të ketë shumë projekte të pavarura, prandaj kërkohet të tregoni projektin aktiv, duke përdorur kodin e këtij projekti:
gcloud auth login
gcloud config set project hidden-brace-236921
MĂ« pas krijojmĂ« klasterin. PĂ«r demo, krijova njĂ« klaster Kubernetes me vetĂ«m tre nodĂ« â ky Ă«shtĂ« minimumi qĂ« kĂ«rkohet pĂ«r disponueshmĂ«ri tĂ« lartĂ«:
gcloud container clusters create --zone us-central1-a emri-i-klasterit-tuaj --cluster-version 1.15 --num-nodes=3
Komanda e ardhshme kubectl i jep privilegjet e nevojshme përdoruesit tonë aktual:
kubectl create clusterrolebinding cluster-admin-binding-$USER
--clusterrole=cluster-admin --user=$(gcloud config get-value core/account)Më pas krijojmë namespace dhe e bëjmë atë aktiv. Namespace është, në mënyrë të thjeshtë, si një projekt ose ambient, por brenda klasterit Kubernetes. Ai është i pavarur nga projektet e Google Cloud:
kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace
Fillojmë klasterin
Pas kalimit nëpër këto disa hapa, mund të fillojmë klasterin prej tre nodësh me këtë komandë të thjeshtë:
# 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
Si të lidhemi me klasterin
Në mënyrë të paracaktuar, ai është i aksesueshëm vetëm brenda Kubernetes. Kjo do të thotë se nga ky server, nga i cili keni nisur komandën "Krijo", ai nuk është i aksesueshëm. Për ta bërë atë të aksesueshëm, për shembull për testime me klientin, duhet të kaloni portin përmes Port Mapping:
kubectl port-forward svc/example-proxysql 3306:3306 $MĂ« pas lidheni me klientin tuaj MySQL:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Komandat e avancuara për menaxhimin e klastereve
Baza e të dhënave në IP-publik
Nëse dëshironi një zgjidhje më të qëndrueshme për aksesin në klaster, mund të merrni një adresë të jashtme IP. Në këtë rast, baza e të dhënave do të jetë e aksesueshme nga kudo. Kjo është më pak e sigurt, por shpesh më e përshtatshme. Për IP-në e jashtme përdorim komandën vijuese:
# 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
Përcaktoni qartë fjalëkalimin
Në vend që sistemi të gjenerojë rastësisht një fjalëkalim, mund të caktoni qartë një fjalëkalim:
# 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
Unë po tregoj daljen e skripteve në një format të lexueshëm, por gjithashtu mbështetet formati JSON.
Ăaktivizoni disponueshmĂ«rinĂ« e lartĂ«
Me komandën vijuese mund të çaktivizoni disponueshmërinë e lartë për të instaluar një nod single:
# 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
Kjo është një zgjidhje për detyra testuese, për të ngritur MySQL sa më shpejt dhe më lehtë, për ta testuar dhe më pas ta çmontoni ose ta përdorni për zhvillim.
Instrumenti Percona DBaaS CLI ndihmon në marrjen e një zgjidhjeje në Kubernetes, të ngjashme me DBaaS. Ndërkohë ne vazhdojmë të punojmë për funksionalitetin dhe përdorshmërinë e tij.
Ky raport u paraqit për herë të parë në nga Mail.ru Cloud Solutions&Tarantool. Shikoni prezentime të tjera dhe abonohuni në njoftimet e ngjarjeve në Telegram .
ĂfarĂ« tjetĂ«r pĂ«r tĂ« lexuar nĂ« lidhje me temĂ«n:
Burimi: habr.com
