Mar a thogas tu sgòth tar-chinealach a’ cleachdadh Kubernetes a ghabhas àite DBaaS

Is e m ’ainm Petr Zaitsev, is mise an Ceannard, stèidheadair percona agus tha mi airson innse dhut:

  • mar a thàinig sinn bho fhuasglaidhean stòr fosgailte gu Stòr-dàta mar Sheirbheis;
  • dè na dòighean a th’ ann airson stòran-dàta a chleachdadh san sgòth;
  • mar as urrainn dha Kubernetes DBaaS a chuir an àite, a’ cur às do eisimeileachd reiceadair agus a’ cumail suas sìmplidheachd DBMS mar sheirbheis.

Chaidh an artaigil ullachadh stèidhichte air aithisg aig @Databases Meetup le Mail.ru Cloud Solutions & Tarantool. Mura h-eil thu airson leughadh, faodaidh tu coimhead air:


Mar a thàinig sinn bho stòr fosgailte gu Stòr-dàta mar Sheirbheis san sgòth

Tha mi air a bhith ag obair ann an còd fosgailte bho dheireadh nan 90an. O chionn fichead bliadhna, cha robh e cho furasta cleachdadh stòr fosgailte, leithid stòran-dàta. Bha e riatanach an còd tùsail a luchdachadh sìos, a phasgadh, a chuir ri chèile agus dìreach an uairsin a chleachdadh.

Chaidh stòr fosgailte an uairsin tro shreath de shìmpleachadh:

  • Tar.gz agus INSTALL stòran a dh'fheumadh a bhith air a chur ri chèile;
  • pasganan le eisimeileachd mar .deb agus .rpm, far nach fheum thu ach seata de phasgan a stàladh;
  • stòran pacaid mar APT agus YUM, leis a bheil an stàladh fèin-ghluasadach;
  • fuasglaidhean leithid Docker agus Snap, a leigeas leat pacaidean fhaighinn le bhith gan stàladh às aonais eisimeileachd bhon taobh a-muigh.

Mar thoradh air an sin, bidh e nas fhasa bathar-bog stòr fosgailte a chleachdadh agus bidh e cuideachd a’ lughdachadh a ’chnap-starra airson faighinn a-steach do leasachadh thagraidhean mar sin.

Aig an aon àm, eu-coltach ris an t-suidheachadh 20 bliadhna air ais, nuair a bha a h-uile duine na eòlaiche cruinneachaidh, a-nis chan urrainn don mhòr-chuid de luchd-leasachaidh na h-innealan a bhios iad a ’cleachdadh a thogail bhon stòr.

Gu dearbh, chan eil seo dona, oir:

  1. Faodaidh sinn bathar-bog nas iom-fhillte ach nas fhasa a chleachdadh. Mar eisimpleir, tha brobhsair furasta a chleachdadh, ach tha mòran phàirtean stòr fosgailte ann agus tha e mì-ghoireasach a thogail bhon toiseach.
  2. Faodaidh barrachd dhaoine a bhith nan luchd-leasachaidh air bathar-bog stòr fosgailte agus bathar-bog eile, bidh barrachd bathar-bog ga chleachdadh le gnìomhachasan, agus tha barrachd feum air.

Is e an ana-cothrom gu bheil an ath cheum ann an sìmpleachadh co-cheangailte ri cleachdadh fhuasglaidhean sgòthan, agus tha seo a’ leantainn gu glasadh a-steach reiceadair sònraichte, is e sin, ceangailte ri aon sholaraiche. Bidh sinn a’ cleachdadh fhuasglaidhean sìmplidh agus bidh solaraichean a’ cleachdadh co-phàirtean stòr fosgailte, ach gu dearbh tha iad ceangailte ri aon de na sgòthan mòra. Is e sin, tha an dòigh as fhasa agus as luaithe air stòr fosgailte (agus bathar-bog a tha co-chosmhail ris) a chleachdadh anns na sgòthan, a’ cleachdadh API seilbh.

Nuair a thig e gu stòran-dàta san sgòth, tha dà dhòigh-obrach ann:

  1. Cruinnich bun-structar an stòr-dàta, mar ann an ionad dàta cunbhalach. Is e sin, gabh blocaichean togail àbhaisteach: obrachadh a-mach, stòradh, agus mar sin air adhart, stàlaich Linux agus stòr-dàta orra, agus cuir air dòigh iad.
  2. Cleachd Stòr-dàta mar Sheirbheis, far am bi an solaraiche a’ tabhann stòr-dàta deiseil taobh a-staigh an sgòth.

