Faʻafefea ona fausia se ao faʻapipiʻi e faʻaaoga ai Kubernetes e mafai ona sui le DBaaS

O loʻu igoa o Petr Zaitsev, o aʻu o le Pule Sili, faʻavae percona ma ou te fia taʻu atu ia te oe:

  • pe na fa'afefea ona matou o mai mai faʻamatalaga tatala punaoa i Faʻamaumauga o se Auaunaga;
  • o a auala o loʻo i ai i le faʻapipiʻiina o faʻamaumauga i le ao;
  • auala e mafai ai e Kubernetes ona sui le DBaaS, faʻaumatia le faʻalagolago i tagata faʻatau ma tausia le faigofie o le DBMS o se tautua.

Na saunia le tusiga i luga o se lipoti i @Databases Meetup e Mail.ru Cloud Solutions & Tarantool. Afai e te le fia faitau, e mafai ona e matamata:


Na fa'afefea ona matou o mai mai le punaoa tatala i le Database o se Auaunaga i le ao

Sa ou galue i punaoa tatala talu mai le tuai o le 90s. I le luasefulu tausaga talu ai, o le faʻaaogaina o punaoa tatala, e pei o faʻamaumauga, e leʻi faigofie tele. Na manaʻomia le downloadina o le code source, faʻapipiʻi, tuʻufaʻatasia ona faʻaaogaina lea.

Open source ona alu lea i se faasologa o faʻafaigofie:

  • Tar.gz ma INSTALL punaoa e manaʻomia ona tuʻufaʻatasia;
  • afifi ma faʻalagolago e pei o le .deb ma le .rpm, lea e naʻo le faʻapipiʻiina o se seti o afifi;
  • fale teu oloa e pei o le APT ma le YUM, lea e otometi ai le faʻapipiʻiina;
  • fofo e pei o Docker ma Snap, lea e mafai ai ona e mauaina afifi e ala i le faʻapipiʻiina e aunoa ma se faʻalagolago i fafo.

O le i'uga, ua fa'afaigofie ai ona fa'aogaina polokalame tatala ma fa'aitiitia ai fo'i le pa e ulufale ai i le atina'eina o ia talosaga.

I le taimi lava e tasi, e le pei o le tulaga 20 tausaga talu ai, a o avea tagata uma ma tagata faʻapitoa faʻapotopotoga, o le taimi nei o le tele o tagata atinaʻe e le mafai ona fausia meafaigaluega latou te faʻaaogaina mai le punavai.

O le mea moni, e le leaga lenei mea, aua:

  1. E mafai ona matou fa'aogaina polokalama sili atu ona lavelave ae sili atu ona fa'aoga-tagata. Mo se faʻataʻitaʻiga, o se suʻesuʻega e faigofie ona faʻaoga, ae e aofia ai le tele o mea e tatala ai punaoa ma e le faigofie ona fausia mai le sasa.
  2. E tele tagata e mafai ona avea ma atinaʻe o punaoa tatala ma isi polokalama, sili atu polokalama e faʻaaogaina e pisinisi, ma e manaʻomia tele.

O le pito i lalo o le isi laasaga i le faʻafaigofie e fesoʻotaʻi ma le faʻaogaina o fofo o ao, ma o lenei mea e taʻitaʻia ai se faʻatau faʻatau loka-i totonu, o lona uiga, fusia i le tasi tagata faʻatau. Matou te faʻaogaina fofo faigofie ma faʻaogaina e le au faʻapipiʻi vaega o punaoa tatala, ae o le mea moni o loʻo fao i se tasi o ao tetele. O lona uiga, o le auala pito sili ona faigofie ma sili ona vave e faʻapipiʻi ai punaoa tatala (ma polokalama e fetaui ma ia) o loʻo i totonu o ao, e faʻaaoga ai se API faʻapitoa.

