Sut i adeiladu cwmwl hybrid gan ddefnyddio Kubernetes a all ddisodli DBaaS

Fy enw i yw Petr Zaitsev, fi yw'r Prif Swyddog Gweithredol, sylfaenydd percona ac rwyf am ddweud wrthych:

  • sut y daethom o atebion ffynhonnell agored i Gronfa Ddata fel Gwasanaeth;
  • pa ddulliau sy'n bodoli ar gyfer defnyddio cronfeydd data yn y cwmwl;
  • sut y gall Kubernetes ddisodli DBaaS, gan ddileu dibyniaeth ar werthwyr a chynnal symlrwydd DBMS fel gwasanaeth.

Paratowyd yr erthygl yn seiliedig ar adroddiad yn @Databases Meetup gan Mail.ru Cloud Solutions & Tarantool. Os nad ydych chi eisiau darllen, gallwch wylio:


Sut y daethom o ffynhonnell agored i Gronfa Ddata fel Gwasanaeth yn y cwmwl

Rydw i wedi bod yn gweithio mewn ffynhonnell agored ers diwedd y 90au. Ugain mlynedd yn Γ΄l, nid oedd defnyddio ffynhonnell agored, fel cronfeydd data, mor hawdd. Roedd angen lawrlwytho'r cod ffynhonnell, ei glytio, ei lunio a dim ond wedyn ei ddefnyddio.

Yna aeth ffynhonnell agored trwy gyfres o symleiddio:

  • Tar.gz a GOSOD ffynonellau yr oedd angen eu llunio;
  • pecynnau gyda dibyniaethau fel .deb a .rpm, lle mae angen i chi osod set o becynnau yn unig;
  • storfeydd pecyn fel APT ac YUM, y mae gosod yn awtomatig gyda nhw;
  • atebion fel Docker a Snap, sy'n eich galluogi i dderbyn pecynnau trwy osod heb ddibyniaethau allanol.

O ganlyniad, mae'n dod yn haws defnyddio meddalwedd ffynhonnell agored a hefyd yn lleihau'r rhwystr rhag mynediad i ddatblygu cymwysiadau o'r fath.

Ar yr un pryd, yn wahanol i'r sefyllfa 20 mlynedd yn Γ΄l, pan oedd pawb yn arbenigwr yn y cynulliad, nawr ni all y rhan fwyaf o ddatblygwyr adeiladu'r offer y maent yn eu defnyddio o'r ffynhonnell.

Mewn gwirionedd, nid yw hyn yn ddrwg, oherwydd:

  1. Gallwn ddefnyddio meddalwedd mwy cymhleth ond haws ei ddefnyddio. Er enghraifft, mae porwr yn gyfleus i'w ddefnyddio, ond mae'n cynnwys llawer o gydrannau ffynhonnell agored ac mae'n anghyfleus i'w adeiladu o'r dechrau.
  2. Gall mwy o bobl ddod yn ddatblygwyr meddalwedd ffynhonnell agored a meddalwedd arall, mae busnesau'n defnyddio mwy o feddalwedd, ac mae'r angen amdano yn fwy.

