ProHoster > ΠΠ»ΠΎΠ³ > Pagdumala > Giunsa paghimo ang usa ka hybrid nga panganod gamit ang Kubernetes nga makapuli sa DBaaS
Giunsa paghimo ang usa ka hybrid nga panganod gamit ang Kubernetes nga makapuli sa DBaaS
Ang akong ngalan mao si Petr Zaitsev, ako ang CEO, founder percona ug gusto kong isulti kanimo:
kung giunsa kami gikan sa bukas nga gigikanan nga mga solusyon sa Database ingon usa ka Serbisyo;
unsa nga mga pamaagi ang anaa sa pagdeploy sa mga database sa panganod;
unsaon pagpuli sa Kubernetes ang DBaaS, pagwagtang sa pagsalig sa vendor ug pagmintinar sa kayano sa DBMS isip usa ka serbisyo.
Ang artikulo giandam base sa usa ka taho sa @Databases Meetup ni Mail.ru Cloud Solutions & Tarantool. Kung dili nimo gusto magbasa, mahimo nimong tan-awon:
Giunsa kami gikan sa bukas nga gigikanan hangtod sa Database ingon usa ka Serbisyo sa panganod
Nagtrabaho ko sa open source sukad sa ulahing bahin sa 90s. Baynte ka tuig na ang milabay, ang paggamit sa open source, sama sa mga database, dili kaayo sayon. Kinahanglan nga i-download ang source code, i-patch kini, i-compile kini ug dayon gamiton kini.
Ang open source dayon miagi sa sunodsunod nga pagpayano:
Tar.gz ug I-INSTALL ang mga tinubdan nga kinahanglan nga i-compile;
mga pakete nga adunay mga dependency sama sa .deb ug .rpm, diin kinahanglan nimo nga i-install ang usa ka hugpong sa mga pakete;
mga repositoryo sa package sama sa APT ug YUM, diin awtomatiko ang pag-install;
mga solusyon sama sa Docker ug Snap, nga nagtugot kanimo nga makadawat mga pakete pinaagi sa pag-install nga walaβy mga dependency sa gawas.
Ingon nga resulta, kini nahimong mas sayon ββsa paggamit sa open source software ug usab pagpaubos sa babag sa pagsulod ngadto sa pagpalambo sa maong mga aplikasyon.
Sa samang higayon, dili sama sa sitwasyon 20 ka tuig na ang milabay, sa dihang ang tanan usa ka eksperto sa asembliya, karon kadaghanan sa mga developers dili makahimo sa mga himan nga ilang gigamit gikan sa tinubdan.
Sa tinuud, dili kini daotan, tungod kay:
Makagamit kami og mas komplikado apan mas user-friendly nga software. Pananglitan, ang usa ka browser sayon ββββgamiton, apan kini naglakip sa daghang mga open source nga mga sangkap ug dili kombenyente sa pagtukod gikan sa wala.
Daghang mga tawo ang mahimong mga developer sa open source ug uban pang software, mas daghang software ang gigamit sa mga negosyo, ug mas dako ang panginahanglan niini.
Ang downside mao nga ang sunod nga lakang sa pagpayano nalangkit sa paggamit sa mga solusyon sa panganod, ug kini modala ngadto sa usa ka piho nga vendor lock-in, nga mao, pagbugkos sa usa ka supplier. Gigamit namo ang yano nga mga solusyon ug ang mga tighatag naggamit sa bukas nga tinubdan nga mga sangkap, apan sa pagkatinuod sila gilansang sa usa sa dagkong mga panganod. Kana mao, ang pinakasayon ββug pinakapaspas nga paagi sa pag-deploy sa open source (ug software compatible niini) anaa sa clouds, gamit ang proprietary API.
Kung bahin sa mga database sa panganod, adunay duha nga pamaagi:
Tiguma ang imprastraktura sa database, sama sa usa ka regular nga sentro sa datos. Kana mao, kuhaa ang standard nga mga bloke sa pagtukod: pag-compute, pagtipig, ug uban pa, i-install ang Linux ug usa ka database sa kanila, ug i-configure kini.
Gamita ang Database isip Serbisyo, diin ang provider nagtanyag og andam nga database sulod sa panganod.
Ang DBaaS usa ka paspas nga nagtubo nga merkado karon tungod kay gitugotan niini ang mga developer nga direktang magtrabaho sa mga database ug makunhuran ang naandan nga trabaho. Ang tighatag naningkamot sa pagsiguro sa Taas nga Availability ug sayon ββnga pag-scaling, database patching, backups, ug performance tuning.
Duha ka klase sa Database isip Serbisyo base sa open source ug alternatibo sa porma sa Kubernetes
Adunay duha ka matang sa Database isip Serbisyo para sa bukas nga mga database:
Usa ka sumbanan nga open source nga produkto nga giputos sa usa ka backend sa administrasyon alang sa dali nga pag-deploy ug pagdumala.
Usa ka abante nga solusyon sa komersyo nga adunay lainlaing mga add-on, nahiuyon sa bukas nga gigikanan.
Ang duha ka mga kapilian makapakunhod sa posibilidad sa paglalin tali sa mga panganod ug makunhuran ang pagkadala sa datos ug mga aplikasyon. Pananglitan, bisan pa sa kamatuoran nga ang lain-laing mga matang sa mga panganod nagsuporta sa esensya sa sama nga standard MySQL, adunay mahinungdanon nga mga kalainan tali kanila: sa operasyon, performance, backup, ug uban pa. Ang paglalin gikan sa usa ka panganod ngadto sa lain mahimong mahagiton, labi na sa mga komplikado nga aplikasyon.
Ug dinhi mitungha ang pangutana - posible ba nga makuha ang kasayon ββββsa Database ingon usa ka Serbisyo, apan ingon usa ka yano nga solusyon sa bukas nga gigikanan?
Ang dili maayo nga balita mao nga, sa kasubo, wala pa ang ingon nga mga solusyon sa merkado. Ang maayong balita mao nga adunay Kubernetes, nga nagtugot kanimo sa pagpatuman sa ingon nga mga solusyon.
Ang Kubernetes usa ka operating system alang sa cloud o data center nga nagtugot kanimo sa pag-deploy ug pagdumala sa usa ka aplikasyon sa daghang mga server sa usa ka cluster kaysa sa usa ka host.
Karon ang Kubernetes mao ang nanguna sa kategorya sa ingon nga software. Adunay daghang lainlaing mga solusyon alang sa ingon nga mga problema, apan nahimo kini nga sumbanan. Daghang mga kompanya nga kaniadto nagpunting sa mga alternatibong solusyon karon nagpunting sa pagpahiangay sa ilang mga produkto aron suportahan ang Kubernetes.
Dugang pa, ang Kubernetes usa ka unibersal nga solusyon nga gisuportahan sa pribado, publiko ug hybrid nga panganod sa daghang mga tigbaligya, pananglitan: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.
Giunsa pagtrabaho sa Kubernetes ang mga database
Ang Kubernetes orihinal nga gidisenyo alang sa walay estado nga mga aplikasyon nga nagproseso sa datos apan wala magtipig bisan unsa, sama sa mga microservice o mga aplikasyon sa web. Ang mga database anaa sa pikas tumoy sa spectrum, nga mao, kini mga stateful nga aplikasyon. Ug ang Kubernetes dili orihinal nga gituyo alang sa ingon nga mga aplikasyon.
Bisan pa, adunay mga bahin nga nagpakita sa Kubernetes bag-o lang nga nagtugot sa paggamit sa mga database ug uban pang stateful nga mga aplikasyon:
Ang konsepto sa StatefulSet usa ka tibuok nga serye sa mga primitives alang sa pagproseso sa mga panghitabo mahitungod sa paghunong sa trabaho sa mga pod ug pagpatuman sa Graceful Shutdown (predictable shutdown sa aplikasyon).
Ang Persistent Volumes kay mga data store nga nalambigit sa mga pod, mga butang sa pagdumala sa Kubernetes.
Operator Framework - nga mao, ang abilidad sa paghimo sa mga sangkap alang sa pagdumala sa mga database ug uban pang stateful nga mga aplikasyon nga giapod-apod sa daghang mga node.
Naa na karon sa publiko nga mga panganod adunay daghang mga Database ingon usa ka Serbisyo, ang backend niini mao ang Kubernetes, pananglitan: CockroachCloud, InfluxDB, PlanetScale. Kana mao, ang usa ka database sa Kubernetes dili lamang usa ka butang nga posible sa teorya, apan usa usab ka butang nga nagtrabaho sa praktis.
Ang Percona adunay duha ka open source nga solusyon para sa Kubernetes:
Kubernetes Operator para sa Percona Server para sa MongoDB.
Ang Kubernetes Operator alang sa XtraDB CLUSTER usa ka serbisyo nga nahiuyon sa MySQL ug naghatag taas nga pagkaanaa ug pagkamakanunayon. Mahimo usab nimo gamiton ang usa ka node kung dili kinahanglan ang taas nga magamit, pananglitan alang sa usa ka database sa dev.
Ang mga tiggamit sa Kubernetes mahimong bahinon sa duha ka grupo. Ang ubang mga tawo direkta nga naggamit sa Kubernetes Operators - kini kasagaran mga advanced nga tiggamit nga adunay maayo nga pagsabut kung giunsa ang teknolohiya molihok. Ang uban nagpadagan niini sa backend - ang ingon nga mga tiggamit interesado sa usa ka butang sama sa Database ingon usa ka Serbisyo, dili nila gusto nga susihon ang mga nuances sa Kubernetes. Alang sa ikaduhang grupo sa mga tiggamit, aduna kami laing open source nga solusyon - Percona DBaaS CLI Tool. Kini usa ka eksperimento nga solusyon alang niadtong gusto nga makakuha og open source DBaaS base sa Kubernetes nga walay lawom nga pagsabot sa teknolohiya.
Giunsa pagpadagan ang DBaaS ni Percona sa Google Kubernetes Engine
Ang Google Kubernetes Engine, sa akong opinyon, usa sa labing magamit nga pagpatuman sa teknolohiya sa Kubernetes. Anaa kini sa daghang mga rehiyon sa kalibutan ug adunay usa ka yano ug kombenyente nga Command Line Tool (SDK), nga nagtugot kanimo sa paghimo og mga script kaysa sa mano-mano nga pagdumala sa plataporma.
Aron molihok ang among DBaaS, kinahanglan namon ang mga musunud nga sangkap:
Kubectl.
Google Cloud SDK.
Percona DBaaS CLI.
I-install ang kubectl
Gi-install namon ang package alang sa imong operating system, among tan-awon ang pananglitan sa Ubuntu. Dugang detalye dinhi.
Gi-install namon ang software package sa parehas nga paagi. Dugang detalye dinhi.
# 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
Pag-instalar sa Percona DBaaS CLI
Pag-instalar gikan sa mga repositoryo sa Percona. Ang Percona DBaaS CLI Tool kay usa gihapon ka eksperimento nga produkto, mao nga kini nahimutang sa eksperimento nga repository, nga kinahanglan nga bulagon nga mahimo, bisan kung ikaw adunay Percona repository nga na-install.
I-set up ang Percona repository gamit ang percona-release tool. Una kinahanglan nimo nga i-download ug i-install ang opisyal nga percona-release nga pakete gikan sa Percona:
Una kinahanglan nimo nga mag-log in sa imong Google account. Dugang pa, gitugotan sa Google Cloud ang usa ka tiggamit nga adunay daghang mga independente nga proyekto, mao nga kinahanglan nimo nga ipiho ang usa ka nagtrabaho nga proyekto gamit ang code alang niini nga proyekto:
gcloud auth login
gcloud config set project hidden-brace-236921
Sunod, maghimo kami usa ka cluster. Alang sa demo, naghimo ko og Kubernetes cluster nga tulo ra ka node - kini ang minimum nga gikinahanglan alang sa taas nga anaa:
Dayon maghimo kami og namespace ug himoon kini nga aktibo. Ang namespace, sa halos pagkasulti, sama usab sa usa ka proyekto o palibot, apan naa sa sulod sa usa ka Kubernetes cluster. Kini independente gikan sa mga proyekto sa Google Cloud:
Kung nahuman na nato kining pipila ka mga lakang, makasugod kita og tulo ka node cluster uban niining yano nga sugo:
# 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
Unsaon pagkonektar sa usa ka cluster
Sa kasagaran, kini anaa lamang sa sulod sa Kubernetes. Kana mao, dili kini ma-access gikan sa kini nga server diin imong gipadagan ang "Paghimo" nga mando. Aron magamit kini, pananglitan, alang sa mga pagsulay sa usa ka kliyente, kinahanglan nimo nga ipasa ang pantalan pinaagi sa Port Mapping:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Mga advanced nga mando sa pagdumala sa cluster
Database sa publiko nga IP
Kung gusto nimo ang usa ka labi ka permanente nga solusyon alang sa pagkaanaa sa cluster, mahimo ka makakuha usa ka eksternal nga IP address. Sa kini nga kaso, ang database mahimong ma-access gikan sa bisan diin. Kini dili kaayo luwas, apan kasagaran mas sayon. Alang sa eksternal nga IP among gigamit ang mosunod nga sugo:
# 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
Klaro nga itakda ang password
Imbis nga ang sistema nga random nga maghimo usa ka password, mahimo nimong itakda ang password nga klaro:
Kini usa ka solusyon alang sa pagsulay sa mga buluhaton aron mapaandar ang MySQL sa labing kadali ug kadali kutob sa mahimo, sulayan kini, ug dayon isira kini o gamiton kini alang sa kalamboan.
Ang Percona DBaaS CLI tool makatabang nimo nga makab-ot ang sama sa DBaaS nga solusyon sa Kubernetes. Sa parehas nga oras, nagpadayon kami sa pagtrabaho sa pag-andar ug pagkagamit niini.