Mokhoa oa ho haha ​​​​leru la lebasetere o sebelisa Kubernetes e ka nkang sebaka sa DBaaS

Lebitso la ka ke Petr Zaitsev, ke 'na CEO, mothehi percona mme ke batla ho o bolella:

  • hore na re tsoa joang ho tharollo ea mohloli o bulehileng ho Database joalo ka Tšebeletso;
  • ke mekhoa efe e teng ea ho kenya marang-rang marung;
  • kamoo Kubernetes e ka nkang sebaka sa DBaaS, ho felisa ho itšetleha ka barekisi le ho boloka bonolo ba DBMS e le tšebeletso.

Sengoloa se lokiselitsoe ho latela tlaleho ho @Databases Meetup ka Mail.ru Cloud Solutions & Tarantool. Haeba u sa batle ho bala, u ka shebella:


Re tsoa joang mohloling o bulehileng ho ea ho Database joalo ka Tšebeletso marung

Ke ntse ke sebetsa sebakeng se bulehileng ho tloha bofelong ba lilemo tsa bo-90. Lilemong tse mashome a mabeli tse fetileng, ho sebelisa mohloli o bulehileng, joalo ka marang-rang, ho ne ho se bonolo. Ho ne ho hlokahala ho khoasolla khoutu ea mohloli, ho e patisa, ho e bokella ebe u e sebelisa feela.

Open source e ile ea feta letotong la ho nolofatsa:

  • Tar.gz le INSTALL mehloli e neng e hloka ho hlophisoa;
  • liphutheloana tse nang le litšepe tse kang .deb le .rpm, moo u hlokang feela ho kenya sehlopha sa liphutheloana;
  • libaka tsa polokelo ea liphutheloana tse kang APT le YUM, tseo ho kenngoa ha tsona ho iketselitseng;
  • Litharollo tse kang Docker le Snap, tse u lumellang hore u fumane liphutheloana ka ho kenya ntle le ho itšetleha ka ntle.

Ka lebaka leo, ho ba bonolo ho sebelisa software ea mohloli o bulehileng hape ho theola tšitiso ea ho kena ho nts'etsapele lits'ebetso tse joalo.

Ka nako e ts'oanang, ho fapana le boemo ba lilemo tse 20 tse fetileng, ha motho e mong le e mong e ne e le setsebi sa kopano, hona joale bahlahisi ba bangata ba sitoa ho haha ​​lisebelisoa tseo ba li sebelisang ho tloha mohloling.

Ha e le hantle, sena ha se mpe, hobane:

  1. Re ka sebelisa software e rarahaneng haholoanyane empa e bonolo ho basebelisi. Mohlala, sebatli se bonolo ho se sebelisa, empa se kenyelletsa likarolo tse ngata tsa mohloli o bulehileng mme ha ho bonolo ho se haha ​​ho tloha qalong.
  2. Batho ba bangata ba ka fetoha baetsi ba mohloli o bulehileng le lisebelisoa tse ling, software e ngata e sebelisoa ke likhoebo, 'me tlhokahalo ea eona e kholoanyane.

Taba e nyahamisang ke hore mohato o latelang oa ho nolofatsa o amahanngoa le tšebeliso ea tharollo ea leru, 'me sena se lebisa tlhokomelong ea barekisi ba itseng, ke hore, ho tlama ho mofani a le mong. Re sebelisa litharollo tse bonolo 'me bafani ba sebelisa likarolo tse bulehileng tsa mohloli, empa ha e le hantle li khokhothetsoe ho le leng la maru a maholo. Ke hore, mokhoa o bonolo le o potlakileng oa ho tsamaisa mohloli o bulehileng (le software e lumellanang le ona) o marung, o sebelisa API ea mong'a ntlo.