Yr anfantais yw bod y cam nesaf mewn symleiddio yn gysylltiedig Γ’ defnyddio datrysiadau cwmwl, ac mae hyn yn arwain at gloi i mewn gan werthwr penodol, hynny yw, rhwymo un cyflenwr. Rydym yn defnyddio atebion syml ac mae darparwyr yn defnyddio cydrannau ffynhonnell agored, ond mewn gwirionedd maent wedi'u hoelio ar un o'r cymylau mawr. Hynny yw, y ffordd hawsaf a chyflymaf i ddefnyddio ffynhonnell agored (a meddalwedd sy'n gydnaws ag ef) yw yn y cymylau, gan ddefnyddio API perchnogol.

O ran cronfeydd data yn y cwmwl, mae dau ddull:

  1. Cydosod seilwaith y gronfa ddata, fel mewn canolfan ddata reolaidd. Hynny yw, cymerwch flociau adeiladu safonol: cyfrifwch, storio, ac yn y blaen, gosodwch Linux a chronfa ddata arnynt, a'u ffurfweddu.
  2. Defnyddiwch Gronfa Ddata fel Gwasanaeth, lle mae'r darparwr yn cynnig cronfa ddata parod y tu mewn i'r cwmwl.

Mae DBaaS yn farchnad sy'n tyfu'n gyflym ar hyn o bryd oherwydd ei bod yn caniatΓ‘u i ddatblygwyr weithio'n uniongyrchol gyda chronfeydd data ac yn lleihau gwaith arferol. Mae'r darparwr yn ymrwymo i sicrhau Argaeledd Uchel a graddio hawdd, clytio cronfa ddata, copΓ―au wrth gefn, a thiwnio perfformiad.

Dau fath o Gronfa Ddata fel Gwasanaeth yn seiliedig ar ffynhonnell agored a dewis arall ar ffurf Kubernetes

Mae dau fath o Gronfa Ddata fel Gwasanaeth ar gyfer cronfeydd data agored:

  1. Cynnyrch ffynhonnell agored safonol wedi'i becynnu mewn cefn weinyddol i'w ddefnyddio a'i reoli'n hawdd.
  2. Datrysiad masnachol datblygedig gydag amrywiol ychwanegion, sy'n gydnaws Γ’ ffynhonnell agored.

Mae'r ddau opsiwn yn lleihau'r posibilrwydd o fudo rhwng cymylau ac yn lleihau hygludedd data a chymwysiadau. Er enghraifft, er gwaethaf y ffaith bod gwahanol fathau o gymylau yn cefnogi'r un safon MySQL yn y bΓ΄n, mae gwahaniaethau sylweddol rhyngddynt: ar waith, perfformiad, wrth gefn, ac ati. Gall mudo o un cwmwl i'r llall fod yn heriol, yn enwedig ar gyfer cymwysiadau cymhleth.

Ac yma mae'r cwestiwn yn codi - a yw'n bosibl cael cyfleustra Cronfa Ddata fel Gwasanaeth, ond fel datrysiad ffynhonnell agored syml?

Y newyddion drwg yw, yn anffodus, nad oes atebion o'r fath ar y farchnad eto. Y newyddion da yw bod yna Kubernetes, sy'n eich galluogi i weithredu atebion o'r fath.

Mae Kubernetes yn system weithredu ar gyfer y cwmwl neu'r ganolfan ddata sy'n eich galluogi i ddefnyddio a rheoli cymhwysiad ar draws gweinyddwyr lluosog mewn clwstwr yn hytrach nag ar un gwesteiwr.

Nawr Kubernetes yw'r arweinydd yn y categori meddalwedd o'r fath. Roedd llawer o atebion gwahanol ar gyfer problemau o'r fath, ond daeth yn safon. Mae llawer o gwmnΓ―au a arferai ganolbwyntio ar atebion amgen bellach yn canolbwyntio ar addasu eu cynhyrchion i gefnogi Kubernetes.

Yn ogystal, mae Kubernetes yn ddatrysiad cyffredinol a gefnogir mewn cymylau preifat, cyhoeddus a hybrid o lawer o werthwyr, er enghraifft: AWS, Google Cloud, Microsoft Azure, Atebion Cwmwl Mail.ru.

Sut mae Kubernetes yn gweithio gyda chronfeydd data

Dyluniwyd Kubernetes yn wreiddiol ar gyfer cymwysiadau di-wladwriaeth sy'n prosesu data ond nad ydynt yn storio unrhyw beth, fel microwasanaethau neu gymwysiadau gwe. Mae cronfeydd data ar ben arall y sbectrwm, hynny yw, maent yn gymwysiadau gwladwriaethol. Ac ni fwriadwyd Kubernetes yn wreiddiol ar gyfer ceisiadau o'r fath.

Fodd bynnag, mae yna nodweddion sydd wedi ymddangos yn Kubernetes yn ddiweddar sy'n caniatΓ‘u defnyddio cronfeydd data a chymwysiadau gwladwriaethol eraill:

  1. Mae'r cysyniad StatefulSet yn gyfres gyfan o cyntefigau ar gyfer prosesu digwyddiadau am atal gwaith codennau a gweithredu Graceful Shutdown (cau i lawr rhagweladwy o'r cais).
  2. Mae Cyfrolau Parhaus yn storfeydd data sy'n gysylltiedig Γ’ chodennau, gwrthrychau rheoli Kubernetes.
  3. Fframwaith Gweithredwyr - hynny yw, y gallu i greu cydrannau ar gyfer rheoli cronfeydd data a chymwysiadau gwladwriaethol eraill wedi'u dosbarthu ar draws llawer o nodau.

