Si të ndërtoni një re hibride me Kubernetes që mund të zëvendësojë DBaaS

Më quajnë Pjetër Zajcev, jam drejtor i përgjithshëm, themelues Percona 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:

Luaj videon

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:

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

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

  1. Një produkt standard open source, i paketuar në backend për administrim, që thjeshton deploy-in dhe menaxhimin.
  2. 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, Mail.ru Cloud Solutions.

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:

  1. 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).
  2. Volumet e Përhershme janë depo për të dhëna që lidhen me podët, objektet e menaxhimit të Kubernetes.
  3. 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:

  1. Kubernetes Operator për Percona Server për MongoDB.
  2. 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:

  1. Kubectl.
  2. Google Cloud SDK.
  3. Percona DBaaS CLI.

Instaloni kubectl

Instaloni paketin për sistemin tuaj operativ, do të shqyrtojmë me shembullin Ubuntu. Më shumë këtu.

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ë këtu.

# 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ë këtu.

Algoritmi i instalimit:

  1. 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
  2. Aktivizoni komponentin eksperimental të repository-t të mjeteve si më poshtë:
    sudo percona-release enable tools experimental
    
  3. 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 këtu.

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ë @Databases Meetup nga Mail.ru Cloud Solutions&Tarantool. Shikoni video prezentime të tjera dhe abonohuni në njoftimet e ngjarjeve në Telegram Rreth Kubernetes në Mail.ru Group.

ÇfarĂ« tjetĂ«r pĂ«r tĂ« lexuar nĂ« lidhje me temĂ«n:

  1. Baza të dhënash në platformën moderne IIoT.
  2. Si të zgjidhni një bazë të dhënash për projektin tuaj, për të mos zgjedhur përsëri.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster