Hvernig á að byggja blendingsský með Kubernetes sem getur komið í stað DBaaS

Ég heiti Petr Zaitsev, ég er forstjóri, stofnandi percona og ég vil segja þér:

  • hvernig við komum frá opnum lausnum yfir í Database as a Service;
  • hvaða aðferðir eru til við að dreifa gagnagrunnum í skýinu;
  • hvernig Kubernetes getur komið í stað DBaaS, komið í veg fyrir háð söluaðila og viðhaldið einfaldleika DBMS sem þjónustu.

Greinin var unnin út frá skýrslu á @Databases Meetup af Mail.ru Cloud Solutions & Tarantool. Ef þú vilt ekki lesa geturðu horft á:


Hvernig við komum frá opnum hugbúnaði yfir í Database as a Service í skýinu

Ég hef unnið í opnum hugbúnaði síðan seint á tíunda áratugnum. Fyrir tuttugu árum var ekki svo auðvelt að nota opinn uppspretta, eins og gagnagrunna. Það var nauðsynlegt að hlaða niður frumkóðann, plástra hann, setja hann saman og aðeins síðan nota hann.

Opinn uppspretta fór síðan í gegnum röð af einföldunum:

  • Tar.gz og INSTALL heimildum sem þurfti að safna saman;
  • pakka með ósjálfstæði eins og .deb og .rpm, þar sem þú þarft aðeins að setja upp sett af pakka;
  • pakkageymslur eins og APT og YUM, þar sem uppsetningin er sjálfvirk;
  • lausnir eins og Docker og Snap, sem gera þér kleift að taka á móti pakka með uppsetningu án utanaðkomandi ósjálfstæðis.

Fyrir vikið verður auðveldara að nota opinn hugbúnað og lækkar einnig aðgangshindrun til að þróa slík forrit.

Á sama tíma, ólíkt ástandinu fyrir 20 árum, þegar allir voru samsetningarsérfræðingar, geta nú flestir verktaki ekki smíðað verkfærin sem þeir nota frá uppruna.

Reyndar er þetta ekki slæmt, vegna þess að:

  1. Við getum notað flóknari en notendavænni hugbúnað. Til dæmis er vafri þægilegur í notkun, en hann inniheldur marga opna íhluti og er óþægilegt að byggja upp frá grunni.
  2. Fleiri geta orðið þróunaraðilar á opnum hugbúnaði og öðrum hugbúnaði, meiri hugbúnaður er notaður af fyrirtækjum og þörfin fyrir hann er meiri.

Gallinn er sá að næsta skref í einföldun tengist notkun skýjalausna og það leiðir til ákveðinnar seljendalokunar, það er að segja bindingu við einn birgja. Við notum einfaldar lausnir og veitendur nota opna íhluti, en í raun eru þeir negldir við eitt af stóru skýjunum. Það er, auðveldasta og fljótlegasta leiðin til að dreifa opnum hugbúnaði (og hugbúnaði sem er samhæfður honum) er í skýjunum með því að nota sérstakt API.

Þegar kemur að gagnagrunnum í skýinu eru tvær aðferðir:

  1. Settu saman gagnagrunninn, eins og í venjulegu gagnaveri. Það er að segja, taktu venjulega byggingareiningar: reikna, geymsla og svo framvegis, settu upp Linux og gagnagrunn á þeim og stilltu þá.
  2. Notaðu Database as a Service, þar sem veitandinn býður upp á tilbúinn gagnagrunn inni í skýinu.

DBaaS er ört vaxandi markaður núna vegna þess að það gerir forriturum kleift að vinna beint með gagnagrunna og lágmarkar venjubundna vinnu. Þjónustuveitan skuldbindur sig til að tryggja mikla aðgengi og auðvelda stærðarstærð, lagfæringar á gagnagrunni, afrit og afkastastillingu.

Tvær gerðir af gagnagrunni sem þjónustu byggt á opnum uppspretta og val í formi Kubernetes

Það eru tvær tegundir af gagnagrunni sem þjónustu fyrir opna gagnagrunna:

  1. Stöðluð opinn uppspretta vara sem er pakkað í stjórnendastuðning til að auðvelda uppsetningu og stjórnun.
  2. Háþróuð viðskiptalausn með ýmsum viðbótum, samhæfð við opinn uppspretta.