Tha DBaaS na mhargaidh a tha a’ fàs gu luath an-dràsta leis gu bheil e a’ leigeil le luchd-leasachaidh obrachadh gu dìreach le stòran-dàta agus a’ lughdachadh obair àbhaisteach. Tha an solaraiche a’ gabhail os làimh dèanamh cinnteach à ruigsinneachd àrd agus sgèileadh furasta, gleusadh stòr-dàta, cùl-taic agus gleusadh coileanaidh.

Dà sheòrsa Stòr-dàta mar Sheirbheis stèidhichte air stòr fosgailte agus roghainn eile ann an cruth Kubernetes

Tha dà sheòrsa Stòr-dàta ann mar Sheirbheis airson stòran-dàta fosgailte:

  1. Toradh stòr fosgailte àbhaisteach air a phacaigeadh ann an cùl-taic rianachd airson a chleachdadh agus a riaghladh gu furasta.
  2. Fuasgladh malairteach adhartach le diofar thuilleadan, co-chosmhail ri stòr fosgailte.

Bidh an dà roghainn a’ lughdachadh comas imrich eadar sgòthan agus a’ lughdachadh comas giùlain dàta agus thagraidhean. Mar eisimpleir, a dh'aindeoin 's gu bheil diofar sheòrsaichean de sgòthan a' toirt taic dha-rìribh an aon ìre MySQL, tha eadar-dhealachaidhean mòra eadar iad: ann an obrachadh, coileanadh, cùl-taic, agus mar sin air adhart. Faodaidh imrich bho aon sgòth gu sgòth a bhith dùbhlanach, gu sònraichte airson tagraidhean iom-fhillte.

Agus an seo tha a’ cheist ag èirigh - a bheil e comasach goireasachd Stòr-dàta fhaighinn mar Sheirbheis, ach mar fhuasgladh sìmplidh le còd fosgailte?

Is e an droch naidheachd, gu mì-fhortanach, nach eil fuasglaidhean mar sin air a’ mhargaidh fhathast. Is e an deagh naidheachd gu bheil Kubernetes ann, a leigeas leat fuasglaidhean mar sin a chuir an gnìomh.

Tha Kubernetes na shiostam obrachaidh airson an sgòth no ionad dàta a leigeas leat tagradh a chuir a-steach agus a riaghladh thairis air grunn luchd-frithealaidh ann am brabhsair seach air aon aoigh.

A-nis tha Kubernetes na stiùiriche anns an roinn de bhathar-bog mar sin. Bha mòran fhuasglaidhean eadar-dhealaichte ann airson duilgheadasan mar sin, ach thàinig e gu bhith na inbhe. Tha mòran chompanaidhean a b’ àbhaist a bhith ag amas air fuasglaidhean eile a-nis ag amas air na toraidhean aca atharrachadh gus taic a thoirt do Kubernetes.

A bharrachd air an sin, tha Kubernetes na fhuasgladh uile-choitcheann a tha a’ faighinn taic ann an sgòthan prìobhaideach, poblach agus tar-chinealach de mhòran luchd-reic, mar eisimpleir: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.

Mar a tha Kubernetes ag obair le stòran-dàta

Chaidh Kubernetes a dhealbhadh an toiseach airson tagraidhean gun stàite a bhios a ’giullachd dàta ach nach bi a’ stòradh dad, leithid microservices no tagraidhean lìn. Tha stòran-dàta aig ceann eile an speactram, is e sin, tha iad nan tagraidhean stàiteil. Agus cha robh Kubernetes an dùil bho thùs airson a leithid de thagraidhean.

Ach, tha feartan ann a tha air nochdadh ann an Kubernetes o chionn ghoirid a leigeas le bhith a’ cleachdadh stòran-dàta agus tagraidhean stàiteil eile:

  1. Tha bun-bheachd StatefulSet na shreath iomlan de phrìomhachasan airson a bhith a’ giullachd thachartasan mu bhith a’ cur stad air obair pods agus a’ cur an gnìomh Graceful Shutdown (dùnadh a-mach an iarrtais).
  2. Is e stòran dàta a th’ ann an Leabhar Seasmhach a tha co-cheangailte ri pods, stuthan riaghlaidh Kubernetes.
  3. Frèam Gnìomhaiche - is e sin, an comas co-phàirtean a chruthachadh airson a bhith a’ stiùireadh stòran-dàta agus tagraidhean stàiteil eile air an sgaoileadh thairis air iomadh nod.