Eisoes yn awr mewn cymylau cyhoeddus mae Cronfeydd Data mawr fel Gwasanaeth, a chefn y rhain yw Kubernetes, er enghraifft: CockroachCloud, InfluxDB, PlanetScale. Hynny yw, mae cronfa ddata ar Kubernetes nid yn unig yn rhywbeth sy'n ddamcaniaethol bosibl, ond hefyd yn rhywbeth sy'n gweithio'n ymarferol.

Mae gan Percona ddau ddatrysiad ffynhonnell agored ar gyfer Kubernetes:

  1. Gweithredwr Kubernetes ar gyfer Gweinydd Percona ar gyfer MongoDB.
  2. Mae Gweithredwr Kubernetes ar gyfer CLUSTER XtraDB yn wasanaeth sy'n gydnaws Γ’ MySQL ac sy'n darparu argaeledd a chysondeb uchel. Gallwch hefyd ddefnyddio un nod os nad oes angen argaeledd uchel, er enghraifft ar gyfer cronfa ddata datblygu.

Gellir rhannu defnyddwyr Kubernetes yn ddau grΕ΅p. Mae rhai pobl yn defnyddio Kubernetes Operators yn uniongyrchol - mae'r rhain yn ddefnyddwyr datblygedig yn bennaf sydd Γ’ dealltwriaeth dda o sut mae'r dechnoleg yn gweithio. Mae eraill yn ei redeg ar y backend - mae gan ddefnyddwyr o'r fath ddiddordeb mewn rhywbeth fel Cronfa Ddata fel Gwasanaeth, nid ydynt am ymchwilio i naws Kubernetes. Ar gyfer yr ail grΕ΅p o ddefnyddwyr, mae gennym ateb ffynhonnell agored arall - Offeryn CLI Percona DBaaS. Mae hwn yn ddatrysiad arbrofol i'r rhai sydd am gael DBaaS ffynhonnell agored yn seiliedig ar Kubernetes heb ddealltwriaeth ddofn o'r dechnoleg.

Sut i redeg DBaaS Percona ar Google Kubernetes Engine

Mae Google Kubernetes Engine, yn fy marn i, yn un o weithrediadau mwyaf swyddogaethol technoleg Kubernetes. Mae ar gael mewn sawl rhanbarth o'r byd ac mae ganddo Offeryn Llinell Reoli syml a chyfleus (SDK), sy'n eich galluogi i greu sgriptiau yn hytrach na rheoli'r platfform Γ’ llaw.

Er mwyn i'n DBaaS weithio, mae angen y cydrannau canlynol arnom:

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

Gosod kubectl

Rydym yn gosod y pecyn ar gyfer eich system weithredu, byddwn yn edrych ar yr enghraifft o Ubuntu. Mwy o fanylion yma.

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

Gosod Google Cloud SDK

Rydym yn gosod y pecyn meddalwedd yn yr un modd. Mwy o fanylion yma.

# 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

Gosod Percona DBaaS CLI

Gosod o ystorfeydd Percona. Mae Offeryn CLI Percona DBaaS yn dal i fod yn gynnyrch arbrofol, felly mae wedi'i leoli yn yr ystorfa arbrofol, y mae'n rhaid ei alluogi ar wahΓ’n, hyd yn oed os oes gennych chi ystorfeydd Percona eisoes wedi'u gosod.

Mwy yma.

Algorithm gosod:

  1. Sefydlu cadwrfeydd Percona gan ddefnyddio'r offeryn rhyddhau percona. Yn gyntaf mae angen i chi lawrlwytho a gosod y pecyn rhyddhau percona swyddogol o Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Galluogi cydran ystorfa offer arbrofol fel a ganlyn:
    sudo percona-release enable tools experimental
    
  3. Gosod pecyn percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Sefydlu gweithrediad cydrannau

