Si të ndërtohet një cloud hibrid me Kubernetes, i cili mund të zëvendësojë DBaaS

Nuk jam Pjetër Zajtsev, jam drejtor ekzekutiv, themelues Percona dhe dua të flas:

  • si kaluam nga zgjidhje open source nĂ« Database as a Service;
  • cilat janĂ« qasjet pĂ«r implementimin e bazave tĂ« dhĂ«nash nĂ« cloud;
  • si Kubernetes mund tĂ« zĂ«vendĂ«sojĂ« DBaaS, duke eliminur varĂ«sinĂ« nga ndĂ«rmarrjet dhe duke mbajtur thjeshtĂ«sinĂ« e DBMS si shĂ«rbim.

Artikulli është përgatitur mbi bazën e një paraqitjeje në @Databases Meetup nga Mail.ru Cloud Solutions & Tarantool. Nëse nuk dëshironi të lexoni, mund të shihni:

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. Të përdorësh open source, siç janë bazat e dhënash, ishte jo aq e thjeshtë njëzet vjet më parë. Duhej të shkarkoheshin kodet burimore, të patch-oheshin, të kompiloheshin dhe vetëm pastaj të përdornin.

Pastaj open source përjetoi një sërë thjeshtësish:

  • kodet burimore Tar.gz dhe INSTALL, qĂ« duhej tĂ« kompiloheshin;
  • paketat me varĂ«si tĂ« tipit .deb dhe .rpm, ku vetĂ«m duhet tĂ« instalohej njĂ« grup paketash;
  • repozitorĂ« paketash si APT dhe YUM, me tĂ« cilĂ«t instalimi ndodh automatikisht;
  • zgjidhje si Docker dhe Snap, qĂ« lejojnĂ« marrjen e paketave pĂ«rmes instalimit pa varĂ«si tĂ« jashtme.

Si përfundim, përdorimi i softuerit të hapur bëhet më i lehtë, dhe gjithashtu ulet barriera për hyrje në zhvillimin e aplikacioneve të tilla.

Ndryshe nga situata 20 vjet më parë, kur të gjithë ishin ekspertë në ndërtim, tani shumica e zhvilluesve nuk mund të mbledhin mjetet e përdorura nga burimi.

Në të vërtetë, kjo nuk është e keqe, pasi:

  1. Ne mund tĂ« pĂ«rdorim softuer mĂ« tĂ« komplikuar, por mĂ« tĂ« pĂ«rshtatshĂ«m. PĂ«r shembull, shfletuesi — Ă«shtĂ« i lehtĂ« pĂ«r t'u pĂ«rdorur, por pĂ«rmban shumĂ« komponime open source, dhe Ă«shtĂ« e vĂ«shtirĂ« ta mbledhĂ«sh nga e para.
  2. Më shumë njerëz mund të bëhen zhvillues të softuerit open source dhe të softuerëve të tjerë, më shumë softuer përdoret nga biznesi, dhe kërkesa për të është më e lartë.

Ankthi tjetĂ«r — hapi i ardhshĂ«m nĂ« thjeshtimin e pĂ«rdorimit tĂ« zgjidhjeve cloud, qĂ« çon nĂ« njĂ« vendor lock-in, do tĂ« thotĂ« lidhje me njĂ« ofrues tĂ« vetĂ«m. Ne pĂ«rdorim zgjidhje tĂ« thjeshta dhe ofruesit pĂ«rdorin komponentĂ« open source, por nĂ« fakt ata janĂ« ngjitur me njĂ« nga cloud-et e mĂ«dha. Pra, mĂ«nyra mĂ« e lehtĂ« dhe mĂ« e shpejtĂ« pĂ«r tĂ« implementuar open source (dhe software-t e tij tĂ« pĂ«rputhshĂ«m) Ă«shtĂ« nĂ« cloud, duke pĂ«rdorur API-propriat.

Nëse flasim për bazat e të dhënave në cloud, ka dy qasje:

  1. Të ndërtojmë infrastrukturën e bazës së të dhënave, si në një qendër të zakonshme të dhënash. Do të thotë të merrni komponentët standard: compute, storage dhe kështu me radhë, të vendosni mbi to Linux, bazën e të dhënave, dhe ta konfiguroni.
  2. Të përdorim Database as a Service, ku ofruesi ofron një bazë të dhënash gati brenda cloud-it.

Tani DBaaS është një treg në rritje të shpejtë, sepse ky shërbim lejon zhvilluesit të punojnë me bazat e të dhënave direkt dhe minimizon punën rutine. Ofruesi merr përsipër sigurinë e High Availability (disponueshmërisë së lartë) dhe shkallëzimit të lehtë, patchimin e bazës së të dhënave, backup-et, dhe konfigurimin e performancës.

Dy dy lloje Database as a Service mbi bazën e open source dhe një alternativë në formën e Kubernetes

