Ulakha kanjani ifu eliyi-hybrid usebenzisa i-Kubernetes engangena esikhundleni se-DBaaS

Igama lami nginguPetr Zaitsev, ngiyi-CEO, umsunguli IPercona futhi ngifuna ukukutshela:

  • ukuthi siphuma kanjani kuzixazululo zomthombo ovulekile ukuya kusizindalwazi njengesevisi;
  • yiziphi izindlela ezikhona zokusebenzisa imininingwane egciniwe emafini;
  • i-Kubernetes ingangena kanjani esikhundleni se-DBaaS, iqede ukuncika kumthengisi futhi igcine ubulula be-DBMS njengesevisi.

I-athikili ilungiswe ngokusekelwe embikweni oku-@Databases Meetup by Mail.ru Cloud Solutions & Tarantool. Uma ungafuni ukufunda, ungabuka:


Siphuma kanjani emthonjeni ovulekile siye kusizindalwazi njengesevisi emafini

Bengisebenza kumthombo ovulekile kusukela ngasekupheleni kweminyaka yama-90s. Eminyakeni engamashumi amabili edlule, ukusebenzisa umthombo ovulekile, njengemininingwane yolwazi, bekungelula kangako. Bekudingeka ukulanda ikhodi yomthombo, ukuyichibiyela, ukuhlanganisa bese uyisebenzisa kuphela.

Umthombo ovulekile wabe usudlula ochungechungeni lokwenza lula:

  • I-Tar.gz kanye ne-FAKA imithombo ebidinga ukuhlanganiswa;
  • amaphakheji anokwencika okufana ne-.deb ne-.rpm, lapho udinga kuphela ukufaka isethi yamaphakheji;
  • amaqoqo ephakheji afana ne-APT ne-YUM, lapho ukufakwa kuzenzakalela;
  • izixazululo ezifana ne-Docker ne-Snap, ezikuvumela ukuthi uthole amaphakheji ngokufaka ngaphandle kokuncika kwangaphandle.

Ngenxa yalokho, kuba lula ukusebenzisa isofthiwe yomthombo ovulekile futhi kwehlisa umgoqo wokungena ekuthuthukiseni izinhlelo ezinjalo.

Ngesikhathi esifanayo, ngokungafani nesimo eminyakeni engu-20 edlule, lapho wonke umuntu enguchwepheshe womhlangano, manje abathuthukisi abaningi abakwazi ukwakha amathuluzi abawasebenzisa kusukela emthonjeni.

Eqinisweni, lokhu akukubi, ngoba:

  1. Singasebenzisa isofthiwe eyinkimbinkimbi kakhulu kodwa esebenziseka kalula. Isibonelo, isiphequluli sisebenziseka kalula, kodwa sihlanganisa izingxenye eziningi zomthombo ovulekile futhi akulula ukwakha kusukela ekuqaleni.
  2. Abantu abaningi bangaba abathuthukisi bomthombo ovulekile kanye nenye isofthiwe, isofthiwe eyengeziwe isetshenziswa ngamabhizinisi, futhi isidingo sayo sikhulu.

Okubi ukuthi isinyathelo esilandelayo sokwenza lula sihlotshaniswa nokusetshenziswa kwezixazululo zefu, futhi lokhu kuholela ekukhiyeleni komthengisi othile, okungukuthi, ukubophezela kumphakeli oyedwa. Sisebenzisa izixazululo ezilula futhi abahlinzeki basebenzisa izingxenye zomthombo ovulekile, kodwa empeleni babethelwe kwelinye lamafu amakhulu. Okusho ukuthi, indlela elula neshesha kakhulu yokukhipha umthombo ovulekile (nesofthiwe ehambisana nawo) isemafini, kusetshenziswa i-API yokuphathelene.

Uma kukhulunywa ngokugcina imininingwane efwini, kunezindlela ezimbili:

  1. Hlanganisa ingqalasizinda yolwazi, njengasesikhungweni sedatha esijwayelekile. Okungukuthi, thatha amabhlokhi wokwakha ajwayelekile: hlanganisa, isitoreji, nokunye, faka i-Linux kanye nesizindalwazi kuzo, futhi uzilungiselele.
  2. Sebenzisa Isizindalwazi Njengesevisi, lapho umhlinzeki ehlinzeka ngesizindalwazi esenziwe ngomumo ngaphakathi kwefu.

