ProHoster > Blog > Ma'muriyat > DBaaS o'rnini bosadigan Kubernetes yordamida gibrid bulutni qanday qurish mumkin
DBaaS o'rnini bosadigan Kubernetes yordamida gibrid bulutni qanday qurish mumkin
Mening ismim Petr Zaitsev, men bosh direktor, asoschiman Perkona va men sizga aytmoqchiman:
qanday qilib biz ochiq manbali yechimlardan ma'lumotlar bazasiga xizmat sifatida keldik;
bulutda ma'lumotlar bazalarini joylashtirish uchun qanday yondashuvlar mavjud;
Qanday qilib Kubernetes DBaaS o'rnini bosishi mumkin, sotuvchiga bog'liqlikni yo'q qiladi va ma'lumotlar bazasi ma'lumotlar bazasining xizmat sifatida soddaligini saqlab qoladi.
Maqola Mail.ru Cloud Solutions & Tarantool tomonidan @Database Meetup’dagi hisobot asosida tayyorlangan. Agar o'qishni xohlamasangiz, tomosha qilishingiz mumkin:
Qanday qilib biz ochiq manbadan ma'lumotlar bazasiga bulutdagi xizmat sifatida keldik
Men 90-yillarning oxiridan beri ochiq manbada ishlayapman. Yigirma yil oldin ma'lumotlar bazalari kabi ochiq manbalardan foydalanish unchalik oson emas edi. Manba kodini yuklab olish, uni tuzatish, kompilyatsiya qilish va shundan keyingina foydalanish kerak edi.
Keyin ochiq manba bir qator soddalashtirishlardan o'tdi:
Tar.gz va kompilyatsiya qilinishi kerak bo'lgan INSTALL manbalari;
.deb va .rpm kabi bog'liqliklari bo'lgan paketlar, bu erda siz faqat paketlar to'plamini o'rnatishingiz kerak;
o'rnatish avtomatik amalga oshiriladigan APT va YUM kabi paketlar omborlari;
tashqi bog'liqliklarsiz o'rnatish orqali paketlarni qabul qilish imkonini beruvchi Docker va Snap kabi echimlar.
Natijada, ochiq kodli dasturiy ta'minotdan foydalanish osonroq bo'ladi, shuningdek, bunday ilovalarni ishlab chiqishga kirish uchun to'siqni kamaytiradi.
Shu bilan birga, 20 yil oldingi vaziyatdan farqli o'laroq, har bir kishi montaj bo'yicha mutaxassis bo'lganida, endi ko'pchilik ishlab chiquvchilar o'zlari foydalanadigan vositalarni manbadan qura olmaydilar.
Aslida, bu yomon emas, chunki:
Biz murakkabroq, lekin foydalanuvchilarga qulayroq dasturlardan foydalanishimiz mumkin. Misol uchun, brauzerdan foydalanish qulay, lekin u ko'plab ochiq manba komponentlarini o'z ichiga oladi va noldan qurish uchun noqulay.
Ko'proq odamlar ochiq kodli va boshqa dasturiy ta'minotni ishlab chiquvchilari bo'lishlari mumkin, korxonalar ko'proq dasturiy ta'minotdan foydalanadilar va unga bo'lgan ehtiyoj kattaroq.
Salbiy tomoni shundaki, soddalashtirishning keyingi bosqichi bulutli echimlardan foydalanish bilan bog'liq va bu ma'lum bir sotuvchining bloklanishiga, ya'ni bitta yetkazib beruvchiga bog'lanishiga olib keladi. Biz oddiy echimlardan foydalanamiz va provayderlar ochiq manba komponentlaridan foydalanadilar, lekin aslida ular katta bulutlardan biriga mixlangan. Ya'ni, ochiq manbani (va unga mos keladigan dasturiy ta'minotni) o'rnatishning eng oson va tezkor usuli - bu xususiy API yordamida bulutlarda.
Bulutdagi ma'lumotlar bazalari haqida gap ketganda, ikkita yondashuv mavjud:
Oddiy ma'lumotlar markazidagi kabi ma'lumotlar bazasi infratuzilmasini yig'ing. Ya'ni, standart qurilish bloklarini oling: hisoblash, saqlash va hokazo, ularga Linux va ma'lumotlar bazasini o'rnating va ularni sozlang.
Provayder bulut ichida tayyor ma'lumotlar bazasini taklif qiladigan ma'lumotlar bazasidan xizmat sifatida foydalaning.
DBaaS hozirda tez rivojlanayotgan bozor, chunki u ishlab chiquvchilarga maʼlumotlar bazalari bilan bevosita ishlash imkonini beradi va muntazam ishlarni minimallashtiradi. Provayder yuqori mavjudlik va oson masshtablash, ma'lumotlar bazasini tuzatish, zaxira nusxalarini yaratish va ishlashni sozlashni ta'minlash majburiyatini oladi.
Ochiq manbaga asoslangan xizmat sifatida ikki turdagi ma'lumotlar bazasi va Kubernetes ko'rinishidagi muqobil
Ochiq ma'lumotlar bazalari uchun xizmat sifatida ikki xil ma'lumotlar bazasi mavjud:
Oson tarqatish va boshqarish uchun ma'muriyat orqa tomonida paketlangan standart ochiq manba mahsuloti.
Ochiq manba bilan mos keladigan turli xil qo'shimchalar bilan rivojlangan tijorat yechimi.
Ikkala variant ham bulutlar o'rtasida ko'chish imkoniyatini kamaytiradi va ma'lumotlar va ilovalarning ko'chirish qobiliyatini kamaytiradi. Misol uchun, har xil turdagi bulutlar bir xil standart MySQL-ni qo'llab-quvvatlashiga qaramay, ular o'rtasida sezilarli farqlar mavjud: ishlash, ishlash, zaxiralash va boshqalar. Bir bulutdan boshqasiga o'tish, ayniqsa murakkab ilovalar uchun qiyin bo'lishi mumkin.
Va bu erda savol tug'iladi - Ma'lumotlar bazasini Xizmat sifatida, lekin oddiy ochiq manba echimi sifatida olish mumkinmi?
Yomon xabar shundaki, afsuski, bozorda hali bunday echimlar yo'q. Yaxshi xabar shundaki, bunday echimlarni amalga oshirishga imkon beruvchi Kubernetes mavjud.
Kubernetes bulut yoki maʼlumotlar markazi uchun operatsion tizim boʻlib, u sizga ilovani bitta xostda emas, balki klasterdagi bir nechta serverlarda joylashtirish va boshqarish imkonini beradi.
Endi Kubernetes bunday dasturiy ta'minot toifasida yetakchi hisoblanadi. Bunday muammolar uchun juda ko'p turli xil echimlar mavjud edi, ammo bu standart bo'ldi. Ilgari muqobil echimlarga e'tibor qaratgan ko'plab kompaniyalar endi Kubernetes-ni qo'llab-quvvatlash uchun o'z mahsulotlarini moslashtirishga e'tibor qaratmoqda.
Bundan tashqari, Kubernetes ko'plab sotuvchilarning shaxsiy, ommaviy va gibrid bulutlarida qo'llab-quvvatlanadigan universal echimdir, masalan: AWS, Google Cloud, Microsoft Azure, Mail.ru bulutli echimlar.
Kubernetes ma'lumotlar bazalari bilan qanday ishlaydi
Kubernetes dastlab ma'lumotlarni qayta ishlaydigan, lekin mikroservislar yoki veb-ilovalar kabi hech narsani saqlamaydigan fuqaroligi bo'lmagan ilovalar uchun mo'ljallangan. Ma'lumotlar bazalari spektrning boshqa uchida joylashgan, ya'ni ular statistik ilovalardir. Va Kubernetes dastlab bunday ilovalar uchun mo'ljallanmagan.
Biroq, Kubernetes-da yaqinda paydo bo'lgan ma'lumotlar bazalari va boshqa statistik ilovalardan foydalanishga imkon beruvchi xususiyatlar mavjud:
StatefulSet kontseptsiyasi podkastlarning ishini to'xtatish va Graceful Shutdown (ilovani oldindan aytib bo'ladigan o'chirish) ni amalga oshirish bilan bog'liq voqealarni qayta ishlash uchun primitivlarning butun seriyasidir.
Doimiy hajmlar - bu podlar, Kubernetes boshqaruv ob'ektlari bilan bog'langan ma'lumotlar do'konlari.
Operator Framework - bu ko'plab tugunlar bo'ylab taqsimlangan ma'lumotlar bazalari va boshqa davlat dasturlarini boshqarish uchun komponentlarni yaratish qobiliyati.
Hozirda ommaviy bulutlarda xizmat sifatida katta ma'lumotlar bazalari mavjud bo'lib, ularning orqa tomoni Kubernetes, masalan: CockroachCloud, InfluxDB, PlanetScale. Ya'ni, Kubernetesdagi ma'lumotlar bazasi nafaqat nazariy jihatdan mumkin bo'lgan narsa, balki amalda ham ishlaydi.
Percona Kubernetes uchun ikkita ochiq manbali echimga ega:
MongoDB uchun Percona serveri uchun Kubernetes operatori.
XtraDB CLUSTER uchun Kubernetes Operator bu MySQL bilan mos keladigan va yuqori mavjudlik va izchillikni ta'minlaydigan xizmatdir. Agar yuqori mavjudlik kerak bo'lmasa, masalan, ishlab chiqaruvchi ma'lumotlar bazasi uchun bitta tugunni ham ishlatishingiz mumkin.
Kubernetes foydalanuvchilarini ikki guruhga bo'lish mumkin. Ba'zi odamlar Kubernetes Operatorlaridan to'g'ridan-to'g'ri foydalanadilar - bular asosan texnologiya qanday ishlashini yaxshi tushunadigan ilg'or foydalanuvchilardir. Boshqalar uni backendda ishlaydi - bunday foydalanuvchilar ma'lumotlar bazasi xizmat sifatida qiziqishadi, ular Kubernetesning nuanslarini o'rganishni xohlamaydilar. Ikkinchi guruh foydalanuvchilar uchun bizda yana bir ochiq manbali yechim bor - Percona DBaaS CLI Tool. Bu texnologiyani chuqur tushunmagan holda Kubernetes asosidagi ochiq manba DBaaS ni olishni istaganlar uchun eksperimental yechimdir.
Google Kubernetes Engine-da Percona-ning DBaaS-ni qanday ishlatish kerak
Google Kubernetes Engine, mening fikrimcha, Kubernetes texnologiyasining eng funktsional ilovalaridan biri. U dunyoning ko'plab mintaqalarida mavjud va oddiy va qulay buyruq qatori vositasiga (SDK) ega bo'lib, platformani qo'lda boshqarish o'rniga skriptlarni yaratish imkonini beradi.
Bizning DBaaS ishlashi uchun bizga quyidagi komponentlar kerak bo'ladi:
Kubectl.
Google Cloud SDK.
Percona DBaaS CLI.
kubectl-ni o'rnating
Sizning operatsion tizimingiz uchun paketni o'rnatamiz, biz Ubuntu misolini ko'rib chiqamiz. Batafsil shu yerda.
Dastur paketini xuddi shu tarzda o'rnatamiz. Batafsil ma'lumot shu yerda.
# 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
Percona DBaaS CLI o'rnatilmoqda
Percona omborlaridan o'rnating. Percona DBaaS CLI Tool hali ham eksperimental mahsulot bo‘lib qolmoqda, shuning uchun u tajriba omborida joylashgan bo‘lib, sizda Percona omborlari allaqachon o‘rnatilgan bo‘lsa ham alohida yoqilishi kerak.
Percona repozitariylarini percona-release vositasidan foydalanib o'rnating. Avval Percona-dan rasmiy percona-reliz paketini yuklab olishingiz va o'rnatishingiz kerak:
Avval siz Google hisobingizga kirishingiz kerak. Bundan tashqari, Google Cloud bir foydalanuvchiga ko'plab mustaqil loyihalarga ega bo'lish imkonini beradi, shuning uchun siz ushbu loyiha uchun kod yordamida ishlaydigan loyihani belgilashingiz kerak:
gcloud auth login
gcloud config set project hidden-brace-236921
Keyinchalik, biz klaster yaratamiz. Namoyish uchun men faqat uchta tugundan iborat Kubernetes klasterini yaratdim - bu yuqori mavjudlik uchun minimal talab:
Keyin nomlar maydoni yaratamiz va uni faol qilamiz. Nomlar maydoni, taxminan, loyiha yoki muhit kabi, lekin allaqachon Kubernetes klasterida. U Google Cloud loyihalaridan mustaqil:
Ushbu bir necha bosqichlarni bajarganimizdan so'ng, biz ushbu oddiy buyruq bilan uchta tugunli klasterni boshlashimiz mumkin:
# 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
Klasterga qanday ulanish mumkin
Odatiy bo'lib, u faqat Kubernetes ichida mavjud. Ya'ni, siz "Yaratish" buyrug'ini ishga tushirgan ushbu serverdan unga kirish imkoni yo'q. Uni mavjud qilish uchun, masalan, mijoz bilan testlar uchun, siz portni Port Mapping orqali yo'naltirishingiz kerak:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Kengaytirilgan klasterni boshqarish buyruqlari
Umumiy IP bo'yicha ma'lumotlar bazasi
Agar siz klaster mavjudligi uchun doimiyroq yechimni istasangiz, tashqi IP manzilini olishingiz mumkin. Bunday holda, ma'lumotlar bazasiga istalgan joydan kirish mumkin bo'ladi. Bu kamroq xavfsiz, lekin ko'pincha qulayroq. Tashqi IP uchun biz quyidagi buyruqdan foydalanamiz:
# 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
Parolni aniq belgilang
Tizim tasodifiy parol yaratish o'rniga, siz parolni aniq belgilashingiz mumkin:
Bu MySQL-ni imkon qadar tez va oson ishga tushirish, sinovdan o'tkazish va keyin uni o'chirish yoki ishlab chiqish uchun ishlatish uchun sinov vazifalari uchun yechimdir.
Percona DBaaS CLI vositasi Kubernetes-da DBaaS-ga o'xshash yechimga erishishga yordam beradi. Shu bilan birga, biz uning funksionalligi va qulayligi ustida ishlashda davom etamiz.