A-nis ann an sgòthan poblach tha stòran-dàta mòra mar Sheirbheis, agus tha Kubernetes aig an deireadh, mar eisimpleir: CockroachCloud, InfluxDB, PlanetScale. Is e sin, tha stòr-dàta air Kubernetes chan e a-mhàin rudeigin a tha comasach gu teòiridheach, ach cuideachd rudeigin a tha ag obair ann an cleachdadh.

Tha dà fhuasgladh stòr fosgailte aig Percona airson Kubernetes:

  1. Gnìomhaiche Kubernetes airson Percona Server airson MongoDB.
  2. Tha Kubernetes Operator airson XtraDB CLUSTER na sheirbheis a tha co-chosmhail ri MySQL agus a bheir seachad ruigsinneachd àrd agus cunbhalachd. Faodaidh tu cuideachd aon nód a chleachdadh mura h-eil feum air ruigsinneachd àrd, mar eisimpleir airson stòr-dàta dev.

Faodar luchd-cleachdaidh Kubernetes a roinn ann an dà bhuidheann. Bidh cuid de dhaoine a’ cleachdadh Kubernetes Operators gu dìreach - tha iad sin gu ìre mhòr nan luchd-cleachdaidh adhartach aig a bheil tuigse mhath air mar a tha an teicneòlas ag obair. Bidh cuid eile ga ruith air an deireadh-sheachdain - tha ùidh aig luchd-cleachdaidh mar sin ann an rudeigin mar Stòr-dàta mar Sheirbheis, chan eil iad airson a dhol a-steach do nuances Kubernetes. Airson an dàrna buidheann de luchd-cleachdaidh, tha fuasgladh stòr fosgailte eile againn - Inneal CLI Percona DBaaS. Is e fuasgladh deuchainneach a tha seo dhaibhsan a tha airson stòr fosgailte DBaaS fhaighinn stèidhichte air Kubernetes gun tuigse dhomhainn air an teicneòlas.

Mar a ruitheas tu DBaaS Percona air Google Kubernetes Engine

Is e Google Kubernetes Engine, nam bheachd-sa, aon de na buileachadh as gnìomhaiche de theicneòlas Kubernetes. Tha e ri fhaighinn ann an iomadh roinn den t-saoghal agus tha Inneal Loidhne-àithne sìmplidh agus goireasach (SDK), a leigeas leat sgriobtaichean a chruthachadh seach a bhith a’ riaghladh an àrd-ùrlar le làimh.

Gus am bi ar DBaaS ag obair, feumaidh sinn na pàirtean a leanas:

  1. Ciùbtl.
  2. Google Cloud SDK.
  3. Percona DBaaS CLI.

Stàlaich kubectl

Bidh sinn a’ stàladh a’ phacaid airson an t-siostam-obrachaidh agad, bheir sinn sùil air eisimpleir Ubuntu. Tuilleadh mion-fhiosrachaidh an seo.

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

Stàladh Google Cloud SDK

Bidh sinn a’ stàladh a’ phacaid bathar-bog san aon dòigh. Tuilleadh mion-fhiosrachaidh an seo.

# 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

Stàladh Percona DBaaS CLI

Stàlaich bho stòran Percona. Tha Inneal CLI Percona DBaaS fhathast na thoradh deuchainneach, agus mar sin tha e suidhichte anns an ionad deuchainneach, a dh'fheumas a bhith air a chomasachadh air leth, eadhon ged a tha stòran Percona agad mu thràth.

Tuilleadh an seo.

Algairim stàlaidh:

  1. Stèidhich stòran Percona a’ cleachdadh an inneal percona-release. An toiseach feumaidh tu am pasgan oifigeil percona-release a luchdachadh sìos agus a stàladh bho Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Dèan comas air a’ phàirt glèidhidh inneal deuchainneach mar a leanas:
    sudo percona-release enable tools experimental
    
  3. Stàlaich pasgan percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

