Nuk jam Pjetër Zajtsev, jam drejtor ekzekutiv, themelues dhe dua të flas:
- si kaluam nga zgjidhje open source në Database as a Service;
- cilat janë qasjet për implementimin e bazave të dhënash në cloud;
- si Kubernetes mund të zëvendësojë DBaaS, duke eliminur varësinë nga ndërmarrjet dhe duke mbajtur thjeshtësinë e DBMS si shërbim.
Artikulli është përgatitur mbi bazën e një paraqitjeje në @Databases Meetup nga Mail.ru Cloud Solutions & Tarantool. Nëse nuk dëshironi të lexoni, mund të shihni:

Si kaluam nga open source në Database as a Service në cloud
Unë merrem me open source që nga fundi i viteve '90. Të përdorësh open source, siç janë bazat e dhënash, ishte jo aq e thjeshtë njëzet vjet më parë. Duhej të shkarkoheshin kodet burimore, të patch-oheshin, të kompiloheshin dhe vetëm pastaj të përdornin.
Pastaj open source përjetoi një sërë thjeshtësish:
- kodet burimore Tar.gz dhe INSTALL, që duhej të kompiloheshin;
- paketat me varësi të tipit .deb dhe .rpm, ku vetëm duhet të instalohej një grup paketash;
- repozitorë paketash si APT dhe YUM, me të cilët instalimi ndodh automatikisht;
- zgjidhje si Docker dhe Snap, që lejojnë marrjen e paketave përmes instalimit pa varësi të jashtme.
Si përfundim, përdorimi i softuerit të hapur bëhet më i lehtë, dhe gjithashtu ulet barriera për hyrje në zhvillimin e aplikacioneve të tilla.
Ndryshe nga situata 20 vjet më parë, kur të gjithë ishin ekspertë në ndërtim, tani shumica e zhvilluesve nuk mund të mbledhin mjetet e përdorura nga burimi.
Në të vërtetë, kjo nuk është e keqe, pasi:
- Ne mund tĂ« pĂ«rdorim softuer mĂ« tĂ« komplikuar, por mĂ« tĂ« pĂ«rshtatshĂ«m. PĂ«r shembull, shfletuesi â Ă«shtĂ« i lehtĂ« pĂ«r t'u pĂ«rdorur, por pĂ«rmban shumĂ« komponime open source, dhe Ă«shtĂ« e vĂ«shtirĂ« ta mbledhĂ«sh nga e para.
- Më shumë njerëz mund të bëhen zhvillues të softuerit open source dhe të softuerëve të tjerë, më shumë softuer përdoret nga biznesi, dhe kërkesa për të është më e lartë.
Ankthi tjetĂ«r â hapi i ardhshĂ«m nĂ« thjeshtimin e pĂ«rdorimit tĂ« zgjidhjeve cloud, qĂ« çon nĂ« njĂ« vendor lock-in, do tĂ« thotĂ« lidhje me njĂ« ofrues tĂ« vetĂ«m. Ne pĂ«rdorim zgjidhje tĂ« thjeshta dhe ofruesit pĂ«rdorin komponentĂ« open source, por nĂ« fakt ata janĂ« ngjitur me njĂ« nga cloud-et e mĂ«dha. Pra, mĂ«nyra mĂ« e lehtĂ« dhe mĂ« e shpejtĂ« pĂ«r tĂ« implementuar open source (dhe software-t e tij tĂ« pĂ«rputhshĂ«m) Ă«shtĂ« nĂ« cloud, duke pĂ«rdorur API-propriat.
Nëse flasim për bazat e të dhënave në cloud, ka dy qasje:
- Të ndërtojmë infrastrukturën e bazës së të dhënave, si në një qendër të zakonshme të dhënash. Do të thotë të merrni komponentët standard: compute, storage dhe kështu me radhë, të vendosni mbi to Linux, bazën e të dhënave, dhe ta konfiguroni.
- Të përdorim Database as a Service, ku ofruesi ofron një bazë të dhënash gati brenda cloud-it.
Tani DBaaS është një treg në rritje të shpejtë, sepse ky shërbim lejon zhvilluesit të punojnë me bazat e të dhënave direkt dhe minimizon punën rutine. Ofruesi merr përsipër sigurinë e High Availability (disponueshmërisë së lartë) dhe shkallëzimit të lehtë, patchimin e bazës së të dhënave, backup-et, dhe konfigurimin e performancës.
Dy dy lloje Database as a Service mbi bazën e open source dhe një alternativë në formën e Kubernetes
Ekzistojnë dy lloje Database as a Service për baza të dhënash të hapura:
- Produkt standard open source, i paketuar në një backend për administrimin, i cili thjeshton implementimin dhe menaxhimin.
- Zgjidhje komerciale të avancuar me shtesa të ndryshme, të përputhshme me open source.
Të dyja opsionet reduktojnë mundësitë e migrimit midis cloud-ave, duke zvogëluar portabilitetin e të dhënave dhe aplikacioneve. Për shembull, megjithëse lloje të ndryshme cloud-e mbështesin në thelb të njëjtin standard MySQL, ekzistojnë dallime të rëndësishme në operim, performancë, backup, etj. Migrimi nga një cloud në tjetrin mund të jetë i vështirë, veçanërisht për aplikacione të komplikuara.
Dhe kĂ«tu lind pyetja â a Ă«shtĂ« e mundur tĂ« kemi komoditetin e Database as a Service, por si njĂ« zgjidhje tĂ« thjeshtĂ« open source?
Lajmi i keq Ă«shtĂ« se, fatkeqĂ«sisht, pĂ«r momentin nuk ka zgjidhje tĂ« tilla nĂ« treg. Lajmi i mirĂ« â ekziston Kubernetes, i cili lejon realizimin e kĂ«tyre zgjidhjeve.
Kubernetes â Ă«shtĂ« njĂ« sistem operativ pĂ«r re dhe qendra tĂ« tĂ« dhĂ«nave, i cili lejon vendosjen e aplikacioneve dhe menaxhimin e tyre nĂ« shumĂ« servera nĂ« njĂ« klaster, nĂ« vend tĂ« njĂ« host-i tĂ« vetĂ«m.
Tani Kubernetes është lider në kategorinë e softuerëve të tillë. Ka pasur shumë zgjidhje të ndryshme për këto detyra, por Pikërisht ai është bërë standardi. Shumë kompani që më parë merreshin me zgjidhje alternative tani përqendrohen në adaptimin e produkteve të tyre për mbështetje të Kubernetes.
Përveç kësaj, Kubernetes është një zgjidhje universale që mbështetet në cloud-e private, publike dhe hibride nga shumë ofrues, për shembull: AWS, Google Cloud, Microsoft Azure, .
Si funksionon Kubernetes me bazat e të dhënave
Kubernetes është parë fillimisht për aplikacione stateless, që përpunojnë të dhënat, por nuk ruajnë asgjë, për shembull, mikro-shërbime ose aplikacione web. Bazat e të dhënave janë në anën tjetër të spektrit, pra ato janë aplikacione stateful. Dhe Kubernetes për këto aplikacione fillimisht nuk ishte dizajnuar.
Megjithatë, ka disa funkcionalitete që janë shfaqur së fundmi në Kubernetes dhe lejojnë përdorimin e bazave të të dhënave dhe aplikacioneve të tjera stateful:
- Koncepti i StatefulSet është një seri e tërë primitieve për trajtimin e ngjarjeve të ndalimit të pods dhe për realizimin e Graceful Shutdown (mbylljes së parashikueshme të aplikacionit).
- Vëllimet e qëndrueshme janë ruajtje të dhënash që lidhen me pods, objektet menaxhuese të Kubernetes.
- Operator Framework â ky Ă«shtĂ« njĂ« mundĂ«si pĂ«r tĂ« krijuar komponentĂ« pĂ«r menaxhimin e bazave tĂ« dhĂ«nash dhe aplikacioneve tĂ« tjera me qendrim, tĂ« shpĂ«rndara mbi shumĂ« nyje.
Tani në cloud publik ekzistojnë shërbime të mëdha Database as a Service, në backend të të cilave është Kubernetes, për shembull: CockroachCloud, InfluxDB, PlanetScale. Pra, baza e dhënash mbi Kubernetes nuk është vetëm diçka që është teorikisht e mundur, por edhe ajo që funksionon në praktikë.
Percona ka dy zgjidhje open source për Kubernetes:
- Kubernetes Operator për Percona Server për MongoDB.
- Kubernetes Operator pĂ«r XtraDB CLUSTER â njĂ« shĂ«rbim qĂ« Ă«shtĂ« i pajtueshĂ«m me MySQL, siguron disponueshmĂ«ri tĂ« lartĂ« dhe konsistencĂ«. Po ashtu, mund tĂ« pĂ«rdoret njĂ« nyjĂ« e vetme, nĂ«se disponueshmĂ«ria e lartĂ« nuk Ă«shtĂ« e nevojshme, pĂ«r shembull pĂ«r njĂ« bazĂ« tĂ« dhĂ«nash zhvillimi.
PĂ«rdoruesit e Kubernetes mund tĂ« ndahen nĂ« dy grupe. NjĂ«ra kategori pĂ«rdor Kubernetes Operators direkt â kryesisht pĂ«rdorues tĂ« avancuar qĂ« e kuptojnĂ« mirĂ« se si funksionon teknologjia. Kategoria tjetĂ«r e nis atĂ« nĂ« backend â kĂ«ta pĂ«rdorues janĂ« tĂ« interesuar pĂ«r diçka si Database as a Service, ata nuk duan tĂ« hyjnĂ« nĂ« detaje tĂ« punĂ«s sĂ« Kubernetes. PĂ«r kĂ«tĂ« grup pĂ«rdoruesish kemi njĂ« zgjidhje tjetĂ«r open source â Percona DBaaS CLI Tool. Kjo Ă«shtĂ« njĂ« zgjidhje eksperimentale pĂ«r ata qĂ« duan tĂ« pĂ«rfitojnĂ« nga njĂ« DBaaS open source mbi Kubernetes pa njĂ« kuptim tĂ« thellĂ« tĂ« teknologjisĂ«.
Si të nisni DBaaS nga Percona në Google Kubernetes Engine
Google Kubernetes Engine, sipas mendimit tim, është një nga implementimet më funksionale të teknologjisë Kubernetes. Ajo është e disponueshme në shumë rajone të botës dhe ka një mjet të thjeshtë dhe të lehtë për Command Line (SDK), i cili lejon krijimin e skriptave, në vend që të menaxhohet platforma manualisht.
Për të bërë që DBaaS ynë të funksionojë, ne kemi nevojë për komponentët e mëposhtëm:
- Kubectl.
- Google Cloud SDK.
- Percona DBaaS CLI.
Instaloni kubectl
Instaloni paketën për sistemin tuaj operativ, ne do të shqyrtojmë shembullin e Ubuntu. Më shumë detaje .
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
Instaloni Google Cloud SDK
Po të njëjtën mënyrë instaloni paketën e softuerit. Më shumë informacion .
# 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
Instaloni Percona DBaaS CLI
Instaloni nga depozitat e Percona. Percona DBaaS CLI Tool është një produkt ende eksperimental, prandaj ndodhet në një depo eksperimentale që duhet aktivizuar veçmas, edhe nëse tashmë keni depozitat e Percona të instaluara.
Më shumë .
Algoritmi i instalimit:
- Konfiguroni depozitat e Percona me ndihmën e mjetit percona-release. Fillimisht duhet të shkarkoni dhe të instaloni paketën zyrtare percona-release nga Percona:
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb - Aktivizoni komponentin eksperimental të depozitës së mjeteve si më poshtë:
sudo percona-release enable tools experimental - Instaloni paketën percona-dbaas-cli:
sudo apt-get update sudo apt-get install percona-dbaas-cli
Konfigurojmë funksionimin e componenteve
Më shumë rreth konfigurimeve .
Së pari duhet të identifikoheni në llogarinë tuaj Google. Më pas Google Cloud lejon një përdorues të ketë shumë projekte të pavarura, prandaj kërkohet të caktohet një projekt aktiv duke përdorur kodin e këtij projekti:
gcloud auth login
gcloud config set project hidden-brace-236921
MĂ« pas krijojmĂ« njĂ« klaster. PĂ«r demo kam krijuar njĂ« klaster Kubernetes me vetĂ«m tre node â ky Ă«shtĂ« minimumi qĂ« kĂ«rkohet pĂ«r disponueshmĂ«ri tĂ« lartĂ«:
gcloud container clusters create --zone us-central1-a emri-i-klasterit --cluster-version 1.15 --num-nodes=3
Komanda e mëposhtme kubectl i jep privilegjet e nevojshme përdoruesit tonë aktual:
kubectl create clusterrolebinding cluster-admin-binding-$USER
--clusterrole=cluster-admin --user=$(gcloud config get-value core/account)Pastaj krijojmë një namespace dhe e aktivizojmë atë. Namespace është, në njëfarë mënyre, si një projekt ose ambient, por brenda klasterit Kubernetes. Ai është i pavarur nga projektet Google Cloud:
kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace
Nisim klasterin
Pas kalimit nëpër këto disa hapa, mund të nisim klasterin me tre nodet me këtë komandë të thjeshtë:
# 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
Si të lidhemi me klasterin
Me default ai në dispozicion vetëm brenda Kubernetes. Kjo do të thotë se nga ky server, nga ku keni ekzekutuar komandën "Create", nuk është i aksesueshëm. Që të bëhet aksesueshëm, për shembull për teste me klientin, duhet të hapni portin përmes Port Mapping:
kubectl port-forward svc/example-proxysql 3306:3306 $Pastaj lidhni klientin tuaj MySQL:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Komanda të avancuara për menaxhimin e klasterit
Baza e të dhënave me IP publike
Nëse dëshironi një zgjidhje më të përhershme për aksesin në klaster, mund të merrni një adresë IP të jashtme. Në këtë rast, baza e të dhënave do të jetë e aksesueshme nga kudo. Kjo është më pak e sigurt, por shpesh më e përshtatshme. Për IP të jashtme përdorni komandën e mëposhtme:
# 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
Caktoni qartë fjalëkalimin
Në vend që sistemi të gjenerojë fjalëkalimin rastësisht, mund të caktoni qartë fjalëkalimin:
# 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
Po e shfaq rezultatin e skenave në një format të lexueshëm, por gjithashtu mbështetet formati JSON.
Ăaktivizoni disponueshmĂ«rinĂ« e lartĂ«
Me komandën e mëposhtme mund të çaktivizoni disponueshmërinë e lartë për të zbatuar një node të vetme:
# 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
Kjo është një zgjidhje për detyra testuese, për të ngritur sa më shpejt dhe lehtë MySQL, për ta testuar dhe pastaj për ta mbyllur ose për ta përdorur për zhvillim.
Mjidhi Percona DBaaS CLI ndihmon në marrjen e një zgjidhjeje në Kubernetes, të ngjashme me DBaaS. Ne vazhdojmë të punojmë mbi funksionalitetin dhe përdorshmërinë e saj.
Ky raport u shpërnda për herë të parë në nga Mail.ru Cloud Solutions&Tarantool. Shikoni prezantime të tjera dhe abonohuni për njoftimet mbi ngjarjet në Telegram .
ĂfarĂ« tjetĂ«r tĂ« lexoni mbi temĂ«n:
Burimi: habr.com