I-DBaaS iyimakethe ekhula ngokushesha njengamanje ngoba ivumela abathuthukisi ukuthi basebenze ngokuqondile nesizindalwazi futhi inciphise umsebenzi ojwayelekile. Umhlinzeki uzibophezela ukuqinisekisa Ukutholakala Okuphezulu kanye nokukala okulula, ukupheshela imininingwane egciniwe, izipele, nokulungisa ukusebenza.

Izinhlobo ezimbili Zedathabheyisi Njengesevisi esekelwe kumthombo ovulekile kanye nenye indlela ye-Kubernetes

Kunezinhlobo ezimbili zeDatabase njengesevisi yolwazi oluvulekile:

  1. Umkhiqizo ojwayelekile womthombo ovulekile opakishwe endaweni engemuva yokuphatha ukuze usetshenziswe kalula futhi uphathwe.
  2. Isixazululo esithuthukisiwe sezentengiso esinezengezo ezahlukahlukene, esihambisana nomthombo ovulekile.

Zombili izinketho zinciphisa amathuba okufuduka phakathi kwamafu futhi zehlise ukuphatheka kwedatha nezinhlelo zokusebenza. Isibonelo, naphezu kweqiniso lokuthi izinhlobo ezahlukene zamafu zisekela ngokuyisisekelo i-MySQL ejwayelekile efanayo, kunomehluko omkhulu phakathi kwazo: ekusebenzeni, ukusebenza, ukwenza isipele, njalonjalo. Ukuthutha usuka kwelinye ifu uye kwelinye kungaba inselele, ikakhulukazi ezinhlelweni eziyinkimbinkimbi.

Futhi lapha umbuzo uphakama - kungenzeka yini ukuthola kalula Isizindalwazi njengesevisi, kodwa njengesixazululo esilula somthombo ovulekile?

Izindaba ezimbi ukuthi, ngeshwa, azikho izixazululo ezinjalo emakethe okwamanje. Izindaba ezinhle ukuthi kukhona i-Kubernetes, ekuvumela ukuthi usebenzise izixazululo ezinjalo.

I-Kubernetes iyisistimu yokusebenza yamafu noma isikhungo sedatha esikuvumela ukuthi usebenzise futhi uphathe uhlelo lokusebenza kuwo wonke amaseva amaningi kuqoqo kunokuba kumsingathi oyedwa.

Manje uKubernetes ungumholi esigabeni sesoftware enjalo. Kwakukhona izixazululo eziningi ezahlukene zezinkinga ezinjalo, kodwa kwaba indinganiso. Izinkampani eziningi ebezigxile kwezinye izixazululo manje sezigxile ekuguquleni imikhiqizo yazo ukuthi isekele i-Kubernetes.

Ngaphezu kwalokho, i-Kubernetes iyisixazululo sendawo yonke esisekelwa emafwini ayimfihlo, asesidlangalaleni kanye nama-hybrid abathengisi abaningi, isibonelo: AWS, Google Cloud, Microsoft Azure, I-Mail.ru Cloud Solutions.

Isebenza kanjani i-Kubernetes nesizindalwazi

I-Kubernetes ekuqaleni yayiklanyelwe izinhlelo zokusebenza ezingenasisekelo ezicubungula idatha kodwa ezingagcini lutho, njengama-microservices noma izinhlelo zokusebenza zewebhu. Imininingo egciniwe ikolunye uhlangothi lwe-spectrum, okungukuthi, iyizinhlelo zokusebenza ezisemthethweni. Futhi i-Kubernetes yayingahloselwe izicelo ezinjalo ekuqaleni.