A 'suidheachadh obrachadh nan co-phàirtean

Tuilleadh mu shuidheachaidhean an seo.

An toiseach feumaidh tu logadh a-steach don chunntas Google agad. A bharrachd air an sin, leigidh Google Cloud le aon neach-cleachdaidh mòran phròiseactan neo-eisimeileach a bhith aca, mar sin feumaidh tu pròiseact obrach a shònrachadh a’ cleachdadh còd a’ phròiseict seo:

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

An ath rud, bidh sinn a 'cruthachadh cruinneachadh. Airson an demo, chruthaich mi cruinneachadh Kubernetes de dìreach trì nodan - is e seo an ìre as ìsle a tha riatanach airson ruigsinneachd àrd:

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

Bheir an àithne kubectl a leanas na sochairean a tha sinn ag iarraidh don neach-cleachdaidh gnàthach againn:

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

An uairsin bidh sinn a’ cruthachadh àite-ainm agus ga dhèanamh gnìomhach. Tha Namespace, gu ìre mhòr, cuideachd coltach ri pròiseact no àrainneachd, ach mu thràth taobh a-staigh cruinneachadh Kubernetes. Tha e neo-eisimeileach bho phròiseactan Google Cloud:

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

A 'tòiseachadh air a' bhuidheann

Aon uair ‘s gu bheil sinn air a dhol tro na beagan cheumannan seo, is urrainn dhuinn cruinneachadh trì-nód a thòiseachadh leis an àithne shìmplidh seo:

# 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

Mar a nì thu ceangal ri brabhsair

Gu gnàthach, chan eil e ri fhaighinn ach taobh a-staigh Kubernetes. Is e sin, chan eil e ruigsinneach bhon t-seirbheisiche seo bhon do ruith thu an àithne “Cruthaich”. Gus am bi e ri fhaighinn, mar eisimpleir, airson deuchainnean le teachdaiche, feumaidh tu am port a chuir air adhart tro Port Mapping:

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

An uairsin bidh sinn a’ ceangal do neach-dèiligidh MySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Òrdughan riaghlaidh brabhsair adhartach

Stòr-dàta air IP poblach

Ma tha thu ag iarraidh fuasgladh nas seasmhaiche airson cothrom air brabhsairean, gheibh thu seòladh IP taobh a-muigh. Anns a 'chùis seo, bidh an stòr-dàta ruigsinneach bho àite sam bith. Chan eil seo cho tèarainte, ach gu tric nas goireasaiche. Airson IP taobh a-muigh bidh sinn a’ cleachdadh an àithne a leanas:

# 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

Suidhich am facal-faire gu soilleir

An àite an siostam a’ gineadh facal-faire air thuaiream, faodaidh tu am facal-faire a shuidheachadh gu soilleir:

# 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

Tha mi a’ sealltainn toradh nan sgriobtaichean ann an cruth a ghabhas leughadh le daoine, ach tha cruth JSON a’ faighinn taic cuideachd.

A’ cur dheth ruigsinneachd àrd

Leis an àithne a leanas faodaidh tu ruigsinneachd àrd a dhì-cheadachadh gus aon nód a chleachdadh:

# 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

Is e fuasgladh a tha seo airson gnìomhan deuchainn gus MySQL a chuir an gnìomh cho luath agus cho furasta sa ghabhas, deuchainn a dhèanamh air, agus an uairsin a dhùnadh sìos no a chleachdadh airson leasachadh.

Cuidichidh inneal Percona DBaaS CLI thu gus fuasgladh coltach ri DBaaS a choileanadh air Kubernetes. Aig an aon àm, tha sinn a 'leantainn oirnn ag obair air a comas-gnìomh agus feumail.

Chaidh an aithisg seo a thaisbeanadh an toiseach aig @Stòr-dàta Coinnich le Mail.ru Cloud Solutions&Tarantool. Seall видео cuirmean eile agus fo-sgrìobh gu fiosan tachartais air Telegram Timcheall air Kubernetes aig Mail.ru Group.

Dè eile a leughas tu air a’ chuspair:

  1. Stòran-dàta ann an àrd-ùrlar IIoT ùr-nodha.
  2. Mar a roghnaicheas tu stòr-dàta airson pròiseact gus nach fheum thu taghadh a-rithist.

Source: www.habr.com

Cuir beachd ann