Báðir valkostir draga úr möguleika á flutningi á milli skýja og draga úr færanleika gagna og forrita. Til dæmis, þrátt fyrir þá staðreynd að mismunandi gerðir skýja styðja í meginatriðum sama staðlaða MySQL, þá er verulegur munur á milli þeirra: í rekstri, afköstum, öryggisafriti og svo framvegis. Flutningur frá einu skýi í annað getur verið krefjandi, sérstaklega fyrir flókin forrit.

Og hér vaknar spurningin - er hægt að fá þægindi Database as a Service, en sem einfalda opinn uppspretta lausn?

Slæmu fréttirnar eru þær að því miður eru engar slíkar lausnir á markaðnum ennþá. Góðu fréttirnar eru þær að það er til Kubernetes, sem gerir þér kleift að innleiða slíkar lausnir.

Kubernetes er stýrikerfi fyrir skýið eða gagnaverið sem gerir þér kleift að dreifa og stjórna forriti yfir marga netþjóna í þyrpingu frekar en á einum hýsil.

Nú er Kubernetes leiðandi í flokki slíks hugbúnaðar. Það voru margar mismunandi lausnir á slíkum vandamálum, en það varð staðallinn. Mörg fyrirtæki sem áður einbeittu sér að öðrum lausnum einbeita sér nú að því að aðlaga vörur sínar til að styðja við Kubernetes.

Að auki er Kubernetes alhliða lausn sem er studd í einka-, opinberum og blendingsskýjum margra framleiðenda, til dæmis: AWS, Google Cloud, Microsoft Azure, Mail.ru skýjalausnir.

Hvernig Kubernetes vinnur með gagnagrunnum

Kubernetes var upphaflega hannað fyrir ríkisfangslaus forrit sem vinna úr gögnum en geyma ekki neitt, eins og örþjónustur eða vefforrit. Gagnagrunnar eru á hinum enda litrófsins, það er að segja, þeir eru staðbundin forrit. Og Kubernetes var upphaflega ekki ætlað fyrir slík forrit.

Hins vegar eru eiginleikar sem hafa birst í Kubernetes nýlega sem leyfa notkun á gagnagrunnum og öðrum fullkomnum forritum:

  1. StatefulSet hugmyndin er heil röð frumstæðna til að vinna úr atburðum um að stöðva vinnu fræbelgs og innleiða Graceful Shutdown (fyrirsjáanleg lokun á forritinu).
  2. Viðvarandi bindi eru gagnageymslur sem eru tengdar belgjum, Kubernetes stjórnunarhlutum.
  3. Operator Framework - það er hæfileikinn til að búa til íhluti til að stjórna gagnagrunnum og öðrum staðbundnum forritum sem dreift er á marga hnúta.

Nú þegar í almenningsskýjum eru stórir gagnagrunnar sem þjónusta, bakendi þeirra er Kubernetes, til dæmis: CockroachCloud, InfluxDB, PlanetScale. Það er að segja að gagnagrunnur á Kubernetes er ekki bara eitthvað sem er fræðilega mögulegt heldur líka eitthvað sem virkar í reynd.

Percona er með tvær opinn uppspretta lausnir fyrir Kubernetes:

  1. Kubernetes Operator fyrir Percona Server fyrir MongoDB.
  2. Kubernetes Operator for XtraDB CLUSTER er þjónusta sem er samhæf við MySQL og veitir mikið framboð og samkvæmni. Þú getur líka notað einn hnút ef ekki er þörf á miklu framboði, til dæmis fyrir þróunargagnagrunn.

Hægt er að skipta Kubernetes notendum í tvo hópa. Sumir nota Kubernetes Operators beint - þetta eru aðallega háþróaðir notendur sem hafa góðan skilning á því hvernig tæknin virkar. Aðrir keyra það á bakendanum - slíkir notendur hafa áhuga á einhverju eins og Database as a Service, þeir vilja ekki kafa ofan í blæbrigði Kubernetes. Fyrir annan hóp notenda höfum við aðra opinn uppspretta lausn - Percona DBaaS CLI Tool. Þetta er tilraunalausn fyrir þá sem vilja fá opinn uppspretta DBaaS byggt á Kubernetes án djúps skilnings á tækninni.

Hvernig á að keyra DBaaS Percona á Google Kubernetes Engine

Google Kubernetes Engine, að mínu mati, er ein hagnýtasta útfærslan á Kubernetes tækni. Það er fáanlegt á mörgum svæðum í heiminum og hefur einfalt og þægilegt Command Line Tool (SDK), sem gerir þér kleift að búa til forskriftir frekar en að stjórna pallinum handvirkt.