Kodwa-ke, kunezici ezivele ku-Kubernetes muva nje ezivumela ukusetshenziswa kwedathabhethi nezinye izinhlelo zokusebenza ezisemthethweni:

  1. Umqondo we-StatefulSet uchungechunge lonke lwezinto zokuqala zokucubungula imicimbi emayelana nokumisa umsebenzi wama-pods nokusebenzisa Ukuvala Okuhle (ukuvalwa kohlelo lokusebenza okubikezelwayo).
  2. I-Persistent Volumes izitolo zedatha ezihlotshaniswa nama-pods, izinto zokuphatha i-Kubernetes.
  3. I-Operator Framework - okungukuthi, ikhono lokudala izingxenye zokuphatha imininingo egciniwe nezinye izinhlelo zokusebenza ezisatshalaliswa ezindaweni eziningi.

Kakade manje emafwini omphakathi kukhona I-Databases enkulu njengesevisi, i-backend yayo i-Kubernetes, isibonelo: I-CockroachCloud, i-InfluxDB, i-PlanetScale. Okungukuthi, i-database ku-Kubernetes akuyona nje into engenzeka ngokwethiyori, kodwa futhi into esebenza ngokusebenza.

I-Percona inezixazululo ezimbili zomthombo ovulekile we-Kubernetes:

  1. I-Kubernetes Operator ye-Percona Server ye-MongoDB.
  2. I-Kubernetes Operator ye-XtraDB CLUSTER iyisevisi ehambisana ne-MySQL futhi inikeza ukutholakala okuphezulu nokungaguquguquki. Ungasebenzisa futhi i-node eyodwa uma ukutholakala okuphezulu kungadingeki, isibonelo kusizindalwazi se-dev.

Abasebenzisi be-Kubernetes bangahlukaniswa ngamaqembu amabili. Abanye abantu basebenzisa i-Kubernetes Operators ngokuqondile - laba ikakhulukazi abasebenzisi abathuthukile abanokuqonda okuhle kokuthi ubuchwepheshe busebenza kanjani. Abanye bayisebenzisa ku-backend - abasebenzisi abanjalo banentshisekelo kokuthile okufana ne-Database njenge-Service, abafuni ukuhlolisisa ama-nuances we-Kubernetes. Eqenjini lesibili labasebenzisi, sinesinye isisombululo somthombo ovulekile - Ithuluzi le-Percona DBaaS CLI. Lesi yisixazululo sokuhlola salabo abafuna ukuthola umthombo ovulekile we-DBaaS ngokusekelwe ku-Kubernetes ngaphandle kokuqonda okujulile kobuchwepheshe.

Ungayisebenzisa kanjani i-Percona's DBaaS kuGoogle Kubernetes Engine

I-Google Kubernetes Engine, ngokubona kwami, ingenye yezindlela ezisebenza kakhulu zokusetshenziswa kobuchwepheshe be-Kubernetes. Itholakala ezifundeni eziningi zomhlaba futhi ine-Command Line Tool (SDK) elula futhi elula, ekuvumela ukuthi udale imibhalo kunokuphatha inkundla mathupha.

Ukuze i-DBaS yethu isebenze, sidinga izingxenye ezilandelayo:

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

Faka i-kubectl

Sifaka iphakheji yesistimu yakho yokusebenza, sizobheka isibonelo se-Ubuntu. Imininingwane eyengeziwe lapha.

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

Ifaka i-Google Cloud SDK

Sifaka iphakheji yesofthiwe ngendlela efanayo. Imininingwane eyengeziwe lapha.

# 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

Ifaka i-Percona DBaaS CLI

Faka kusuka kumakhosombe e-Percona. Ithuluzi le-Percona DBaaS CLI lisewumkhiqizo wokuhlola, ngakho-ke litholakala endaweni yokugcina yokuhlola, okufanele inikwe amandla ngokuhlukana, ngisho noma usunawo amakhosombe e-Percona afakiwe.

Funda kabanzi lapha.

Ukufaka i-algorithm:

  1. Setha amakhosombe e-Percona usebenzisa ithuluzi lokukhishwa kwe-percona. Okokuqala udinga ukulanda futhi ufake iphakheji esemthethweni yokukhishwa kwe-percona kusuka ku-Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Nika amandla ingxenye yesikhombi sethuluzi lokuhlola ngendlela elandelayo:
    sudo percona-release enable tools experimental
    
  3. Faka iphakheji ye-percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Ukusetha ukusebenza kwezingxenye