Ha ho tluoa ho li-database tsa leru, ho na le mekhoa e 'meli:

  1. Bokella lits'ebetso tsa database, joalo ka setsing sa kamehla sa data. Ke hore, nka li-blocks tse tloaelehileng tsa moaho: khomphutha, polokelo, joalo-joalo, kenya Linux le database ho tsona, 'me u li hlophise.
  2. Sebelisa Database e le Tšebeletso, moo mofani a fanang ka boitsebiso bo lokiselitsoeng ka hare ho leru.

DBaaS ke mmaraka o ntseng o hola ka potlako hona joale hobane o lumella batho ba ntlafatsang ho sebetsa ka kotloloho le li-database le ho fokotsa mosebetsi o tloaelehileng. Mofani o itlama ho etsa bonnete ba ho ba teng ho Holimo le ho lekanya habonolo, ho patch ea database, li-backups le tokiso ea ts'ebetso.

Mefuta e 'meli ea Database e le Tšebeletso e thehiloeng mohloling o bulehileng le mokhoa o mong ka mokhoa oa Kubernetes

Ho na le mefuta e 'meli ea Database joalo ka Ts'ebeletso bakeng sa li-database tse bulehileng:

  1. Sehlahisoa se tloaelehileng sa mohloli o bulehileng o kentsoeng ka morao ho tsamaiso bakeng sa ho tsamaisoa le ho tsamaisoa habonolo.
  2. Tharollo e tsoetseng pele ea khoebo e nang le litlatsetso tse fapaneng, e tsamaellanang le mohloli o bulehileng.

Likhetho tsena ka bobeli li fokotsa monyetla oa ho falla lipakeng tsa maru le ho fokotsa ho nkeha ha data le lits'ebetso. Mohlala, leha ho na le taba ea hore mefuta e fapaneng ea maru e ts'ehetsa MySQL e tšoanang, ho na le phapang e kholo lipakeng tsa eona: ts'ebetsong, ts'ebetso, bekapo, joalo-joalo. Ho falla ho tloha lerung le leng ho ea ho le leng ho ka ba phephetso, haholo-holo bakeng sa lisebelisoa tse rarahaneng.

'Me mona ho hlaha potso - na hoa khoneha ho fumana boiketlo ba Database e le Tšebeletso, empa e le tharollo e bonolo ea mohloli o bulehileng?

Litaba tse mpe ke hore, ka bomalimabe, ha ho na tharollo e joalo 'marakeng hajoale. Litaba tse monate ke hore ho na le Kubernetes, e leng se u lumellang hore u sebelise tharollo e joalo.

Kubernetes ke sistimi e sebetsang bakeng sa leru kapa setsi sa data se o lumellang ho tsamaisa le ho laola ts'ebeliso ho li-server tse ngata ka sehlopha ho fapana le moamoheli a le mong.

Hona joale Kubernetes ke moetapele sehlopheng sa software e joalo. Ho ne ho e-na le litharollo tse ngata tse fapaneng bakeng sa mathata a joalo, empa e ile ea e-ba tekanyetso. Likhamphani tse ngata tse neng li tloaetse ho tsepamisa maikutlo ho litharollo tse ling li se li shebane le ho fetola lihlahisoa tsa tsona ho tšehetsa Kubernetes.

Ho feta moo, Kubernetes ke tharollo ea bokahohle e tšehetsoeng ke maru a poraefete, a sechaba le a lebasetere a barekisi ba bangata, mohlala: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.

Kamoo Kubernetes e sebetsang le li-database

Kubernetes qalong e ne e etselitsoe lits'ebetso tse se nang palo tse sebetsanang le data empa e sa boloke letho, joalo ka li-microservices kapa lits'ebetso tsa webo. Li-database li ka lehlakoreng le leng la sebono, ke hore, ke lits'ebetso tse hlakileng. Mme Kubernetes e ne e sa rereloa likopo tse joalo qalong.