A oʻo mai i faʻamaumauga i le ao, e lua auala:

  1. Faʻapipiʻi faʻamaumauga faʻamaumauga, pei o se nofoaga autu masani. O lona uiga, ave poloka faufale masani: faʻatautaia, teuina, ma isi, faʻapipiʻi Linux ma se faʻamaumauga i luga oi latou, ma faʻapipiʻi.
  2. Fa'aaogā le Fa'amaumauga e fai ma Au'aunaga, lea e tu'uina atu ai e le 'au'aunaga se fa'amaumauga tu'ufa'atasia i totonu o le ao.

O le DBaaS o se maketi faʻavavevave i le taimi nei aua e mafai ai e le au atinaʻe ona galulue saʻo ma faʻamaumauga ma faʻaitiitia galuega masani. E fa'amoemoe le 'au'aunaga e fa'amautinoa le Avanoa Maualuga ma le fa'agofieina o le fa'avasegaina, fa'apipi'i fa'amaumauga, fa'amaumauga, ma le fa'atulagaina o fa'atinoga.

E lua ituaiga o Faʻamaumauga o se Auaunaga e faʻavae i luga o punaoa tatala ma se isi mea i foliga o Kubernetes

E lua ituaiga o Fa'amaumauga o se Au'aunaga mo fa'amaumauga tatala:

  1. O se oloa fa'asalalau fa'asalalau fa'apipi'i i totonu o se fa'atonuga pito i tua mo le fa'atinoina faigofie ma le puleaina.
  2. O se fofo fa'atau pisinisi fa'atasi ai ma fa'aopoopoga eseese, e fetaui ma fa'apogai matala.

O filifiliga uma e lua e faʻaitiitia ai le avanoa e femalagaʻi ai i le va o ao ma faʻaitiitia ai le feaveaʻi o faʻamatalaga ma talosaga. Mo se faʻataʻitaʻiga, e ui lava i le mea moni o ituaiga eseese o ao e lagolagoina le tulaga tutusa MySQL, o loʻo i ai eseesega taua i le va oi latou: i le gaioiga, faʻatinoga, faʻamaumauga, ma isi. O le faimalaga mai le tasi ao i le isi e mafai ona faigata, aemaise lava mo faʻaoga faigata.

Ma o iinei e tulaʻi mai ai le fesili - e mafai ona maua le faʻaogaina o le Database e avea o se Auʻaunaga, ae o se faʻamatalaga faigofie matala?

O le tala leaga e faapea, o le mea e leaga ai, e leai ni fofo faapena i luga o le maketi. O le tala fiafia o loʻo i ai Kubernetes, lea e mafai ai ona e faʻatinoina ia fofo.

Kubernetes ose faiga fa'aoga mo le ao po'o le nofoaga autu o fa'amatalaga e mafai ai e oe ona fa'apipi'i ma fa'atautaia se talosaga i luga o le tele o 'au'aunaga i totonu o se fuifui nai lo le 'au e tasi.

O le taimi nei o Kubernetes o le taʻitaʻi i le vaega o ia polokalama. E tele fofo eseese mo ia faafitauli, ae na avea ma tulaga masani. O le tele o kamupani sa masani ona taulaʻi i isi fofo o loʻo taulaʻi nei i le fetuunaʻi oa latou oloa e lagolago ai Kubernetes.

E le gata i lea, o Kubernetes o se fofo lautele lea e lagolagoina i ao tumaoti, lautele ma hybrid ao o le tele o tagata faʻatau, mo se faʻataʻitaʻiga: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.

Fa'afefea ona galue Kubernetes ma fa'amaumauga

O Kubernetes na muai fuafuaina mo talosaga e leai ni setete e fa'agasolo ai fa'amaumauga ae le teuina se mea, e pei o microservices po'o talosaga i luga ole laiga. O fa'amaumauga o lo'o i le isi pito o le fusi o alaleo, o lona uiga, o lo'o fa'atatau i talosaga. Ma e le'i fuafuaina muamua Kubernetes mo ia talosaga.

