Maitiro ekuvaka gore rakasanganiswa uchishandisa Kubernetes inogona kutsiva DBaaS

Zita rangu ndiPetr Zaitsev, ini ndiri CEO, muvambi percona uye ndinoda kukuudza:

  • mabviro atakaita kubva kune yakavhurika sosi mhinduro kuDatabase seSevhisi;
  • ndedzipi nzira dziripo dzekuendesa dhatabhesi mugore;
  • sei Kubernetes inogona kutsiva DBaaS, kubvisa kutsamira kwevatengesi uye kuchengetedza kureruka kweDBMS sevhisi.

Chinyorwa chakagadzirwa zvichibva pamushumo pa @Databases Meetup neMail.ru Cloud Solutions & Tarantool. Kana usingadi kuverenga, unogona kuona:


Mabviro atakaita kubva kune yakavhurika sosi kuenda kuDatabase seSevhisi mugore

Ndanga ndichishanda munzvimbo yakavhurika kubva mukupera kwema90s. Makore makumi maviri apfuura, kushandisa yakavhurika sosi, senge dhatabhesi, kwanga kusiri nyore. Zvaive zvakakodzera kudhawunirodha kodhi kodhi, kuigadzira, kuiunganidza uye chete woishandisa.

Open source yakabva yapfuura nekutevedzana kwekurerutsa:

  • Tar.gz uye INSTALL masosi aida kuunganidzwa;
  • mapakeji ane dependencies akafanana .deb uye .rpm, apo unongoda kuisa seti yemapakeji;
  • Package repositories seAPT neYUM, iyo yekuisa nayo otomatiki;
  • mhinduro dzakaita seDocker uye Snap, iyo inokutendera kuti ugamuchire mapakeji nekumisikidza pasina kutsamira kwekunze.

Nekuda kweizvozvo, zvinova nyore kushandisa yakavhurika sosi software uye zvakare inodzikisa chipingamupinyi chekupinda mukugadzira maapplication akadaro.

Panguva imwecheteyo, kusiyana nemamiriro ezvinhu makore makumi maviri apfuura, apo munhu wese aive nyanzvi yegungano, iye zvino vazhinji vanogadzira havagoni kuvaka zvishandiso zvavanoshandisa kubva kunobva.

Muchokwadi, izvi hazvina kuipa, nekuti:

  1. Tinogona kushandisa zvakanyanya kuomarara asi zvakanyanya mushandisi-ane hushamwari software. Semuyenzaniso, browser iri nyore kushandisa, asi inosanganisira akawanda akavhurika sosi zvikamu uye hazviitike kuvaka kubva kutanga.
  2. Vanhu vazhinji vanogona kuve vagadziri veakavhurika sosi uye imwe software, yakawanda software inoshandiswa nemabhizinesi, uye kudiwa kwayo kwakakura.

Izvo zvakaderera ndezvekuti nhanho inotevera mukurerutsa inosanganiswa nekushandiswa kwegore mhinduro, uye izvi zvinotungamira kune mumwe mutengesi kukiya-mukati, ndiko kuti, kusungira kune mumwe mutengesi. Isu tinoshandisa mhinduro dzakareruka uye vanopa vanoshandisa yakavhurika sosi zvikamu, asi muchokwadi ivo vakarovererwa kune rimwe remakore makuru. Ndiko kuti, iyo iri nyore uye inokurumidza nzira yekuisa yakavhurika sosi (uye software inoenderana nayo) iri mumakore, uchishandisa proprietary API.

Kana zvasvika kune dhatabhesi mugore, pane nzira mbiri:

  1. Unganidza dhatabhesi zvivakwa, senge mune yenguva dzose data data. Ndokunge, tora akajairwa zvidhinha zvekuvaka: komputa, kuchengetedza, uye zvichingodaro, isa Linux uye dhatabhesi pazviri, uye uzvigadzirire.
  2. Shandisa Dhatabhesi seSevhisi, uko mupi anopa akagadzirira-akagadzirwa dhatabhesi mukati megore.

DBaaS imusika uri kukurumidza kukura izvozvi nekuti inobvumira vanogadzira kushanda zvakananga nemadhatabhesi uye inoderedza basa renguva dzose. Mupi anozvipira kuona Kuwanikwa Kwepamusoro uye kuyera nyore, dhatabhesi patching, backups, uye kuita tuning.

Mhando mbiri dzeDatabhesi seSevhisi yakavakirwa pane yakavhurika sosi uye imwe nzira iri muKubernetes

Kune marudzi maviri eDatabhesi seSevhisi kune akavhurika dhatabhesi:

  1. Iyo yakajairwa yakavhurika sosi chigadzirwa chakarongedzwa mune manejimendi backend kuitira nyore kutumira uye manejimendi.
  2. Iyo yepamberi yekutengesa mhinduro ine akasiyana ma-add-ons, anoenderana neyakavhurika sosi.