Leha ho le joalo, ho na le likarolo tse hlahileng ho Kubernetes haufinyane tse lumellang ts'ebeliso ea database le lits'ebetso tse ling tse hlakileng:

  1. Mohopolo oa StatefulSet ke letoto le felletseng la lintho tsa khale tsa ho sebetsana le liketsahalo tse mabapi le ho emisa mosebetsi oa li-pods le ho kenya ts'ebetsong ea Graceful Shutdown (ho koaloa ha ts'ebeliso ho lebeletsoe).
  2. Li-Persistent Volumes ke mabenkele a data a amanang le li-pods, lintho tsa tsamaiso ea Kubernetes.
  3. Operator Framework - ke hore, bokhoni ba ho theha likarolo bakeng sa ho laola datha le lits'ebetso tse ling tse phatlalalitsoeng libakeng tse ngata.

E se e ntse e le marung a sechaba ho na le Databases e kholo e le Tšebeletso, e ka morao ea eona ke Kubernetes, mohlala: CockroachCloud, InfluxDB, PlanetScale. Ke hore, database ea Kubernetes hase feela ntho e ka khonehang, empa hape ke ntho e sebetsang ka mokhoa o sebetsang.

Percona e na le litharollo tse peli tsa mohloli o bulehileng oa Kubernetes:

  1. Kubernetes Operator bakeng sa Percona Server bakeng sa MongoDB.
  2. Kubernetes Operator bakeng sa XtraDB CLUSTER ke ts'ebeletso e tsamaellanang le MySQL mme e fana ka phumaneho e phahameng le botsitso. U ka boela ua sebelisa node e le 'ngoe haeba boteng bo phahameng bo sa hlokahale, mohlala bakeng sa database ea dev.

Basebelisi ba Kubernetes ba ka aroloa ka lihlopha tse peli. Batho ba bang ba sebelisa Kubernetes Operators ka kotloloho - bana ke basebelisi ba tsoetseng pele ba nang le kutloisiso e ntle ea hore na theknoloji e sebetsa joang. Ba bang ba e tsamaisa ka morao - basebelisi ba joalo ba thahasella ho hong ho kang Database joalo ka Ts'ebeletso, ha ba batle ho kenella ka har'a li-nuances tsa Kubernetes. Bakeng sa sehlopha sa bobeli sa basebelisi, re na le tharollo e 'ngoe e bulehileng ea mohloli - Percona DBaaS CLI Tool. Ena ke tharollo ea liteko bakeng sa ba batlang ho fumana mohloli o bulehileng oa DBaaS o thehiloeng ho Kubernetes ntle le kutloisiso e tebileng ea theknoloji.

Mokhoa oa ho tsamaisa Percona's DBaaS ho Google Kubernetes Engine

Google Kubernetes Engine, ka maikutlo a ka, ke e 'ngoe ea lisebelisoa tse sebetsang ka ho fetisisa tsa theknoloji ea Kubernetes. E fumaneha libakeng tse ngata tsa lefats'e 'me e na le Sesebelisoa sa Line Line se bonolo le se bonolo (SDK), se u lumellang hore u iketsetse mangolo ho e-na le ho laola sethala ka letsoho.

E le hore DBaaS ea rona e sebetse, re hloka likarolo tse latelang:

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

Kenya kubectl

Re kenya sephutheloana bakeng sa sistimi ea hau ea ts'ebetso, re tla sheba mohlala oa Ubuntu. Lintlha tse ling mona.

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

E kenya Google Cloud SDK

Re kenya sephutheloana sa software ka tsela e ts'oanang. Lintlha tse ling mona.

# 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

Ho kenya Percona DBaaS CLI

Kenya ho tsoa polokelong ea Percona. Percona DBaaS CLI Tool e ntse e le sehlahisoa sa liteko, ka hona se sebakeng sa polokelo ea liteko, se tlamehang ho lumelloa ka thoko, leha u se u ntse u e-na le li-repositories tsa Percona.

More mona.

Algorithm ea ho kenya:

  1. Beha lipolokelo tsa Percona u sebelisa sesebelisoa sa tokollo ea percona. Pele o hloka ho jarolla le ho kenya sephutheloana sa semmuso sa percona ho tsoa Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Lumella karolo ea polokelo ea lisebelisoa tsa liteko ka tsela e latelang:
    sudo percona-release enable tools experimental
    
  3. Kenya sephutheloana sa percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Ho theha ts'ebetso ea likarolo