Okuningi mayelana nezilungiselelo lapha.

Okokuqala udinga ukungena ku-akhawunti yakho ye-Google. Ngaphezu kwalokho, i-Google Cloud ivumela umsebenzisi oyedwa ukuthi abe namaphrojekthi amaningi azimele, ngakho-ke udinga ukucacisa iphrojekthi esebenzayo usebenzisa ikhodi yale phrojekthi:

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

Okulandelayo, sakha iqoqo. Kudemo, ngidale iqoqo le-Kubernetes lamanodi amathathu kuphela - lobu ubuncane obudingekayo ukuze kutholakale ukutholakala okuphezulu:

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

Umyalo olandelayo we-kubectl unikeza amalungelo esiwafunayo kumsebenzisi wethu wamanje:

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

Bese sidala indawo yegama futhi siyenze isebenze. I-Namespace, uma sikhuluma nje, ifana nephrojekthi noma indawo, kodwa isivele ingaphakathi kweqoqo le-Kubernetes. Izimele kumaphrojekthi e-Google Cloud:

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

Ukuqala iqoqo

Uma sesidlule kulezi zinyathelo ezimbalwa, singakwazi ukuqala iqoqo lamanodi amathathu ngalo myalo olula:

# 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

Indlela yokuxhuma ku-cluster

Ngokuzenzakalelayo, itholakala kuphela ngaphakathi kwe-Kubernetes. Okusho ukuthi, ayifinyeleleki kule seva osebenzise kuyo umyalo othi "Dala". Ukuze ulenze litholakale, ngokwesibonelo, ngokuhlolwa neklayenti, udinga ukudlulisela imbobo nge-Port Mapping:

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

Bese sixhuma iklayenti lakho le-MySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Imiyalo yokuphatha iqoqo ethuthukisiwe

Isizindalwazi ku-IP yomphakathi

Uma ufuna isixazululo esihlala njalo sokutholakala kweqoqo, ungathola ikheli le-IP langaphandle. Kulokhu, isizindalwazi sizofinyeleleka noma yikuphi. Lokhu akuvikeleki kancane, kodwa ngokuvamile kulula kakhulu. Nge-IP yangaphandle sisebenzisa umyalo olandelayo:

# 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

Setha ngokucacile iphasiwedi

Esikhundleni sokuthi isistimu ikhiqize iphasiwedi ngokungahleliwe, ungasetha igama-mfihlo ngokusobala:

# 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

Ngibonisa okukhishwayo kwemibhalo ngefomethi efundekayo yomuntu, kodwa ifomethi ye-JSON nayo iyasekelwa.

Ivala ukutholakala okuphezulu

Ngomyalo olandelayo ungakhubaza ukutholakala okuphezulu ukuze usebenzise i-node eyodwa:

# 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

Lesi yisixazululo semisebenzi yokuhlola ukuze i-MySQL iqale futhi isebenze ngokushesha nakalula ngangokunokwenzeka, ihlole, bese uyivala noma uyisebenzisele ukuthuthukisa.

Ithuluzi le-Percona DBaaS CLI likusiza ukuthi uzuze isisombululo esifana ne-DBaaS ku-Kubernetes. Ngesikhathi esifanayo, siyaqhubeka nokusebenza ekusebenzeni kwayo nokusebenziseka kwayo.

Lo mbiko wethulwe okokuqala ngo @Databases Meetup by Mail.ru Cloud Solutions&Tarantool. Bheka Π²ΠΈΠ΄Π΅ΠΎ eminye imisebenzi futhi ubhalisele izimemezelo zomcimbi kuTelegram Around Kubernetes at Mail.ru Group.

Yini enye ongayifunda esihlokweni:

  1. Imininingo egciniwe endaweni yesimanje ye-IIoT.
  2. Ungayikhetha kanjani isizindalwazi sephrojekthi ukuze ungadingi ukukhetha futhi.

Source: www.habr.com

Engeza amazwana