Ekzistojnë dy lloje Database as a Service për baza të dhënash të hapura:

  1. Produkt standard open source, i paketuar në një backend për administrimin, i cili thjeshton implementimin dhe menaxhimin.
  2. Zgjidhje komerciale të avancuar me shtesa të ndryshme, të përputhshme me open source.

Të dyja opsionet reduktojnë mundësitë e migrimit midis cloud-ave, duke zvogëluar portabilitetin e të dhënave dhe aplikacioneve. Për shembull, megjithëse lloje të ndryshme cloud-e mbështesin në thelb të njëjtin standard MySQL, ekzistojnë dallime të rëndësishme në operim, performancë, backup, etj. Migrimi nga një cloud në tjetrin mund të jetë i vështirë, veçanërisht për aplikacione të komplikuara.

Dhe kĂ«tu lind pyetja — a Ă«shtĂ« e mundur tĂ« kemi komoditetin e Database as a Service, por si njĂ« zgjidhje tĂ« thjeshtĂ« open source?

Lajmi i keq Ă«shtĂ« se, fatkeqĂ«sisht, pĂ«r momentin nuk ka zgjidhje tĂ« tilla nĂ« treg. Lajmi i mirĂ« — ekziston Kubernetes, i cili lejon realizimin e kĂ«tyre zgjidhjeve.

Kubernetes — Ă«shtĂ« njĂ« sistem operativ pĂ«r re dhe qendra tĂ« tĂ« dhĂ«nave, i cili lejon vendosjen e aplikacioneve dhe menaxhimin e tyre nĂ« shumĂ« servera nĂ« njĂ« klaster, nĂ« vend tĂ« njĂ« host-i tĂ« vetĂ«m.

Tani Kubernetes është lider në kategorinë e softuerëve të tillë. Ka pasur shumë zgjidhje të ndryshme për këto detyra, por Pikërisht ai është bërë standardi. Shumë kompani që më parë merreshin me zgjidhje alternative tani përqendrohen në adaptimin e produkteve të tyre për mbështetje të Kubernetes.

Përveç kësaj, Kubernetes është një zgjidhje universale që mbështetet në cloud-e private, publike dhe hibride nga shumë ofrues, për shembull: AWS, Google Cloud, Microsoft Azure, Zgjidhjet Cloud të Mail.ru.

Si funksionon Kubernetes me bazat e të dhënave

Kubernetes është parë fillimisht për aplikacione stateless, që përpunojnë të dhënat, por nuk ruajnë asgjë, për shembull, mikro-shërbime ose aplikacione web. Bazat e të dhënave janë në anën tjetër të spektrit, pra ato janë aplikacione stateful. Dhe Kubernetes për këto aplikacione fillimisht nuk ishte dizajnuar.

Megjithatë, ka disa funkcionalitete që janë shfaqur së fundmi në Kubernetes dhe lejojnë përdorimin e bazave të të dhënave dhe aplikacioneve të tjera stateful:

  1. Koncepti i StatefulSet është një seri e tërë primitieve për trajtimin e ngjarjeve të ndalimit të pods dhe për realizimin e Graceful Shutdown (mbylljes së parashikueshme të aplikacionit).
  2. Vëllimet e qëndrueshme janë ruajtje të dhënash që lidhen me pods, objektet menaxhuese të Kubernetes.
  3. Operator Framework — ky Ă«shtĂ« njĂ« mundĂ«si pĂ«r tĂ« krijuar komponentĂ« pĂ«r menaxhimin e bazave tĂ« dhĂ«nash dhe aplikacioneve tĂ« tjera me qendrim, tĂ« shpĂ«rndara mbi shumĂ« nyje.

Tani në cloud publik ekzistojnë shërbime të mëdha Database as a Service, në backend të të cilave është Kubernetes, për shembull: CockroachCloud, InfluxDB, PlanetScale. Pra, baza e dhënash mbi Kubernetes nuk është vetëm diçka që është teorikisht e mundur, 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Ă« nyjĂ« e vetme, nĂ«se disponueshmĂ«ria e lartĂ« nuk Ă«shtĂ« e nevojshme, pĂ«r shembull pĂ«r njĂ« bazĂ« tĂ« dhĂ«nash zhvillimi.

PĂ«rdoruesit e Kubernetes mund tĂ« ndahen nĂ« dy grupe. NjĂ«ra kategori pĂ«rdor Kubernetes Operators direkt — kryesisht pĂ«rdorues tĂ« avancuar qĂ« e kuptojnĂ« mirĂ« se si funksionon teknologjia. Kategoria tjetĂ«r e nis atĂ« nĂ« backend — kĂ«ta pĂ«rdorues janĂ« tĂ« interesuar pĂ«r diçka si Database as a Service, ata nuk duan tĂ« hyjnĂ« nĂ« detaje tĂ« punĂ«s sĂ« Kubernetes. PĂ«r kĂ«tĂ« grup pĂ«rdoruesish kemi njĂ« zgjidhje tjetĂ«r open source — Percona DBaaS CLI Tool. Kjo Ă«shtĂ« njĂ« zgjidhje eksperimentale pĂ«r ata qĂ« duan tĂ« pĂ«rfitojnĂ« nga njĂ« DBaaS open source mbi Kubernetes pa njĂ« kuptim tĂ« thellĂ« tĂ« teknologjisĂ«.

