ڪبرنيٽس استعمال ڪندي هڪ هائبرڊ بادل ڪيئن ٺاهيو جيڪو DBaaS کي تبديل ڪري سگهي ٿو

منهنجو نالو پيٽر زيتسوف آهي، مان سي اي او آهيان، باني پيروڪا ۽ مان توهان کي ٻڌائڻ چاهيان ٿو:

  • اسان ڪيئن آيا آهيون اوپن سورس حلن مان ڊيٽابيس تائين خدمت جي طور تي؛
  • بادل ۾ ڊيٽابيس کي ترتيب ڏيڻ لاء ڪهڙا طريقا موجود آهن؛
  • ڪبرنيٽس ڪيئن DBaaS کي تبديل ڪري سگھن ٿا، وينڊرز جي انحصار کي ختم ڪرڻ ۽ خدمت جي طور تي DBMS جي سادگي کي برقرار رکڻ.

مضمون تيار ڪيو ويو هڪ رپورٽ جي بنياد تي @Databases Meetup by Mail.ru Cloud Solutions & Tarantool. جيڪڏهن توهان پڙهڻ نٿا چاهيو، توهان ڏسي سگهو ٿا:


اسان ڪئين ڪلائوڊ ۾ هڪ خدمت جي طور تي ڊيٽابيس کان اوپن سورس کان آياسين

مان 90 جي ڏهاڪي کان اوپن سورس ۾ ڪم ڪري رهيو آهيان. ويهه سال اڳ، اوپن سورس استعمال ڪرڻ، جهڙوڪ ڊيٽابيس، ايترو آسان نه هو. اهو ضروري هو ته سورس ڪوڊ ڊائون لوڊ ڪريو، ان کي پيچ ڪريو، ان کي گڏ ڪريو ۽ صرف ان کي استعمال ڪريو.

اوپن سورس پوءِ آسانيءَ جي هڪ سيريز مان گذريو:

  • Tar.gz ۽ انسٽال ڪريو ذريعن کي گڏ ڪرڻ جي ضرورت آهي؛
  • انحصار سان پيڪيجز جهڙوڪ .deb ۽ .rpm، جتي توهان کي صرف پيڪيجز جو هڪ سيٽ انسٽال ڪرڻ جي ضرورت آهي؛
  • پيڪيجز جا ذخيرا جهڙوڪ APT ۽ YUM، جن سان انسٽاليشن خودڪار آهي؛
  • حل جهڙوڪ ڊڪر ۽ سنيپ، جيڪي توهان کي انسٽاليشن ذريعي پيڪيجز وصول ڪرڻ جي اجازت ڏين ٿا بغير ڪنهن خارجي انحصار جي.

نتيجي طور، اوپن سورس سافٽ ويئر استعمال ڪرڻ آسان ٿي وڃي ٿو ۽ اهڙين ايپليڪيشنن کي ترقي ڪرڻ ۾ داخلا جي رڪاوٽ کي پڻ گھٽائي ٿو.

ساڳئي وقت، 20 سال اڳ جي صورتحال جي برعڪس، جڏهن هرڪو اسيمبليء جو ماهر هو، هاڻي اڪثر ڊولپرز اوزار ٺاهي نٿا سگهن جيڪي اهي ذريعن کان استعمال ڪندا آهن.

حقيقت ۾، اهو خراب ناهي، ڇاڪاڻ ته:

  1. اسان وڌيڪ پيچيده پر وڌيڪ صارف دوست سافٽ ويئر استعمال ڪري سگهون ٿا. مثال طور، هڪ برائوزر استعمال ڪرڻ آسان آهي، پر ان ۾ ڪيترائي اوپن سورس حصا شامل آهن ۽ شروع کان تعمير ڪرڻ ۾ تڪليف آهي.
  2. وڌيڪ ماڻهو اوپن سورس ۽ ٻين سافٽ ويئر جا ڊولپر بڻجي سگهن ٿا، وڌيڪ سافٽ ويئر ڪاروبار طرفان استعمال ڪيو ويندو آهي، ۽ ان جي ضرورت وڌيڪ آهي.

نقصان اهو آهي ته سادگي ۾ ايندڙ قدم ڪلائوڊ حلن جي استعمال سان لاڳاپيل آهي، ۽ اهو هڪ خاص وينڊر لاڪ ان ڏانهن وٺي ٿو، اهو آهي، هڪ سپلائر سان پابند. اسان سادو حل استعمال ڪندا آهيون ۽ مهيا ڪندڙ کليل ذريعو اجزاء استعمال ڪندا آهن، پر حقيقت ۾ اهي هڪ وڏي ڪڪر ڏانهن نيل آهن. اهو آهي، اوپن سورس کي ترتيب ڏيڻ جو آسان ۽ تيز ترين طريقو (۽ انهي سان مطابقت رکندڙ سافٽ ويئر) بادل ۾ آهي، هڪ ملڪيت واري API استعمال ڪندي.

جڏهن اهو بادل ۾ ڊيٽابيس ۾ اچي ٿو، اتي ٻه طريقا آهن:

  1. ڊيٽابيس جي بنيادي ڍانچي کي گڏ ڪريو، جيئن باقاعده ڊيٽا سينٽر ۾. اھو آھي، معياري بلڊنگ بلاڪ وٺو: ڪمپيوٽ، اسٽوريج، وغيره، انھن تي لينڪس ۽ ھڪڙو ڊيٽابيس انسٽال ڪريو، ۽ انھن کي ترتيب ڏيو.
  2. ڊيٽابيس کي خدمت طور استعمال ڪريو، جتي مهيا ڪندڙ بادل جي اندر تيار ڪيل ڊيٽابيس پيش ڪري ٿو.

DBaaS هن وقت تيزي سان وڌندڙ مارڪيٽ آهي ڇاڪاڻ ته اها ڊولپرز کي سڌو سنئون ڊيٽابيس سان ڪم ڪرڻ جي اجازت ڏئي ٿي ۽ معمولي ڪم کي گهٽائي ٿي. مهيا ڪندڙ اعلي دستيابي ۽ آسان اسڪيلنگ، ڊيٽابيس پيچنگ، بيڪ اپ، ۽ ڪارڪردگي ٽيوننگ کي يقيني بڻائڻ جي ذميواري ڪري ٿو.

ڊيٽابيس جا ٻه قسم هڪ خدمت جي طور تي اوپن سورس جي بنياد تي ۽ هڪ متبادل Kubernetes جي صورت ۾

کليل ڊيٽابيس لاءِ خدمت جي طور تي ڊيٽابيس جا ٻه قسم آهن:

  1. هڪ معياري اوپن سورس پراڊڪٽ جيڪا انتظامي پس منظر ۾ پيڪيج ڪئي وئي آهي آسان ترتيب ۽ انتظام لاءِ.
  2. مختلف اضافو سان گڏ هڪ ترقي يافته تجارتي حل، اوپن سورس سان هم آهنگ.

ٻئي آپشن بادلن جي وچ ۾ لڏپلاڻ جو امڪان گھٽائي ٿو ۽ ڊيٽا ۽ ايپليڪيشنن جي پورائيزيشن کي گھٽائي ٿو. مثال طور، ان حقيقت جي باوجود ته بادل جا مختلف قسم بنيادي طور تي ساڳئي معياري MySQL جي حمايت ڪن ٿا، انهن جي وچ ۾ اهم فرق آهن: آپريشن، ڪارڪردگي، بيڪ اپ وغيره. هڪ بادل کان ٻئي ڏانهن لڏڻ مشڪل ٿي سگهي ٿو، خاص طور تي پيچيده ايپليڪيشنن لاءِ.

۽ هتي سوال پيدا ٿئي ٿو - ڇا اهو ممڪن آهي ته ڊيٽابيس جي سهولت هڪ خدمت جي طور تي، پر هڪ سادي اوپن سورس حل جي طور تي؟

خراب خبر اها آهي ته، بدقسمتي سان، مارڪيٽ تي اڃا تائين ڪو به حل ناهي. سٺي خبر اها آهي ته ڪوبرنيٽس آهي، جيڪو توهان کي اهڙي حل کي لاڳو ڪرڻ جي اجازت ڏئي ٿو.

Kubernetes ڪلائوڊ يا ڊيٽا سينٽر لاءِ هڪ آپريٽنگ سسٽم آهي جيڪو توهان کي هڪ ئي ميزبان جي بجاءِ هڪ ڪلستر ۾ ڪيترن ئي سرورن تي ايپليڪيشن کي ترتيب ڏيڻ ۽ منظم ڪرڻ جي اجازت ڏئي ٿو.