Iri mbiri sarudzo dzinoderedza mukana wekufamba pakati pemakore uye kuderedza kutakurika kwedata uye maapplication. Semuenzaniso, zvisinei nekuti mhando dzakasiyana dzemakore dzinotsigira zvakafanana chiyero cheMySQL, pane misiyano yakakura pakati pavo: mukushanda, kuita, kuchengetedza, zvichingodaro. Kutama kubva kune rimwe gore kuenda kune rimwe kunogona kuve kwakaoma, kunyanya kune yakaoma maapplication.

Uye pano mubvunzo unomuka - zvinokwanisika here kuwana nyore kweDatabase seSevhisi, asi seyakajeka yakavhurika sosi mhinduro?

Nhau dzakaipa ndedzekuti, zvinosuruvarisa, hapana mhinduro dzakadaro pamusika parizvino. Nhau dzakanaka ndedzekuti kune Kubernetes, iyo inokutendera iwe kuita mhinduro dzakadaro.

Kubernetes is an operating system yegore kana data center iyo inokutendera kuti utumire uye utore application kune akawanda maseva ari muboka kwete pane imwe chete host.

Iye zvino Kubernetes ndiye mutungamiri muchikamu chesoftware yakadaro. Paive nemhinduro dzakawanda dzakasiyana dzematambudziko akadaro, asi yakava chiyero. Makambani mazhinji aimbotarisa pane mamwe magadziriso ave kutarisana nekugadzirisa zvigadzirwa zvawo kutsigira Kubernetes.

Uye zvakare, Kubernetes mhinduro yepasirese inotsigirwa yakavanzika, yeruzhinji uye yakasanganiswa makore evazhinji vatengesi, semuenzaniso: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.

Kubernetes inoshanda sei nemadhatabhesi

Kubernetes yakatanga kugadzirirwa zvisizvo zvikumbiro zvinogadzirisa data asi hazvichengete chero chinhu, senge microservices kana webhu application. Databases iri kune imwe magumo eiyo spectrum, ndiko kuti, iwo ane stateful application. Uye Kubernetes yakanga isati yagadzirirwa zvikumbiro zvakadaro.

Nekudaro, pane maficha akaonekwa muKubernetes nguva pfupi yadarika anobvumira kushandiswa kwedhatabhesi uye mamwe maapplication akasarudzika:

  1. Iyo StatefulSet pfungwa izere nhevedzano yezvinyorwa zvekutanga zvekugadzirisa zviitiko nezve kumisa basa remapods uye kuita Graceful Shutdown (inofungidzira kudzima kwechishandiso).
  2. Persistent Vhoriyamu zvitoro zvedata zvine hukama nemapods, Kubernetes manejimendi zvinhu.
  3. Operator Framework - ndiko kuti, kugona kugadzira zvikamu zvekutarisira dhatabhesi uye mamwe maapplication akasarudzika akagoverwa munzvimbo dzakawanda.

Pari zvino mumakore eruzhinji kune maDatabhesi makuru seSevhisi, iyo yekuseri kwayo iri Kubernetes, semuenzaniso: CockroachCloud, InfluxDB, PlanetScale. Ndiko kuti, dhatabhesi paKubernetes haisi chinhu chete chinogoneka, asiwo chimwe chinhu chinoshanda mukuita.

Percona ine maviri akavhurika sosi mhinduro yeKubernetes:

  1. Kubernetes Operator yePercona Server yeMongoDB.
  2. Kubernetes Operator yeXtraDB CLUSTER ibasa rinoenderana neMySQL uye inopa kuwanikwa kwepamusoro uye kuenderana. Iwe unogonawo kushandisa node imwe chete kana kuwanikwa kwepamusoro kusingadiwi, semuenzaniso kune dev database.

Kubernetes vashandisi vanogona kukamurwa kuita mapoka maviri. Vamwe vanhu vanoshandisa Kubernetes Operators zvakananga - ava vanonyanya vashandisi vepamberi vane kunzwisisa kwakanaka kwemashandiro anoita tekinoroji. Vamwe vanoimhanyisa kubackend - vashandisi vakadaro vanofarira chimwe chinhu seDatabase seSevhisi, havadi kunyura mune nuances yeKubernetes. Kune rechipiri boka revashandisi, isu tine imwe yakavhurika sosi mhinduro - Percona DBaaS CLI Tool. Iyi ndiyo mhinduro yekuyedza kune avo vanoda kuwana yakavhurika sosi DBaaS yakavakirwa paKubernetes pasina kunzwisisa kwakadzama kwehunyanzvi.

Maitiro ekumhanyisa Percona's DBaaS paGoogle Kubernetes Injini

Google Kubernetes Injini, mumaonero angu, ndeimwe yeanonyanya kushanda eKubernetes tekinoroji. Inowanikwa munzvimbo dzakawanda dzepasirese uye ine iri nyore uye iri nyore Command Line Tool (SDK), iyo inokutendera kuti ugadzire zvinyorwa pane kubata nemaoko chikuva.