Tse ling ka litlhophiso mona.

Pele u lokela ho kena akhaonteng ya hao ya Google. Ho feta moo, Google Cloud e lumella mosebelisi a le mong ho ba le merero e mengata e ikemetseng, kahoo o hloka ho hlakisa morero o sebetsang o sebelisa khoutu ea morero ona:

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

Ka mor'a moo, re theha sehlopha. Bakeng sa demo, ke thehile sehlopha sa Kubernetes sa li-node tse tharo feela - bona ke bonyane bo hlokahalang bakeng sa phumaneho e phahameng:

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

Taelo e latelang ea kubectl e fana ka litokelo tse lakatsehang ho mosebelisi oa rona oa hajoale:

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

Ebe re theha sebaka sa mabitso ebe re se etsa hore se sebetse. Sebaka sa mabitso se batla se tšoana le morero kapa tikoloho, empa se se se ntse se le ka har'a sehlopha sa Kubernetes. E ikemetse ho merero ea Google Cloud:

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

Ho qala sehlopha

Ha re se re fetile mehatong ena e seng mekae, re ka qala sehlopha sa li-node tse tharo ka taelo ena e bonolo:

# 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

Mokhoa oa ho hokela sehlopheng

Ka kamehla, e fumaneha feela ka hare ho Kubernetes. Ke hore, ha e fumanehe ho tsoa ho seva sena seo u neng u tsamaisa taelo ea "Create" ho sona. Ho etsa hore e fumanehe, mohlala, bakeng sa liteko le moreki, o hloka ho fetisetsa boema-kepe ka Port Mapping:

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

Ebe re hokela moreki oa hau oa MySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Litaelo tse tsoetseng pele tsa tsamaiso ea lihlopha

Database ho IP ea sechaba

Haeba u batla tharollo e sa feleng bakeng sa ho fumaneha ha lihlopha, u ka fumana aterese ea IP e kantle. Tabeng ena, database e tla fumaneha kae kapa kae. Sena ha se sireletsehe hakaalo, empa hangata se bonolo haholoanyane. Bakeng sa IP ea kantle re sebelisa taelo e latelang:

# 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

Beha phasewete ka ho hlaka

Sebakeng sa hore sistimi e hlahise phasewete ka tšohanyetso, o ka beha phasewete ka mokhoa o hlakileng:

# 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

Ke bonts'a tlhahiso ea lingoloa ka sebopeho se ka baloang ke motho, empa sebopeho sa JSON le sona sea tšehetsoa.

Ho tima phumaneho e phahameng

Ka taelo e latelang o ka thibela ho fumaneha ho phahameng ho tsamaisa node e le 'ngoe:

# 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

Ena ke tharollo ea ho etsa liteko ho etsa hore MySQL e sebetse kapele le ha bonolo kamoo ho ka khonehang, e leke, ebe o e koala kapa o e sebelisetse nts'etsopele.

Sesebelisoa sa Percona DBaaS CLI se u thusa ho fumana tharollo e kang ea DBaaS ho Kubernetes. Ka nako e ts'oanang, re ntse re tsoela pele ho sebetsa ts'ebetsong ea eona le ts'ebeliso ea eona.

Tlaleho ena e ile ea hlahisoa ka lekhetlo la pele ho @Databases Meetup ka Mail.ru Cloud Solutions&Tarantool. Sheba видео litšoantšiso tse ling 'me u ingolisetse liphatlalatso tsa ketsahalo ho Telegraph Ho pota Kubernetes ho Mail.ru Group.

Ke eng hape eo u ka e balang sehloohong:

  1. Databases sethaleng sa kajeno sa IIoT.
  2. Mokhoa oa ho khetha database bakeng sa morero e le hore u se ke ua tlameha ho khetha hape.

Source: www.habr.com

Eketsa ka tlhaloso