هاڻي Kubernetes اهڙي سافٽ ويئر جي درجي ۾ اڳواڻ آهي. اهڙين مسئلن لاء ڪيترائي مختلف حل هئا، پر اهو معيار بڻجي ويو. ڪيتريون ئي ڪمپنيون جيڪي متبادل حل تي ڌيان ڏيڻ لاء استعمال ڪيون ويون آهن هاڻي انهن جي شين کي ترتيب ڏيڻ تي ڌيان ڏئي رهيا آهن ڪبرنيٽس کي سپورٽ ڪرڻ لاء.

ان کان علاوه، Kubernetes هڪ آفاقي حل آهي جيڪو ڪيترن ئي وينڊرز جي نجي، عوامي ۽ هائبرڊ بادل ۾ سپورٽ آهي، مثال طور: AWS، Google Cloud، Microsoft Azure، Mail.ru ڪلائوڊ حل.

ڪبرنيٽس ڊيٽابيس سان ڪيئن ڪم ڪندو آهي

Kubernetes اصل ۾ بي رياست ايپليڪيشنن لاءِ ٺاهيو ويو هو جيڪي ڊيٽا کي پروسيس ڪن ٿيون پر ڪجھ به ذخيرو نه ڪن، جهڙوڪ مائڪرو سروسز يا ويب ايپليڪيشنون. ڊيٽابيس اسپيڪٽرم جي ٻئي آخر ۾ آهن، اهو آهي، اهي رياستي ايپليڪيشنون آهن. ۽ ڪبرنيٽس اصل ۾ اهڙين ايپليڪيشنن جو مقصد نه هو.

بهرحال، اهڙا خاصيتون آهن جيڪي تازو ڪبرنيٽس ۾ ظاهر ٿيا آهن جيڪي ڊيٽابيس ۽ ٻين رياستي ايپليڪيشنن جي استعمال جي اجازت ڏين ٿيون:

  1. StatefulSet تصور پوڊ جي ڪم کي روڪڻ ۽ گريسفول شٽ ڊائون (ايپليڪيشن جي پيش گوئي شٽ ڊائون) کي لاڳو ڪرڻ بابت واقعن جي پروسيسنگ لاءِ ابتدائي سيريز جو هڪ مڪمل سلسلو آهي.
  2. مسلسل حجم ڊيٽا اسٽوريج آهن جيڪي پوڊ، ڪبرنيٽس مينيجمينٽ آبجڪس سان لاڳاپيل آهن.
  3. آپريٽر فريم ورڪ - اهو آهي، ڪيترن ئي نوڊس ۾ ورهايل ڊيٽابيس ۽ ٻين رياستي ايپليڪيشنن کي منظم ڪرڻ لاء اجزاء ٺاهڻ جي صلاحيت.

اڳ ۾ ئي هاڻي عوامي بادلن ۾ هڪ خدمت جي طور تي وڏا ڊيٽابيس آهن، جن جو پس منظر آهي ڪبرنيٽس، مثال طور: CockroachCloud، InfluxDB، PlanetScale. اهو آهي، ڪبرنيٽس تي هڪ ڊيٽابيس نه رڳو اهو آهي جيڪو نظرياتي طور تي ممڪن آهي، پر اهو پڻ آهي جيڪو عملي طور تي ڪم ڪري ٿو.

Percona وٽ ٻه اوپن سورس حل آهن ڪبرنيٽس لاءِ:

  1. MongoDB لاءِ Percona سرور لاءِ Kubernetes آپريٽر.
  2. ڪبرنيٽس آپريٽر XtraDB CLUSTER لاءِ هڪ خدمت آهي جيڪا MySQL سان مطابقت رکي ٿي ۽ اعليٰ دستيابي ۽ استحڪام فراهم ڪري ٿي. توهان هڪ واحد نوڊ پڻ استعمال ڪري سگهو ٿا جيڪڏهن اعلي دستيابي جي ضرورت ناهي، مثال طور هڪ ديو ڊيٽابيس لاء.