Ae ui i lea, o loʻo i ai foliga na faʻaalia i Kubernetes talu ai nei e faʻatagaina ai le faʻaogaina o faʻamaumauga ma isi faʻamatalaga faʻamatalaga:

  1. O le StatefulSet concept o se fa'asologa atoa o mea muamua mo le fa'agaioiina o mea tutupu e uiga i le taofia o le galuega a pods ma le fa'atinoina o le Graceful Shutdown (fa'ato'a fa'atonuina o le talosaga).
  2. Fa'aauau Volumes o fa'amaumauga ia e feso'ota'i ma pods, mea fa'atonu Kubernetes.
  3. Ta'iala Fa'atonu - o lona uiga, o le mafaia ona fai vaega mo le fa'afoeina o fa'amaumauga ma isi fa'amatalaga fa'atulafonoina o lo'o tufatufa atu i le tele o pona.

Ua i ai nei i ao lautele o loʻo i ai faʻamaumauga tetele o se Auaunaga, o lona pito i tua o Kubernetes, mo se faʻataʻitaʻiga: CockroachCloud, InfluxDB, PlanetScale. O lona uiga, o se faʻamaumauga i luga o Kubernetes e le gata o se mea e mafai ona fai, ae o se mea foi e galue i le faʻatinoga.

O Percona e lua fa'amatalaga avanoa mo Kubernetes:

  1. Kubernetes Operator mo Percona Server mo MongoDB.
  2. Kubernetes Operator mo XtraDB CLUSTER o se auaunaga e fetaui ma MySQL ma maua ai le avanoa maualuga ma le tumau. E mafai foi ona e fa'aogaina se node e tasi pe a le mana'omia le avanoa maualuga, mo se fa'ata'ita'iga mo se fa'amaumauga dev.

E mafai ona vaevaeina tagata fa'aoga Kubernetes i ni vaega se lua. O nisi tagata latou te fa'aoga sa'o le Kubernetes Operators - o nei tagata e masani lava o lo'o fa'aogaina le fa'aogaina o lo'o i ai se malamalamaga lelei i le fa'aogaina o tekinolosi. O isi e taʻavale i le pito i tua - o tagata faʻaoga e fiafia i se mea e pei o le Database as a Service, latou te le manaʻo e suʻesuʻe i nuances o Kubernetes. Mo le vaega lona lua o tagata faʻaoga, o loʻo i ai se isi fofo faʻamatalaga tatala - Percona DBaaS CLI Tool. Ole fofo faʻataʻitaʻi lea mo i latou e manaʻo e maua se faʻamatalaga tatala DBaaS faʻavae i luga ole Kubernetes e aunoa ma se malamalamaga loloto i tekinolosi.

E faʻafefea ona faʻatautaia le DBaaS a Percona ile Google Kubernetes Engine

Google Kubernetes Engine, i loʻu manatu, o se tasi o faʻatinoga sili ona aoga o tekinolosi Kubernetes. E maua i le tele o itulagi o le lalolagi ma o loʻo i ai se Meafaigaluega Laina Poloaiga faigofie ma faigofie (SDK), lea e mafai ai ona e faia ni tusitusiga nai lo le puleaina ma le lima o le tulaga.

Ina ia mafai ona galue a matou DBaaS, matou te manaʻomia vaega nei:

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

Faʻapipiʻi kubectl

Matou te faʻapipiʻi le afifi mo lau faiga faʻaogaina, matou te vaʻavaʻai i le faʻataʻitaʻiga a Ubuntu. Fa'amatalaga atili iinei.

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

Fa'apipi'i le Google Cloud SDK

Matou te faʻapipiʻiina le pusa polokalama i le auala lava e tasi. Fa'amatalaga atili iinei.

# 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

Faʻapipiʻi Percona DBaaS CLI

Faʻapipiʻi mai le faleoloa Percona. O le Percona DBaaS CLI Tool o se oloa faʻataʻitaʻi, o lea o loʻo iai i totonu o le fale faʻataʻitaʻiga, lea e tatau ona faʻatagaina ese, e tusa lava pe ua uma ona faʻapipiʻi lau faleoloa Percona.

nisi iinei.

Faʻapipiʻi algorithm:

  1. Seti faleteuoloa Percona e faʻaaoga ai le meafaigaluega faʻasao-percona. Muamua e te manaʻomia e sii mai ma faʻapipiʻi le pusa faʻasalalau aloaia mai Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Fa'aaga le vaega fa'ata'ita'i mea faigaluega fa'aputu e fa'apea:
    sudo percona-release enable tools experimental
    
  3. Faʻapipiʻi le paketi percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Faʻatulagaina le faʻaogaina o vaega