Til þess að DBaaS okkar virki þurfum við eftirfarandi íhluti:

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

Settu upp kubectl

Við setjum upp pakkann fyrir stýrikerfið þitt, við munum skoða dæmið um Ubuntu. Nánari upplýsingar hér.

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

Setur upp Google Cloud SDK

Við setjum upp hugbúnaðarpakkann á sama hátt. Nánari upplýsingar hér.

# 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

Setur upp Percona DBaaS CLI

Settu upp frá Percona geymslunum. Percona DBaaS CLI Tool er enn tilraunavara, þannig að það er staðsett í tilraunageymslunni, sem verður að vera virkt sérstaklega, jafnvel þótt þú hafir nú þegar Percona geymslur uppsettar.

meira hér.

Uppsetningaralgrím:

  1. Settu upp Percona geymslur með því að nota percona-release tólið. Fyrst þarftu að hlaða niður og setja upp opinbera percona-útgáfupakkann frá Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Virkjaðu geymsluþáttinn fyrir tilraunaverkfæri sem hér segir:
    sudo percona-release enable tools experimental
    
  3. Settu upp percona-dbaas-cli pakka:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Uppsetning á rekstri íhluta

Meira um stillingar hér.

Fyrst þarftu að skrá þig inn á Google reikninginn þinn. Ennfremur gerir Google Cloud einum notanda kleift að hafa mörg sjálfstæð verkefni, svo þú þarft að tilgreina vinnuverkefni með kóðanum fyrir þetta verkefni:

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

Næst búum við til klasa. Fyrir kynninguna bjó ég til Kubernetes þyrping með aðeins þremur hnútum - þetta er lágmarkið sem þarf fyrir mikið framboð:

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

Eftirfarandi kubectl skipun gefur núverandi notanda okkar viðeigandi réttindi:

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

Síðan búum við til nafnrými og gerum það virkt. Nafnarými er í grófum dráttum líka eins og verkefni eða umhverfi, en þegar inni í Kubernetes klasa. Það er óháð Google Cloud verkefnum:

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

Byrjar á klasanum

Þegar við höfum farið í gegnum þessi fáu skref getum við byrjað þriggja hnúta þyrping með þessari einföldu skipun:

# 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

Hvernig á að tengjast þyrping

Sjálfgefið er það aðeins í boði í Kubernetes. Það er, það er ekki aðgengilegt frá þessum netþjóni sem þú keyrðir „Create“ skipunina frá. Til að gera það aðgengilegt, til dæmis fyrir prófanir með viðskiptavini, þarftu að senda gáttina í gegnum Port Mapping:

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

Síðan tengjum við MySQL viðskiptavin þinn:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Ítarlegar klasastjórnunarskipanir

Gagnagrunnur um opinbera IP

Ef þú vilt varanlegri lausn fyrir framboð á klasa geturðu fengið ytri IP tölu. Í þessu tilviki verður gagnagrunnurinn aðgengilegur hvar sem er. Þetta er minna öruggt, en oft þægilegra. Fyrir ytri IP notum við eftirfarandi skipun:

# 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

Stilltu lykilorðið sérstaklega

Í stað þess að kerfið búi til lykilorð af handahófi geturðu stillt lykilorðið beint:

# 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

Ég er að sýna úttak skriftanna á læsilegu sniði, en JSON snið er einnig stutt.

Slökkt á háu framboði

Með eftirfarandi skipun geturðu slökkt á háu framboði til að dreifa einum hnút:

# 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

Þetta er lausn til að prófa verkefni til að koma MySQL í gang eins fljótt og auðveldlega og mögulegt er, prófa það og slökkva á því eða nota það til þróunar.

Percona DBaaS CLI tólið hjálpar þér að ná fram DBaaS-líkri lausn á Kubernetes. Á sama tíma höldum við áfram að vinna að virkni þess og notagildi.

Skýrsla þessi var fyrst kynnt kl @Databases Meetup frá Mail.ru Cloud Solutions&Tarantool. Sjáðu til vídeó aðrar sýningar og gerast áskrifandi að viðburðatilkynningum á Telegram Í kringum Kubernetes hjá Mail.ru Group.

Hvað annað að lesa um efnið:

  1. Gagnasöfn á nútíma IIoT vettvang.
  2. Hvernig á að velja gagnagrunn fyrir verkefni svo þú þurfir ekki að velja aftur.

Heimild: www.habr.com

Bæta við athugasemd