Si të nisni DBaaS nga Percona në Google Kubernetes Engine

Google Kubernetes Engine, sipas mendimit tim, është një nga implementimet më funksionale të teknologjisë Kubernetes. Ajo është e disponueshme në shumë rajone të botës dhe ka një mjet të thjeshtë dhe të lehtë për Command Line (SDK), i cili lejon krijimin e skriptave, në vend që të menaxhohet platforma manualisht.

Për të bërë që DBaaS ynë të funksionojë, ne kemi nevojë për komponentët e mëposhtëm:

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

Instaloni kubectl

Instaloni paketën për sistemin tuaj operativ, ne do të shqyrtojmë shembullin e Ubuntu. Më shumë detaje 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 të njëjtën mënyrë instaloni paketën e softuerit. Më shumë informacion 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 depozitat e Percona. Percona DBaaS CLI Tool është një produkt ende eksperimental, prandaj ndodhet në një depo eksperimentale që duhet aktivizuar veçmas, edhe nëse tashmë keni depozitat e Percona të instaluara.

Më shumë këtu.

Algoritmi i instalimit:

  1. Konfiguroni depozitat e Percona me ndihmën e mjetit percona-release. Fillimisht duhet të shkarkoni dhe të 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ë depozitës së 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

Konfigurojmë funksionimin e componenteve

Më shumë rreth konfigurimeve këtu.

Së pari duhet të identifikoheni në llogarinë tuaj Google. Më pas Google Cloud lejon një përdorues të ketë shumë projekte të pavarura, prandaj kërkohet të caktohet një projekt aktiv duke përdorur kodin e këtij projekti:

gcloud auth login
gcloud config set project hidden-brace-236921

MĂ« pas krijojmĂ« njĂ« klaster. PĂ«r demo kam krijuar njĂ« klaster Kubernetes me vetĂ«m tre node — ky Ă«shtĂ« minimumi qĂ« kĂ«rkohet pĂ«r disponueshmĂ«ri tĂ« lartĂ«:

gcloud container clusters create --zone us-central1-a emri-i-klasterit --cluster-version 1.15 --num-nodes=3

Komanda e mëposhtme 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)

Pastaj krijojmë një namespace dhe e aktivizojmë atë. Namespace është, në njëfarë mënyre, si një projekt ose ambient, por brenda klasterit Kubernetes. Ai është i pavarur nga projektet Google Cloud:

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

Nisim klasterin

Pas kalimit nëpër këto disa hapa, mund të nisim klasterin me tre nodet 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

Me default ai në dispozicion vetëm brenda Kubernetes. Kjo do të thotë se nga ky server, nga ku keni ekzekutuar komandën "Create", nuk është i aksesueshëm. Që të bëhet aksesueshëm, për shembull për teste me klientin, duhet të hapni portin përmes Port Mapping:

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

Pastaj lidhni klientin tuaj MySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Komanda të avancuara për menaxhimin e klasterit

Baza e të dhënave me IP publike

Nëse dëshironi një zgjidhje më të përhershme për aksesin në klaster, mund të merrni një adresë IP të jashtme. 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 të jashtme përdorni komandën e mëposhtme:

# 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

Caktoni qartë fjalëkalimin

Në vend që sistemi të gjenerojë fjalëkalimin rastësisht, mund të caktoni qartë fjalëkalimin:

# 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

Po e shfaq rezultatin e skenave në një format të lexueshëm, por gjithashtu mbështetet formati JSON.

Çaktivizoni disponueshmĂ«rinĂ« e lartĂ«

Me komandën e mëposhtme mund të çaktivizoni disponueshmërinë e lartë për të zbatuar një node të vetme:

# 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 sa më shpejt dhe lehtë MySQL, për ta testuar dhe pastaj për ta mbyllur ose për ta përdorur për zhvillim.

Mjidhi Percona DBaaS CLI ndihmon në marrjen e një zgjidhjeje në Kubernetes, të ngjashme me DBaaS. Ne vazhdojmë të punojmë mbi funksionalitetin dhe përdorshmërinë e saj.

Ky raport u shpërnda për herë të parë në @Databases Meetup nga Mail.ru Cloud Solutions&Tarantool. Shikoni video prezantime të tjera dhe abonohuni për njoftimet mbi ngjarjet në Telegram Rreth Kubernetes në Mail.ru Group.

ÇfarĂ« tjetĂ«r tĂ« lexoni mbi temĂ«n:

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

Burimi: habr.com

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