E uiga i fa'atulagaga iinei.

Muamua e tatau ona e ulufale i lau Google account. E le gata i lea, Google Cloud e faʻatagaina se tasi tagata faʻaoga e tele ni galuega tutoʻatasi, o lea e tatau ai ona e faʻamaonia se galuega galue e faʻaaoga ai le code mo lenei poloketi:

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

Le isi, matou te faia se fuifui. Mo le demo, na ou faia se fuifui Kubernetes e na o le tolu nodes - o le laʻititi lea e manaʻomia mo avanoa maualuga:

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

O le tulafono kubectl lea e tuʻuina atu ai avanoa manaʻomia i le matou tagata faʻaoga nei:

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

Ona matou faia lea o se igoa avanoa ma fa'agaoioia. Igoa igoa, pe a tautala, e pei foi o se poloketi poʻo se siosiomaga, ae o loʻo i totonu o le Kubernetes cluster. E tutoatasi mai Google Cloud galuega faatino:

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

Amataina le fuifui

A maeʻa ona tatou uia nei laasaga, e mafai ona tatou amataina se fuifui tolu-node i lenei poloaiga faigofie:

# 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

Fa'afefea ona fa'afeso'ota'i i se fuifui

E le mafai, e na'o totonu lava o Kubernetes e maua. O lona uiga, e le mafai ona maua mai lenei 'auʻaunaga lea na e faʻatautaia ai le poloaiga "Fausia". Ina ia avanoa, mo se faʻataʻitaʻiga, mo suʻega ma se tagata o tausia, e tatau ona e tuʻuina atu le taulaga e ala i le Port Mapping:

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

Ona matou faʻafesoʻotaʻi lea o lau client MySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Fa'atonuga pulega fa'aopoopo

Fa'amaumauga ile IP lautele

Afai e te manaʻo i se fofo tumau mo le avanoa faʻapipiʻi, e mafai ona e mauaina se tuatusi IP fafo. I lenei tulaga, o le database o le a mafai ona maua mai soʻo se mea. O lenei mea e itiiti le saogalemu, ae masani ona sili atu ona faigofie. Mo IP fafo matou te faʻaaogaina le poloaiga lenei:

# 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

Seti manino le upu faataga

Nai lo o le faiga fa'atupu fa'afuase'i se fa'aupuga, e mafai ona e setiina le fa'aupuga manino:

# 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

O loʻo ou faʻaalia le gaioiga o tusitusiga i le faʻaogaina o tagata, ae o loʻo lagolagoina foi le JSON format.

Tape le avanoa maualuga

Faatasi ai ma le poloaiga lenei e mafai ona e faʻamalo le avanoa maualuga e faʻapipiʻi ai se node se tasi:

# 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

Ole vaifofo lea mo su'ega galuega e fa'agaoioi ai MySQL i le vave ma le faigofie, fa'ata'ita'i, ona tapuni lea pe fa'aoga mo le atina'e.

O le meafaigaluega a le Percona DBaaS CLI e fesoasoani ia te oe e ausia se fofo DBaaS-pei o Kubernetes. I le taimi lava e tasi, matou te faʻaauau pea ona galulue i luga o lona faʻaogaina ma le faʻaaogaina.

O lenei lipoti na muamua tuuina atu i @Fa'amaumauga Fa'amaumauga e Mail.ru Cloud Solutions&Tarantool. Vaai видео isi faʻaaliga ma faʻasoa i faʻasalalauga faʻasalalauga i luga ole Telegram Si'osi'o Kubernetes ile Mail.ru Group.

O le a se isi mea e faitau i le autu:

  1. Fa'amaumauga i se tulaga fa'aonaponei IIoT.
  2. E fa'afefea ona filifili se fa'amaumauga mo se poloketi ina ia e le toe tau toe filifili.

puna: www.habr.com

Faaopoopo i ai se faamatalaga