Mwy am osodiadau yma.

Yn gyntaf mae angen i chi fewngofnodi i'ch cyfrif Google. Ymhellach, mae Google Cloud yn caniatΓ‘u i un defnyddiwr gael llawer o brosiectau annibynnol, felly mae angen i chi nodi prosiect gweithredol gan ddefnyddio'r cod ar gyfer y prosiect hwn:

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

Nesaf, rydym yn creu clwstwr. Ar gyfer y demo, creais glwstwr Kubernetes o dri nod yn unig - dyma'r lleiafswm sydd ei angen ar gyfer argaeledd uchel:

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

Mae'r gorchymyn kubectl canlynol yn rhoi'r breintiau dymunol i'n defnyddiwr presennol:

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

Yna rydyn ni'n creu gofod enw ac yn ei wneud yn weithredol. Mae Namespace, yn fras, hefyd yn debyg i brosiect neu amgylchedd, ond eisoes y tu mewn i glwstwr Kubernetes. Mae'n annibynnol ar brosiectau Google Cloud:

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

Dechrau'r clwstwr

Unwaith y byddwn wedi mynd trwy'r ychydig gamau hyn, gallwn ddechrau clwstwr tri nod gyda'r gorchymyn syml hwn:

# 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

Sut i gysylltu Γ’ chlwstwr

Yn ddiofyn, dim ond y tu mewn i Kubernetes y mae ar gael. Hynny yw, nid yw'n hygyrch o'r gweinydd hwn y rhedoch chi'r gorchymyn β€œCreu” ohono. Er mwyn sicrhau ei fod ar gael, er enghraifft, ar gyfer profion gyda chleient, mae angen i chi anfon y porthladd ymlaen trwy Port Mapio:

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

Yna rydym yn cysylltu eich cleient MySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Gorchmynion rheoli clwstwr uwch

Cronfa ddata ar IP cyhoeddus

Os ydych chi eisiau datrysiad mwy parhaol ar gyfer argaeledd clwstwr, gallwch gael cyfeiriad IP allanol. Yn yr achos hwn, bydd y gronfa ddata ar gael o unrhyw le. Mae hyn yn llai diogel, ond yn aml yn fwy cyfleus. Ar gyfer IP allanol rydym yn defnyddio'r gorchymyn canlynol:

# 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

Gosodwch y cyfrinair yn benodol

Yn lle bod y system yn cynhyrchu cyfrinair ar hap, gallwch chi osod y cyfrinair yn benodol:

# 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

Rwy'n dangos allbwn y sgriptiau mewn fformat darllenadwy dynol, ond cefnogir fformat JSON hefyd.

Troi argaeledd uchel i ffwrdd

Gyda'r gorchymyn canlynol gallwch analluogi argaeledd uchel i ddefnyddio un nod:

# 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

Mae hwn yn ateb ar gyfer profi tasgau i gael MySQL ar waith mor gyflym a hawdd Γ’ phosibl, ei brofi, ac yna ei gau i lawr neu ei ddefnyddio ar gyfer datblygiad.

Mae offeryn CLI Percona DBaaS yn eich helpu i gyflawni datrysiad tebyg i DBaaS ar Kubernetes. Ar yr un pryd, rydym yn parhau i weithio ar ei ymarferoldeb a defnyddioldeb.

Cyflwynwyd yr adroddiad hwn gyntaf yn @Cronfeydd Data Cyfarfod gan Mail.ru Cloud Solutions&Tarantool. Edrych fideo perfformiadau eraill a thanysgrifio i gyhoeddiadau digwyddiadau ar Telegram O gwmpas Kubernetes yn Mail.ru Group.

Beth arall i'w ddarllen ar y pwnc:

  1. Cronfeydd data mewn platfform IIoT modern.
  2. Sut i ddewis cronfa ddata ar gyfer prosiect fel nad oes rhaid i chi ddewis eto.

Ffynhonnell: hab.com

Ychwanegu sylw