Kuti DBaaS yedu ishande, tinoda zvinotevera zvikamu:

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

Isa kubectl

Isu tinoisa iyo package yeako sisitimu yekushandisa, isu tichatarisa muenzaniso weUbuntu. Mamwe mashoko pano.

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

Kuisa Google Cloud SDK

Isu tinoisa software package nenzira imwechete. Mamwe mashoko pano.

# 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

Kuisa Percona DBaaS CLI

Isa kubva kuPercona repositories. Percona DBaaS CLI Tool ichiri chigadzirwa chekuyedza, saka chiri muyedzo repository, iyo inofanirwa kugoneswa zvakasiyana, kunyangwe iwe uchitova nePercona repositories yakaiswa.

More pano.

Kuisa algorithm:

  1. Misa Percona repositories uchishandisa percona-kuburitsa chishandiso. Kutanga iwe unofanirwa kudhawunirodha uye kuisa iyo yepamutemo percona-kuburitsa package kubva kuPercona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Gonesa iyo yekuedza chishandiso repository chikamu sezvinotevera:
    sudo percona-release enable tools experimental
    
  3. Isa percona-dbaas-cli package:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Kugadzirisa kushanda kwezvikamu

Zvimwe pamusoro pezvirongwa pano.

Kutanga iwe unofanirwa kupinda muGoogle account yako. Kupfuurirazve, Google Cloud inobvumira mushandisi mumwechete kuve nemapurojekiti akawanda akazvimiririra, saka iwe unofanirwa kudoma purojekiti inoshanda uchishandisa kodhi yepurojekiti iyi:

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

Zvadaro, tinogadzira sumbu. Kune demo, ini ndakagadzira Kubernetes cluster yemanodhi matatu chete - iyi ndiyo shoma inodiwa pakuwanikwa kwepamusoro:

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

Iyo inotevera kubectl yekuraira inopa ropafadzo dzinodiwa kumushandisi wedu wazvino:

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

Zvadaro tinogadzira nzvimbo yezita uye tinoita kuti ishande. Namespace iri, ingangoita kutaura, zvakare seprojekiti kana nharaunda, asi yatove mukati meKubernetes cluster. Yakazvimirira kubva kuGoogle Cloud mapurojekiti:

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

Kutanga boka

Kana tangopfuura nematanho mashoma aya, tinogona kutanga matatu-node cluster neiri nyore kuraira:

# 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

Nzira yekubatanidza kune cluster

Nekusagadzikana, inongowanikwa mukati meKubernetes. Kureva kuti, haisvikike kubva kune iyi server yawakamhanyisa iyo "Gadzira" kuraira. Kuita kuti iwanikwe, semuenzaniso, kune bvunzo nemutengi, unofanirwa kuendesa chiteshi kuburikidza nePort Mepu:

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

Zvadaro tinobatanidza mutengi wako weMySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Advanced cluster management commands

Database paruzhinji IP

Kana iwe uchida imwe yekusingaperi mhinduro yekuwanikwa kwecluster, unogona kuwana yekunze IP kero. Muchiitiko ichi, database ichave inowanikwa kubva chero kupi zvako. Izvi hazvina kuchengeteka zvishoma, asi kazhinji zviri nyore. Kune yekunze IP tinoshandisa murairo unotevera:

# 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

Isa password yacho zvakajeka

Panzvimbo peiyo sisitimu inongogadzira password, unogona kuseta password zvakajeka:

# 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

Ndiri kuratidza kubuda kwezvinyorwa zviri mufomati inoverengwa nevanhu, asi fomati yeJSON inotsigirwawo.

Kudzima kuwanikwa kwepamusoro

Nemurairo unotevera unogona kudzima kuwanikwa kwepamusoro kuendesa node imwe chete:

# 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

Iyi ndiyo mhinduro yekuyedza mabasa kuti MySQL ikwire uye ishande nekukurumidza uye zviri nyore sezvinobvira, iedze, wobva waivhara kana kuishandisa kusimudzira.

Iyo Percona DBaaS CLI chishandiso chinokubatsira iwe kuwana DBaaS-senge mhinduro paKubernetes. Panguva imwecheteyo, tinoramba tichishanda pakushanda kwayo uye kushandiswa kwayo.

Chirevo ichi chakatanga kuburitswa pa @Databases Meetup ne Mail.ru Cloud Solutions&Tarantool. Tarisa Π²ΠΈΠ΄Π΅ΠΎ mamwe maitiro uye kunyorera kune zviziviso zvezviitiko paTeregiramu Around Kubernetes paMail.ru Group.

Chii chimwe chekuverenga pamusoro pemusoro wenyaya:

  1. Dhatabhesi mune yemazuva ano IIoT papuratifomu.
  2. Nzira yekusarudza dhatabhesi yepurojekiti kuitira kuti usazofanira kusarudza zvakare.

Source: www.habr.com

Voeg