Kubernetes استعمال ڪندڙن کي ٻن گروپن ۾ ورهائي سگھجي ٿو. ڪجهه ماڻهو ڪبرنيٽس آپريٽرز سڌو سنئون استعمال ڪندا آهن - اهي بنيادي طور تي ترقي يافته استعمال ڪندڙ آهن جن کي سٺي ڄاڻ آهي ته ٽيڪنالاجي ڪيئن ڪم ڪري ٿي. ٻيا ان کي پس منظر تي هلائيندا آهن - اهڙا استعمال ڪندڙ ڪنهن شيءَ ۾ دلچسپي رکن ٿا جهڙوڪ ڊيٽابيس هڪ خدمت جي طور تي، اهي نه ٿا چاهين ته ڪبرنيٽس جي nuances ۾ delve ڪرڻ چاهيو ٿا. صارفين جي ٻئي گروپ لاء، اسان وٽ هڪ ٻيو اوپن سورس حل آهي - Percona DBaaS CLI اوزار. اھو ھڪڙو تجرباتي حل آھي انھن لاءِ جيڪي حاصل ڪرڻ چاھين ٿا اوپن سورس DBaaS حاصل ڪرڻ لاءِ Kubernetes جي بنياد تي ٽيڪنالاجي جي گھڻي سمجھ کان سواءِ.

گوگل ڪبرنيٽس انجڻ تي Percona جي DBaaS کي ڪيئن هلائڻ

Google Kubernetes Engine، منهنجي خيال ۾، Kubernetes ٽيڪنالاجي جي سڀ کان وڌيڪ فعال عملن مان هڪ آهي. اهو دنيا جي ڪيترن ئي علائقن ۾ موجود آهي ۽ هڪ سادو ۽ آسان ڪمانڊ لائين ٽول (SDK) آهي، جيڪو توهان کي پليٽ فارم کي دستي طور تي منظم ڪرڻ بجاءِ اسڪرپٽ ٺاهڻ جي اجازت ڏئي ٿو.

اسان جي DBaaS کي ڪم ڪرڻ لاء، اسان کي هيٺين حصن جي ضرورت آهي:

  1. ڪبيڪٽل.
  2. Google Cloud SDK.
  3. Percona DBaaS CLI.

انسٽال ڪريو kubectl

اسان توهان جي آپريٽنگ سسٽم لاءِ پيڪيج انسٽال ڪريون ٿا، اسان ڏسنداسين Ubuntu جو مثال. وڌيڪ تفصيل هتي.

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

Google Cloud SDK انسٽال ڪرڻ

اسان سافٽ ويئر پيڪيج کي ساڳئي طريقي سان انسٽال ڪريون ٿا. وڌيڪ تفصيل هتي.

# 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

Percona repositories مان انسٽال ڪريو. Percona DBaaS CLI اوزار اڃا تائين هڪ تجرباتي پراڊڪٽ آهي، تنهنڪري اهو تجرباتي مخزن ۾ واقع آهي، جنهن کي الڳ الڳ فعال ڪيو وڃي، جيتوڻيڪ توهان وٽ اڳ ۾ ئي Percona ريپوزٽريون نصب ٿيل آهن.

وڌيڪ هتي.

انسٽاليشن الگورتھم:

  1. Percona-رليز اوزار استعمال ڪندي Percona repositories سيٽ اپ ڪريو. پهرين توهان کي ڊائون لوڊ ۽ انسٽال ڪرڻ جي ضرورت آهي سرڪاري پرڪونا-رليز پيڪيج Percona کان:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. تجرباتي اوزار جي مخزن واري حصي کي ھيٺ ڏنل طور تي فعال ڪريو:
    sudo percona-release enable tools experimental
    
  3. انسٽال ڪريو percona-dbaas-cli پيڪيج:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

اجزاء جي آپريشن کي ترتيب ڏيڻ

سيٽنگون بابت وڌيڪ هتي.

پهرين توهان کي پنهنجي گوگل اڪائونٽ ۾ لاگ ان ڪرڻ جي ضرورت آهي. وڌيڪ، گوگل ڪلائوڊ هڪ صارف کي ڪيترن ئي آزاد منصوبن جي اجازت ڏئي ٿو، تنهنڪري توهان کي هن منصوبي لاء ڪوڊ استعمال ڪندي ڪم ڪندڙ منصوبي جي وضاحت ڪرڻ جي ضرورت آهي:

gcloud auth login
gcloud config set project hidden-brace-236921

اڳيون، اسان هڪ ڪلستر ٺاهيندا آهيون. ڊيمو لاءِ، مون صرف ٽن نوڊس جو ڪبرنيٽس ڪلستر ٺاھيو - اھو آھي گھٽ ۾ گھٽ گھربل اعلي دستيابي لاءِ:

gcloud container clusters create --zone us-central1-a your-cluster-name --cluster-version 1.15 --num-nodes=3

هيٺ ڏنل kubectl حڪم اسان جي موجوده صارف کي گهربل امتياز ڏئي ٿو:

kubectl create clusterrolebinding cluster-admin-binding-$USER 
--clusterrole=cluster-admin --user=$(gcloud config get-value core/account)

ان کان پوء اسان هڪ نالي جي جاء ٺاهي ۽ ان کي فعال ڪيو. Namespace آهي، تقريبن ڳالهائڻ، پڻ هڪ پروجيڪٽ يا ماحول وانگر، پر اڳ ۾ ئي ڪبرنيٽس ڪلستر جي اندر. اهو Google Cloud منصوبن کان آزاد آهي:

kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace

ڪلستر جي شروعات

هڪ دفعو اسان انهن چند مرحلن مان گذري چڪا آهيون، اسان هن سادي حڪم سان ٽي نوڊ ڪلستر شروع ڪري سگهون ٿا:

# 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

ڪلستر سان ڪيئن ڳنڍجي

ڊفالٽ طور، اهو صرف اندر موجود آهي Kubernetes. اهو آهي، اهو هن سرور کان دستياب ناهي جنهن مان توهان "ٺاهيو" حڪم هلائي. ان کي دستياب ڪرڻ لاءِ، مثال طور، ڪلائنٽ سان ٽيسٽن لاءِ، توهان کي پورٽ ميپنگ ذريعي پورٽ کي اڳتي وڌائڻ جي ضرورت آهي:

kubectl port-forward svc/example-proxysql 3306:3306 $

پوء اسان توهان جي MySQL ڪلائنٽ کي ڳنڍيندا آهيون:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

ترقي يافته ڪلستر مينيجمينٽ حڪم

عوامي IP تي ڊيٽابيس

جيڪڏھن توھان چاھيو ٿا وڌيڪ مستقل حل ڪلستر جي دستيابي لاءِ، توھان حاصل ڪري سگھو ٿا ھڪ خارجي IP پتو. انهي صورت ۾، ڊيٽابيس هر هنڌ کان دستياب ٿي ويندي. اهو گهٽ محفوظ آهي، پر اڪثر وڌيڪ آسان. ٻاهرين IP لاءِ اسان هيٺ ڏنل حڪم استعمال ڪريون ٿا:

# 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

واضح طور تي پاسورڊ سيٽ ڪريو

سسٽم جي بدران بي ترتيب سان پاسورڊ ٺاهي، توهان واضح طور تي پاسورڊ سيٽ ڪري سگهو ٿا:

# 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

مان ڏيکاري رهيو آهيان اسڪرپٽس جو آئوٽ پٽ انساني پڙهڻ جي قابل فارميٽ ۾، پر JSON فارميٽ پڻ سپورٽ آهي.

اعلي دستيابي کي بند ڪرڻ

ھيٺ ڏنل حڪم سان توھان ھڪڙي نوڊ کي ترتيب ڏيڻ لاء اعلي دستيابي کي بند ڪري سگھو ٿا:

# 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

هي هڪ حل آهي ٽيسٽنگ ڪمن لاءِ MySQL کي حاصل ڪرڻ ۽ هلائڻ لاءِ جيترو جلدي ۽ آساني سان، ان کي آزمايو، ۽ پوءِ ان کي بند ڪريو يا ترقي لاءِ استعمال ڪريو.

Percona DBaaS CLI اوزار توھان کي ڪبرنيٽس تي DBaaS جھڙو حل حاصل ڪرڻ ۾ مدد ڪري ٿو. ساڳئي وقت، اسان ان جي ڪارڪردگي ۽ استعمال تي ڪم جاري رکون ٿا.

هي رپورٽ پهريون ڀيرو پيش ڪئي وئي @Databases Meetup طرفان Mail.ru Cloud Solutions&Tarantool. ڏس видео ٻين پرفارمنس ۽ ٽيليگرام تي واقعن جي اعلانن جي رڪنيت حاصل ڪريو Mail.ru گروپ تي ڪبرنيٽس جي چوڌاري.

موضوع تي ٻيو ڇا پڙهو:

  1. جديد IIoT پليٽ فارم ۾ ڊيٽابيس.
  2. هڪ منصوبي لاءِ ڊيٽابيس ڪيئن چونڊيو ته جيئن توهان کي ٻيهر چونڊڻ جي ضرورت ناهي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو