carane Kubernetes bisa ngganti DBaaS, mbusak katergantungan vendor lan njaga gamblang DBMS minangka layanan.
Artikel kasebut disiapake adhedhasar laporan ing @Databases Meetup dening Mail.ru Cloud Solutions & Tarantool. Yen sampeyan ora pengin maca, sampeyan bisa nonton:
Aku wis kerja ing open source wiwit pungkasan 90s. Rong puluh taun kepungkur, nggunakake open source, kayata database, ora gampang. Sampeyan kudu ndownload kode sumber, tembelan, ngumpulake lan mung nggunakake.
Open source banjur ngliwati seri simplifikasi:
Tar.gz lan INSTALL sumber sing perlu kanggo disusun;
paket karo dependensi kaya .deb lan .rpm, ngendi sampeyan mung kudu nginstal pesawat saka paket;
repositori paket kaya APT lan YUM, kanthi instalasi otomatis;
solusi kayata Docker lan Snap, sing ngidini sampeyan nampa paket kanthi instalasi tanpa dependensi eksternal.
Ing wektu sing padha, ora kaya kahanan 20 taun kepungkur, nalika kabeh wong dadi pakar perakitan, saiki umume pangembang ora bisa nggawe alat sing digunakake saka sumber.
Nyatane, iki ora ala, amarga:
Kita bisa nggunakake piranti lunak sing luwih rumit nanging luwih gampang digunakake. Contone, browser trep kanggo nggunakake, nanging kalebu akeh komponen open source lan ora trep kanggo mbangun saka ngeruk.
Luwih akeh wong bisa dadi pangembang open source lan piranti lunak liyane, luwih akeh piranti lunak digunakake dening bisnis, lan kabutuhan luwih akeh.
Nalika nerangake database ing awan, ana rong pendekatan:
Nglumpukake infrastruktur database, kaya ing pusat data biasa. Yaiku, njupuk blok bangunan standar: ngitung, panyimpenan, lan liya-liyane, instal Linux lan database, banjur atur.
Gunakake Database minangka Layanan, ing ngendi panyedhiya nawakake database sing wis siap ing njero awan.
DBaaS minangka pasar sing berkembang kanthi cepet amarga ngidini pangembang bisa kerja langsung karo database lan nyilikake karya rutin. Panyedhiya nindakake kanggo njamin Kasedhiyan Dhuwur lan skala gampang, patching database, serep, lan tuning kinerja.
Rong jinis Database minangka Layanan adhedhasar open source lan alternatif ing wangun Kubernetes
Ana rong jinis Database minangka Layanan kanggo database mbukak:
Produk open source standar sing dikemas ing backend administrasi kanggo penyebaran lan manajemen sing gampang.
Solusi komersial canggih kanthi macem-macem tambahan, kompatibel karo open source.
Kaloro opsi kasebut nyuda kemungkinan migrasi ing antarane awan lan nyuda portabilitas data lan aplikasi. Contone, senadyan kasunyatan manawa macem-macem jinis awan ndhukung MySQL standar sing padha, ana bedane sing signifikan ing antarane: ing operasi, kinerja, serep, lan liya-liyane. Migrasi saka siji awan menyang awan liyane bisa dadi tantangan, utamane kanggo aplikasi sing rumit.
Lan ing kene ana pitakonan - apa bisa entuk kenyamanan Database minangka Layanan, nanging minangka solusi open source sing prasaja?
Kubernetes minangka sistem operasi kanggo awan utawa pusat data sing ngidini sampeyan nyebarake lan ngatur aplikasi ing sawetara server ing kluster tinimbang ing host siji.
Saiki Kubernetes dadi pimpinan ing kategori piranti lunak kasebut. Ana macem-macem solusi kanggo masalah kasebut, nanging dadi standar. Akeh perusahaan sing biyen fokus ing solusi alternatif saiki fokus ing adaptasi produk kanggo ndhukung Kubernetes.
Kajaba iku, Kubernetes minangka solusi universal sing didhukung ing awan pribadi, umum lan hibrida saka akeh vendor, contone: AWS, Google Cloud, Microsoft Azure, Solusi Cloud Mail.ru.
Carane Kubernetes dianggo karo database
Kubernetes wiwitane dirancang kanggo aplikasi stateless sing ngolah data nanging ora nyimpen apa-apa, kayata layanan mikro utawa aplikasi web. Database ana ing ujung liyane saka spektrum, yaiku, aplikasi stateful. Lan Kubernetes asline ora dimaksudake kanggo aplikasi kasebut.
Nanging, ana fitur sing muncul ing Kubernetes bubar sing ngidini panggunaan database lan aplikasi stateful liyane:
Konsep StatefulSet minangka seri kabeh primitif kanggo ngolah acara babagan mungkasi karya pods lan ngleksanakake Graceful Shutdown (mati sing bisa diprediksi saka aplikasi).
Volume terus-terusan yaiku nyimpen data sing ana gandhengane karo polong, obyek manajemen Kubernetes.
Kerangka Operator - yaiku, kemampuan kanggo nggawe komponen kanggo ngatur database lan aplikasi stateful liyane sing disebarake ing akeh simpul.
Saiki ing awan umum ana Database gedhe minangka Layanan, sing mburi yaiku Kubernetes, contone: CockroachCloud, InfluxDB, PlanetScale. Tegese, database ing Kubernetes ora mung sing bisa ditindakake kanthi teoritis, nanging uga ana sing bisa ditindakake.
Percona duwe rong solusi open source kanggo Kubernetes:
Operator Kubernetes kanggo Server Percona kanggo MongoDB.
Operator Kubernetes kanggo XtraDB CLUSTER minangka layanan sing kompatibel karo MySQL lan nyedhiyakake kasedhiyan lan konsistensi sing dhuwur. Sampeyan uga bisa nggunakake simpul siji yen kasedhiyan dhuwur ora dibutuhake, contone kanggo database dev.
Carane mbukak DBaaS Percona ing Google Kubernetes Engine
Google Kubernetes Engine, miturut pendapatku, minangka salah sawijining implementasi teknologi Kubernetes sing paling fungsional. Kasedhiya ing pirang-pirang wilayah ing donya lan nduweni Alat Command Line (SDK) sing prasaja lan trep, sing ngidini sampeyan nggawe skrip tinimbang ngatur platform kanthi manual.
Supaya DBaaS bisa digunakake, kita butuh komponen ing ngisor iki:
Kubectl.
Google Cloud SDK.
Percona DBaaS CLI.
Instal kubectl
Kita nginstal paket kanggo sistem operasi sampeyan, kita bakal ndeleng conto Ubuntu. rincian liyane kene.
Kita nginstal paket piranti lunak kanthi cara sing padha. rincian liyane kene.
# 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
Nginstal Percona DBaaS CLI
Instal saka repositori Percona. Percona DBaaS CLI Tool isih minangka produk eksperimen, mula dumunung ing gudang eksperimen, sing kudu diaktifake kanthi kapisah, sanajan sampeyan wis nginstal repositori Percona.
Pisanan sampeyan kudu mlebu menyang akun Google. Salajengipun, Google Cloud ngidini siji pangguna duwe akeh proyek independen, dadi sampeyan kudu nemtokake proyek sing digunakake nggunakake kode kanggo proyek iki:
gcloud auth login
gcloud config set project hidden-brace-236921
Sabanjure, kita nggawe kluster. Kanggo demo, aku nggawe klompok Kubernetes mung telung simpul - iki minangka minimal sing dibutuhake kanggo kasedhiyan dhuwur:
Banjur kita nggawe namespace lan nggawe aktif. Namespace, kira-kira, uga kaya proyek utawa lingkungan, nanging wis ana ing kluster Kubernetes. Iki independen saka proyek Google Cloud:
Sawise kita wis ngliwati sawetara langkah iki, kita bisa miwiti kluster telung simpul kanthi printah prasaja iki:
# 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
Carane nyambungake menyang kluster
Kanthi gawan, iku mung kasedhiya ing Kubernetes. Yaiku, ora bisa diakses saka server iki saka ngendi sampeyan mbukak printah "Gawe". Kanggo kasedhiya, contone, kanggo tes karo klien, sampeyan kudu nerusake port liwat Port Mapping:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
printah Manajemen cluster Lanjut
Database ing IP umum
Yen sampeyan pengin solusi sing luwih permanen kanggo kasedhiyan kluster, sampeyan bisa njaluk alamat IP eksternal. Ing kasus iki, database bakal bisa diakses saka ngendi wae. Iki kurang aman, nanging asring luwih trep. Kanggo IP eksternal kita nggunakake printah ing ngisor iki:
# 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
Nyetel sandhi kanthi jelas
Tinimbang sistem nggawe tembung sandhi kanthi acak, sampeyan bisa nyetel sandhi kanthi tegas: