Non mwen se Petr Zaitsev, mwen se CEO, fondatè e mwen vle di ou:
- ki jan nou soti nan solisyon sous louvri nan Database as a Service;
- ki apwòch ki egziste pou deplwaye baz done nan nwaj la;
- ki jan Kubernetes ka ranplase DBaaS, elimine depandans vandè ak kenbe senplisite DBMS kòm yon sèvis.
Atik la te prepare dapre yon rapò nan @Databases Meetup pa Mail.ru Cloud Solutions & Tarantool. Si ou pa vle li, ou ka gade:

Ki jan nou soti nan sous louvri nan baz done kòm yon sèvis nan nwaj la
Mwen te travay nan sous louvri depi fen ane 90 yo. Ven ane de sa, lè l sèvi avèk sous louvri, tankou baz done, pa t tèlman fasil. Li te nesesè yo telechaje kòd sous la, patch li, konpile li epi sèlman Lè sa a, sèvi ak li.
Sous louvri Lè sa a, te ale nan yon seri senplifikasyon:
- Tar.gz ak INSTALL sous ki te bezwen konpile;
- pakè ak depandans tankou .deb ak .rpm, kote ou sèlman bezwen enstale yon seri pakè;
- depo pake tankou APT ak YUM, ak ki enstalasyon se otomatik;
- solisyon tankou Docker ak Snap, ki pèmèt ou resevwa pakè pa enstalasyon san depandans ekstèn.
Kòm yon rezilta, li vin pi fasil yo sèvi ak lojisyèl sous louvri epi tou diminye baryè a antre nan devlope aplikasyon sa yo.
An menm tan an, kontrèman ak sitiyasyon an 20 ane de sa, lè tout moun te yon ekspè asanble, kounye a pifò devlopè pa ka bati zouti yo yo itilize nan sous.
An reyalite, sa a se pa move, paske:
- Nou ka itilize lojisyèl ki pi konplèks, men ki pi fasil pou itilizatè. Pou egzanp, yon navigatè se pratik yo itilize, men li gen ladann anpil eleman sous louvri epi li se konvenyan yo bati nan grafouyen.
- Plis moun ka vin devlopè sous louvri ak lòt lojisyèl, plis lojisyèl itilize pa biznis, ak bezwen an pi gwo.
Dezavantaj la se ke pwochen etap la nan senplifikasyon ki asosye ak itilizasyon solisyon nwaj yo, e sa mennen nan yon sèten machann fèmen-nan, se sa ki, obligatwa nan yon sèl founisè. Nou itilize solisyon senp ak founisè yo sèvi ak konpozan sous louvri, men an reyalite yo kloure nan youn nan gwo nwaj yo. Sa vle di, fason ki pi fasil ak pi rapid pou deplwaye sous louvri (ak lojisyèl konpatib ak li) se nan nwaj yo, lè l sèvi avèk yon API propriétaires.
Lè li rive baz done nan nwaj la, gen de apwòch:
- Rasanble enfrastrikti baz done a tankou nan yon sant done regilye. Sa vle di, pran blòk konstriksyon estanda yo: kalkil, depo, elatriye, epi enstale yo. Linux, baz done, konfigirasyon.
- Sèvi ak baz done kòm yon sèvis, kote founisè a ofri yon baz done pare andedan nwaj la.
DBaaS se yon mache k ap grandi byen vit kounye a paske li pèmèt devlopè yo travay dirèkteman ak baz done epi minimize travay woutin. Founisè a pran angajman pou asire Disponibilite Segondè ak echèl fasil, koreksyon baz done, sovgad, ak akor pèfòmans.
De kalite baz done kòm yon sèvis ki baze sou sous louvri ak yon altènatif nan fòm Kubernetes
Gen de kalite baz done kòm yon sèvis pou baz done louvri:
- Yon estanda pwodwi sous louvri pake nan yon backend administrasyon pou deplwaman ak jesyon fasil.
- Yon solisyon komèsyal avanse ak divès kalite ajoute, konpatib ak sous louvri.
Tou de opsyon diminye posiblite pou migrasyon ant nwaj yo epi redwi portabilite done ak aplikasyon yo. Pou egzanp, malgre lefèt ke diferan kalite nwaj sipòte esansyèlman menm estanda MySQL, gen diferans enpòtan ant yo: nan operasyon, pèfòmans, backup, ak sou sa. Migrasyon soti nan yon nwaj nan yon lòt ka difisil, espesyalman pou aplikasyon konplèks.
Ak isit la kesyon an rive - èske li posib jwenn konvenyans nan baz done kòm yon sèvis, men kòm yon senp solisyon sous louvri?
Move nouvèl la se ke, malerezman, pa gen okenn solisyon sa yo sou mache a ankò. Bon nouvèl la se ke gen Kubernetes, ki pèmèt ou aplike solisyon sa yo.
Kubernetes se yon sistèm operasyon pou nwaj la oswa sant done ki pèmèt ou deplwaye ak jere yon aplikasyon atravè plizyè sèvè nan yon gwoup olye ke sou yon sèl lame.
Koulye a, Kubernetes se lidè nan kategori lojisyèl sa yo. Te gen anpil solisyon diferan pou pwoblèm sa yo, men li te vin estanda a. Anpil konpayi ki te konn konsantre sou solisyon altènatif yo kounye a konsantre sou adapte pwodwi yo pou sipòte Kubernetes.
Anplis de sa, Kubernetes se yon solisyon inivèsèl ki sipòte nan nwaj prive, piblik ak ibrid nan anpil machann, pou egzanp: AWS, Google Cloud, Microsoft Azure, .
Ki jan Kubernetes travay ak baz done
Kubernetes te okòmansman fèt pou aplikasyon apatrid ki trete done men ki pa estoke anyen, tankou mikwosèvis oswa aplikasyon entènèt. Baz done yo nan lòt bout nan spectre la, se sa ki, yo se aplikasyon pou eta. Ak Kubernetes pa t 'orijinèlman fèt pou aplikasyon sa yo.
Sepandan, gen karakteristik ki te parèt nan Kubernetes dènyèman ki pèmèt itilizasyon baz done ak lòt aplikasyon pou eta:
- Konsèp StatefulSet la se yon seri antye nan primitif pou trete evènman sou sispann travay la nan gous ak mete ann aplikasyon Graceful Shutdown (fè previzib nan aplikasyon an).
- Volim Persistent yo se magazen done ki asosye ak gous, objè jesyon Kubernetes.
- Operator Framework - se sa ki, kapasite pou kreye konpozan pou jere baz done ak lòt aplikasyon pou eta distribye atravè anpil nœuds.
Deja kounye a nan nwaj piblik yo gen gwo baz done kòm yon sèvis, backend nan ki se Kubernetes, pou egzanp: CockroachCloud, InfluxDB, PlanetScale. Sa vle di, yon baz done sou Kubernetes se pa sèlman yon bagay ki teyorikman posib, men tou, yon bagay ki travay nan pratik.
Percona gen de solisyon sous louvri pou Kubernetes:
- Operatè Kubernetes pou sèvè Percona pou MongoDB.
- Operatè Kubernetes pou XtraDB CLUSTER se yon sèvis ki konpatib ak MySQL epi ki bay gwo disponiblite ak konsistans. Ou kapab tou itilize yon sèl ne si disponiblite segondè pa nesesè, pou egzanp pou yon baz done dev.
Itilizatè Kubernetes yo ka divize an de gwoup. Gen kèk moun ki sèvi ak Operatè Kubernetes dirèkteman - sa yo se sitou itilizatè avanse ki gen yon bon konpreyansyon sou fason teknoloji a fonksyone. Gen lòt ki kouri li sou backend la - itilizatè sa yo enterese nan yon bagay tankou Database as a Service, yo pa vle fouye nan nuans Kubernetes. Pou dezyèm gwoup itilizatè yo, nou gen yon lòt solisyon sous louvri - Percona DBaaS CLI Tool. Sa a se yon solisyon eksperimantal pou moun ki vle jwenn yon sous louvri DBaaS ki baze sou Kubernetes san yo pa yon konpreyansyon pwofon nan teknoloji a.
Ki jan yo kouri DBaaS Percona a sou Google Kubernetes Engine
Google Kubernetes Engine, nan opinyon mwen, se youn nan aplikasyon ki pi fonksyonèl nan teknoloji Kubernetes. Li disponib nan anpil rejyon nan mond lan e li gen yon zouti liy kòmand (SDK) ki senp epi ki pratik, ki pèmèt ou kreye scripts olye pou jere platfòm la manyèlman.
Pou DBaaS nou an travay, nou bezwen eleman sa yo:
- Kubectl.
- Google Cloud SDK.
- Percona DBaaS CLI.
Enstale kubectl
Nou enstale pake a pou sistèm operasyon ou an, nou pral gade yon egzanp Ubuntu... Plis detay .
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
Enstale Google Cloud SDK
Nou enstale pake lojisyèl an menm jan an. Plis detay .
# 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
Enstale Percona DBaaS CLI
Enstale soti nan depo Percona yo. Zouti Percona DBaaS CLI se toujou yon pwodwi eksperimantal, kidonk li sitiye nan repozitwa eksperimantal la, ki dwe aktive separeman, menm si ou deja enstale depo Percona.
plis .
Algorithm enstalasyon:
- Fikse depo Percona lè l sèvi avèk zouti percona-release la. Premyèman, ou bezwen telechaje ak enstale pake ofisyèl percona-lage soti nan Percona:
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb - Aktive eleman depo zouti eksperimantal la jan sa a:
sudo percona-release enable tools experimental - Enstale pake percona-dbaas-cli:
sudo apt-get update sudo apt-get install percona-dbaas-cli
Mete kanpe operasyon an nan eleman yo
Plis sou anviwònman .
Premye ou bezwen konekte nan kont Google ou. Anplis de sa, Google Cloud pèmèt yon itilizatè gen anpil pwojè endepandan, kidonk ou bezwen presize yon pwojè k ap travay lè l sèvi avèk kòd pou pwojè sa a:
gcloud auth login
gcloud config set project hidden-brace-236921
Apre sa, nou kreye yon gwoup. Pou Demo a, mwen te kreye yon gwoup Kubernetes nan twa nœuds sèlman - sa a se minimòm ki nesesè pou disponiblite segondè:
gcloud container clusters create --zone us-central1-a your-cluster-name --cluster-version 1.15 --num-nodes=3
Kòmandman kubectl sa a bay itilizatè aktyèl nou an privilèj yo vle:
kubectl create clusterrolebinding cluster-admin-binding-$USER
--clusterrole=cluster-admin --user=$(gcloud config get-value core/account)Lè sa a, nou kreye yon espas non epi fè li aktif. Namespace se, apeprè pale, menm jan ak yon pwojè oswa anviwònman, men deja andedan yon gwoup Kubernetes. Li endepandan de pwojè Google Cloud:
kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace
Kòmanse gwoup la
Yon fwa nou te ale nan kèk etap sa yo, nou ka kòmanse yon gwoup twa-nœud ak kòmandman senp sa a:
# 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
Ki jan yo konekte ak yon gwoup
Pa default, li disponib sèlman andedan Kubernetes. Sa vle di, li pa aksesib nan sèvè sa a kote ou te kouri kòmandman "Kreye". Pou fè li disponib, pou egzanp, pou tès ak yon kliyan, ou bezwen voye pò a atravè Port Mapping:
kubectl port-forward svc/example-proxysql 3306:3306 $Lè sa a, nou konekte kliyan MySQL ou a:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Kòmandman avanse jesyon gwoup
Baz done sou IP piblik
Si ou vle yon solisyon pi pèmanan pou disponiblite gwoup, ou ka jwenn yon adrès IP ekstèn. Nan ka sa a, baz done a pral aksesib soti nan nenpòt kote. Sa a se mwens sekirite, men souvan pi pratik. Pou IP ekstèn nou itilize lòd sa a:
# 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
Mete modpas la klèman
Olye ke sistèm nan jenere yon modpas owaza, ou ka mete modpas la klèman:
# 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
Mwen montre pwodiksyon scripts yo nan fòma moun lizib, men fòma JSON sipòte tou.
Etenn disponiblite segondè
Avèk lòd sa a ou ka enfim disponiblite segondè pou deplwaye yon sèl ne:
# 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
Sa a se yon solisyon pou tès travay yo jwenn MySQL monte ak kouri pi vit ak fasil ke posib, teste li, ak Lè sa a, fèmen li oswa itilize li pou devlopman.
Zouti Percona DBaaS CLI a ede ou reyalize yon solisyon tankou DBaaS sou Kubernetes. An menm tan an, nou kontinye travay sou fonksyonalite li yo ak itilizasyon li yo.
Rapò sa a te premye prezante nan pa Mail.ru Cloud Solutions&Tarantool. Gade lòt pèfòmans ak abònman nan anons evènman sou Telegram .
Ki lòt bagay pou li sou sijè a:
Sous: www.habr.com
