ProHoster > Blog > Administrasi > Kumaha carana ngawangun awan hibrid nganggo Kubernetes anu tiasa ngagentos DBaaS
Kumaha carana ngawangun awan hibrid nganggo Kubernetes anu tiasa ngagentos DBaaS
Nami abdi Petr Zaitsev, abdi CEO, pangadeg percona sareng abdi hoyong nyarios ka anjeun:
kumaha urang sumping ti solusi open source ka Database salaku Service;
pendekatan naon anu aya pikeun nyebarkeun pangkalan data dina méga;
kumaha Kubernetes tiasa ngagantikeun DBaaS, ngaleungitkeun kagumantungan padagang sareng ngajaga kesederhanaan DBMS salaku jasa.
Tulisan ieu disusun dumasar kana laporan di @Databases Meetup ku Mail.ru Cloud Solutions & Tarantool. Upami anjeun henteu hoyong maca, anjeun tiasa nonton:
Kumaha urang sumping ti open source ka Database salaku Service dina awan
Kuring geus digawé di open source saprak ahir 90s. Dua puluh taun ka tukang, ngagunakeun open source, kayaning database, teu jadi gampang. Ieu diperlukeun pikeun ngundeur kodeu sumber, patch eta, compile sarta ngan lajeng ngagunakeun eta.
Open source teras ngalangkungan sababaraha nyederhanakeun:
Tar.gz sareng INSTALL sumber anu kedah disusun;
bungkusan kalawan kagumantungan kawas .deb na .rpm, dimana anjeun ngan kudu masang sakumpulan bungkusan;
repositories pakét sapertos APT sareng YUM, dimana pamasangan otomatis;
solusi sapertos Docker sareng Snap, anu ngamungkinkeun anjeun nampi bungkusan ku pamasangan tanpa katergantungan éksternal.
Hasilna, janten langkung gampang ngagunakeun parangkat lunak open source sareng ngirangan halangan pikeun asup kana ngembangkeun aplikasi sapertos kitu.
Dina waktos anu sami, teu sapertos kaayaan 20 taun ka pengker, nalika sadayana ahli majelis, ayeuna kalolobaan pamekar henteu tiasa ngawangun alat anu dianggo tina sumberna.
Kanyataanna, ieu teu goréng, sabab:
Urang bisa make software nu leuwih kompleks tapi leuwih ramah-pamaké. Contona, browser merenah ngagunakeun, tapi ngawengku loba komponén open source sarta teu merenah pikeun ngawangun ti scratch.
Langkung seueur jalma tiasa janten pamekar open source sareng parangkat lunak sanés, langkung seueur parangkat lunak anu dianggo ku usaha, sareng kabutuhanana langkung ageung.
downside teh nya eta lengkah saterusna dina nyederhanakeun pakait sareng pamakéan solusi awan, sarta ieu ngakibatkeun hiji konci vendor tangtu, nyaeta, ngariung ka hiji supplier. Kami nganggo solusi saderhana sareng panyadia nganggo komponén open source, tapi kanyataanna aranjeunna dipaku kana salah sahiji awan anu ageung. Nyaéta, cara panggampangna sareng panggancangna pikeun nyebarkeun open source (sareng parangkat lunak anu cocog sareng éta) nyaéta dina méga, nganggo API proprietary.
Lamun datang ka basis data dina awan, aya dua pendekatan:
Nyusun infrastruktur pangkalan data, sapertos dina pusat data biasa. Nyaéta, nyandak blok wangunan standar: ngitung, neundeun, sareng saterasna, pasang Linux sareng pangkalan data dina éta, teras konfigurasikeunana.
Anggo Database salaku Jasa, dimana panyadia nawiskeun database siap-siap di jero awan.
DBaaS mangrupikeun pasar anu ngembang pesat ayeuna sabab ngamungkinkeun para pamekar damel langsung sareng pangkalan data sareng ngaminimalkeun padamelan rutin. Panyadia ngalaksanakeun pikeun mastikeun Kasadiaan Luhur sareng skala gampang, patching database, cadangan, sareng tuning kinerja.
Dua jinis Database salaku Layanan dumasar kana open source sareng alternatif dina bentuk Kubernetes
Aya dua jinis Database salaku Service pikeun database kabuka:
Hiji produk open source standar rangkep dina backend administrasi pikeun gampang deployment sarta manajemén.
Solusi komérsial canggih sareng sagala rupa tambihan, cocog sareng open source.
Kadua pilihan ngirangan kamungkinan migrasi antara awan sareng ngirangan portabilitas data sareng aplikasi. Contona, sanajan kanyataan yén tipena béda awan ngarojong dasarna sarua MySQL baku, aya béda anu signifikan antara aranjeunna: dina operasi, kinerja, cadangan, jeung saterusna. Migrasi tina hiji awan ka awan anu sanés tiasa janten tantangan, khususna pikeun aplikasi anu kompleks.
Sareng di dieu patarosan timbul - naha éta tiasa kéngingkeun genah Database salaku Layanan, tapi salaku solusi open source anu saderhana?
Warta anu goréng nyaéta, hanjakalna, teu aya solusi sapertos kitu di pasar. Warta anu saé nyaéta aya Kubernetes, anu ngamungkinkeun anjeun ngalaksanakeun solusi sapertos kitu.
Kubernetes mangrupikeun sistem operasi pikeun awan atanapi pusat data anu ngamungkinkeun anjeun nyebarkeun sareng ngatur aplikasi dina sababaraha server dina klaster tinimbang dina host tunggal.
Ayeuna Kubernetes mangrupikeun pamimpin dina kategori parangkat lunak sapertos kitu. Aya seueur solusi anu béda pikeun masalah sapertos kitu, tapi éta janten standar. Seueur perusahaan anu baheula fokus kana solusi alternatif ayeuna fokus kana adaptasi produkna pikeun ngadukung Kubernetes.
Salaku tambahan, Kubernetes mangrupikeun solusi universal anu dirojong dina awan swasta, umum sareng hibrid tina seueur padagang, contona: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.
Kumaha Kubernetes dianggo sareng pangkalan data
Kubernetes asalna dirancang pikeun aplikasi stateless nu ngolah data tapi teu nyimpen nanaon, kayaning microservices atawa aplikasi wéb. Basis data aya di tungtung spéktrum anu sanés, nyaéta, aranjeunna mangrupikeun aplikasi stateful. Sareng Kubernetes awalna henteu dimaksudkeun pikeun aplikasi sapertos kitu.
Nanging, aya fitur-fitur anu nembe muncul dina Kubernetes anu ngamungkinkeun panggunaan database sareng aplikasi stateful anu sanés:
Konsep StatefulSet mangrupikeun runtuyan primitif pikeun ngolah acara ngeunaan ngeureunkeun pagawéan pods sareng ngalaksanakeun Graceful Shutdown (pareuman anu tiasa diprediksi tina aplikasi).
Jilid Persistent mangrupakeun toko data anu pakait sareng pods, objék manajemén Kubernetes.
Operator Framework - nyaeta, kamampuhan pikeun nyieun komponén pikeun ngatur basis data sarta aplikasi stateful séjén disebarkeun sakuliah loba titik.
Ayeuna di awan umum aya Database ageung salaku Service, backend nu Kubernetes, contona: CockroachCloud, InfluxDB, PlanetScale. Hartina, database on Kubernetes henteu ngan hiji hal anu sacara téoritis mungkin, tapi ogé hiji hal anu hade dina prakna.
Percona gaduh dua solusi open source pikeun Kubernetes:
Operator Kubernetes pikeun Percona Server pikeun MongoDB.
Operator Kubernetes pikeun XtraDB CLUSTER mangrupikeun jasa anu cocog sareng MySQL sareng nyayogikeun kasadiaan sareng konsistensi anu luhur. Anjeun oge bisa make titik tunggal lamun kasadiaan tinggi henteu diperlukeun, contona pikeun database dev.
pamaké Kubernetes bisa dibagi kana dua grup. Sababaraha urang nganggo Operator Kubernetes sacara langsung - ieu utamina mangrupikeun pangguna canggih anu gaduh pamahaman anu hadé ngeunaan cara téknologi éta jalan. Batur ngajalankeun éta dina backend - pamaké sapertos museurkeun hal kawas Database salaku Service a, maranéhna teu hayang delve kana nuansa Kubernetes. Pikeun grup kadua pamaké, urang boga solusi open source sejen - Percona DBaaS CLI Alat. Ieu mangrupikeun solusi ékspérimén pikeun anu hoyong kéngingkeun DBaaS open source dumasar kana Kubernetes tanpa pamahaman anu jero ngeunaan téknologi.
Kumaha ngajalankeun DBaaS Percona dina Google Kubernetes Engine
Google Kubernetes Engine, dina pamanggih kuring, mangrupikeun salah sahiji palaksanaan téknologi Kubernetes anu paling fungsional. Éta sayogi di seueur daérah dunya sareng gaduh Alat Jalur Komando (SDK) anu saderhana sareng gampang, anu ngamungkinkeun anjeun nyiptakeun skrip tinimbang ngatur platform sacara manual.
Supados DBaaS urang tiasa dianggo, urang peryogi komponén ieu:
Kubectl.
Google Cloud SDK.
Percona DBaaS CLI.
Pasang kubectl
Kami masang pakét pikeun sistem operasi anjeun, kami bakal ningali conto Ubuntu. Leuwih jéntré di dieu.
Kami masang pakét parangkat lunak dina cara anu sami. Leuwih jéntré di dieu.
# 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
Masang Percona DBaaS CLI
Pasang tina repositori Percona. Percona DBaaS CLI Tool masih mangrupa produk ékspérimén, ku kituna ayana dina gudang ékspérimén, nu kudu diaktipkeun misah, sanajan anjeun geus dipasang repositories Percona.
Mimiti anjeun kedah log in kana akun Google anjeun. Salajengna, Google Cloud ngamungkinkeun hiji pangguna gaduh seueur proyék mandiri, janten anjeun kedah netepkeun proyék anu tiasa dianggo nganggo kodeu pikeun proyék ieu:
gcloud auth login
gcloud config set project hidden-brace-236921
Salajengna, urang nyieun klaster. Pikeun demo, kuring nyiptakeun klaster Kubernetes ngan ukur tilu titik - ieu mangrupikeun minimum anu diperyogikeun pikeun kasadiaan anu luhur:
Teras we nyieun ngaranspasi sarta nyieun aktip. Namespace, kasarna nyarios, ogé sapertos proyék atanapi lingkungan, tapi parantos aya di jero klaster Kubernetes. Éta bebas tina proyék Google Cloud:
Sakali kami parantos ngalangkungan sababaraha léngkah ieu, urang tiasa ngamimitian klaster tilu titik kalayan paréntah saderhana ieu:
# 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
Kumaha nyambungkeun ka klaster
Sacara standar, éta ngan sadia di jero Kubernetes. Nyaéta, éta henteu tiasa diaksés tina server ieu dimana anjeun ngajalankeun paréntah "Jieun". Pikeun nyayogikeunana, contona, pikeun tés sareng klien, anjeun kedah neraskeun palabuhan ngalangkungan Port Mapping:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Paréntah manajemén klaster canggih
Database dina IP umum
Upami anjeun hoyong solusi anu langkung permanén pikeun kasadiaan klaster, anjeun tiasa kéngingkeun alamat IP éksternal. Dina hal ieu, pangkalan data bakal tiasa diaksés ti mana waé. Ieu kirang aman, tapi mindeng leuwih merenah. Pikeun IP éksternal kami nganggo paréntah di handap ieu:
# 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
Nyetél sandi sacara eksplisit
Gantina sistem sacara acak ngahasilkeun kecap akses, anjeun tiasa nyetél sandi sacara eksplisit:
Ieu mangrupikeun solusi pikeun nguji tugas pikeun ngajantenkeun MySQL gancang sareng gampang-gancang, uji, teras mareuman atanapi dianggo pikeun pangwangunan.
Alat Percona DBaaS CLI ngabantosan anjeun ngahontal solusi sapertos DBaaS dina Kubernetes. Dina waktos anu sami, urang teras-terasan ngerjakeun fungsionalitas sareng usability na.