ProHoster > blog > Gweinyddiaeth > Sut i adeiladu cwmwl hybrid gan ddefnyddio Kubernetes a all ddisodli DBaaS
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:
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.
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:
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.
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:
Cynnyrch ffynhonnell agored safonol wedi'i becynnu mewn cefn weinyddol i'w ddefnyddio a'i reoli'n hawdd.
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:
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).
Mae Cyfrolau Parhaus yn storfeydd data sy'n gysylltiedig Γ’ chodennau, gwrthrychau rheoli Kubernetes.
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:
Gweithredwr Kubernetes ar gyfer Gweinydd Percona ar gyfer MongoDB.
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:
Kubectl.
Google Cloud SDK.
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.
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.
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:
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:
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:
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:
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:
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.