کبرنیٹس کا استعمال کرتے ہوئے ایک ہائبرڈ کلاؤڈ کیسے بنایا جائے جو DBaaS کی جگہ لے سکے۔

میرا نام Petr Zaitsev ہے، میں CEO ہوں، بانی ہوں۔ پرکونا اور میں آپ کو بتانا چاہتا ہوں:

  • ہم اوپن سورس سلوشنز سے بطور سروس ڈیٹا بیس تک کیسے آئے۔
  • کلاؤڈ میں ڈیٹا بیس کی تعیناتی کے لیے کیا نقطہ نظر موجود ہیں؛
  • کس طرح Kubernetes DBaaS کی جگہ لے سکتا ہے، وینڈر پر انحصار کو ختم کرتا ہے اور DBMS کی سادگی کو بطور سروس برقرار رکھتا ہے۔

یہ مضمون Mail.ru Cloud Solutions & Tarantool کی طرف سے @Databases Meetup پر ایک رپورٹ کی بنیاد پر تیار کیا گیا تھا۔ اگر آپ پڑھنا نہیں چاہتے تو آپ دیکھ سکتے ہیں:


ہم کلاؤڈ میں بطور سروس اوپن سورس سے ڈیٹا بیس تک کیسے آئے

میں 90 کی دہائی کے آخر سے اوپن سورس میں کام کر رہا ہوں۔ بیس سال پہلے اوپن سورس جیسے ڈیٹا بیس کا استعمال اتنا آسان نہیں تھا۔ سورس کوڈ کو ڈاؤن لوڈ کرنا، اسے پیچ کرنا، اسے مرتب کرنا اور اس کے بعد ہی اسے استعمال کرنا ضروری تھا۔

اوپن سورس پھر آسانیاں کی ایک سیریز سے گزرا:

  • Tar.gz اور انسٹال ذرائع جو مرتب کرنے کی ضرورت ہے۔
  • انحصار کے ساتھ پیکجز جیسے .deb اور .rpm، جہاں آپ کو صرف پیکجوں کا ایک سیٹ انسٹال کرنے کی ضرورت ہے۔
  • APT اور YUM جیسے پیکیج ریپوزٹریز، جن کے ساتھ انسٹالیشن خودکار ہے۔
  • ڈوکر اور اسنیپ جیسے حل، جو آپ کو بیرونی انحصار کے بغیر انسٹالیشن کے ذریعے پیکیجز وصول کرنے کی اجازت دیتے ہیں۔

نتیجے کے طور پر، اوپن سورس سافٹ ویئر استعمال کرنا آسان ہو جاتا ہے اور اس طرح کی ایپلی کیشنز تیار کرنے میں داخلے کی رکاوٹ کو بھی کم کرتا ہے۔

ایک ہی وقت میں، 20 سال پہلے کے حالات کے برعکس، جب ہر کوئی اسمبلی ماہر تھا، اب زیادہ تر ڈویلپر اپنے ذریعہ سے استعمال کردہ ٹولز نہیں بنا سکتے۔

حقیقت میں، یہ برا نہیں ہے، کیونکہ:

  1. ہم زیادہ پیچیدہ لیکن زیادہ صارف دوست سافٹ ویئر استعمال کر سکتے ہیں۔ مثال کے طور پر، ایک براؤزر استعمال کرنے میں آسان ہے، لیکن اس میں بہت سے اوپن سورس اجزاء شامل ہیں اور شروع سے بنانے میں تکلیف نہیں ہے۔
  2. زیادہ سے زیادہ لوگ اوپن سورس اور دیگر سافٹ ویئر کے ڈویلپر بن سکتے ہیں، کاروبار کے ذریعے زیادہ سافٹ ویئر استعمال کیے جاتے ہیں، اور اس کی ضرورت زیادہ ہے۔

منفی پہلو یہ ہے کہ آسان بنانے کا اگلا مرحلہ کلاؤڈ سلوشنز کے استعمال سے وابستہ ہے، اور یہ ایک مخصوص وینڈر لاک ان کی طرف لے جاتا ہے، یعنی ایک سپلائر کا پابند ہونا۔ ہم سادہ حل استعمال کرتے ہیں اور فراہم کنندگان اوپن سورس اجزاء استعمال کرتے ہیں، لیکن درحقیقت وہ بڑے بادلوں میں سے ایک پر کیلوں سے جڑے ہوئے ہیں۔ یعنی اوپن سورس (اور اس کے ساتھ ہم آہنگ سافٹ ویئر) کی تعیناتی کا سب سے آسان اور تیز ترین طریقہ ایک ملکیتی API کا استعمال کرتے ہوئے بادلوں میں ہے۔

جب کلاؤڈ میں ڈیٹا بیس کی بات آتی ہے تو، دو طریقے ہیں:

  1. ڈیٹا بیس کے بنیادی ڈھانچے کو جمع کریں، جیسا کہ ایک باقاعدہ ڈیٹا سینٹر میں ہوتا ہے۔ یعنی معیاری بلڈنگ بلاکس لیں: کمپیوٹ، سٹوریج وغیرہ، ان پر لینکس اور ڈیٹا بیس انسٹال کریں، اور انہیں کنفیگر کریں۔
  2. ڈیٹا بیس کو بطور سروس استعمال کریں، جہاں فراہم کنندہ کلاؤڈ کے اندر ایک ریڈی میڈ ڈیٹا بیس پیش کرتا ہے۔

DBaaS اس وقت تیزی سے بڑھتی ہوئی مارکیٹ ہے کیونکہ یہ ڈیولپرز کو ڈیٹا بیس کے ساتھ براہ راست کام کرنے کی اجازت دیتا ہے اور معمول کے کام کو کم سے کم کرتا ہے۔ فراہم کنندہ اعلی دستیابی اور آسان اسکیلنگ، ڈیٹا بیس پیچنگ، بیک اپ، اور کارکردگی کی ٹیوننگ کو یقینی بنانے کا بیڑا اٹھاتا ہے۔

اوپن سورس پر مبنی سروس کے طور پر ڈیٹا بیس کی دو قسمیں اور Kubernetes کی شکل میں ایک متبادل

اوپن ڈیٹا بیس کے لیے بطور سروس دو قسم کے ڈیٹا بیس ہیں:

  1. آسان تعیناتی اور انتظام کے لیے ایڈمنسٹریشن بیک اینڈ میں پیک کیا گیا ایک معیاری اوپن سورس پروڈکٹ۔
  2. اوپن سورس کے ساتھ ہم آہنگ مختلف ایڈ آنز کے ساتھ ایک جدید تجارتی حل۔

دونوں آپشنز بادلوں کے درمیان ہجرت کے امکان کو کم کرتے ہیں اور ڈیٹا اور ایپلیکیشنز کی پورٹیبلٹی کو کم کرتے ہیں۔ مثال کے طور پر، اس حقیقت کے باوجود کہ مختلف قسم کے بادل بنیادی طور پر ایک ہی معیاری MySQL کی حمایت کرتے ہیں، ان کے درمیان اہم فرق ہیں: آپریشن، کارکردگی، بیک اپ وغیرہ میں۔ ایک بادل سے دوسرے بادل میں منتقل ہونا مشکل ہو سکتا ہے، خاص طور پر پیچیدہ ایپلی کیشنز کے لیے۔

اور یہاں سوال یہ پیدا ہوتا ہے کہ کیا ڈیٹا بیس کی سہولت بطور سروس حاصل کرنا ممکن ہے لیکن ایک سادہ اوپن سورس حل کے طور پر؟

بری خبر یہ ہے کہ، بدقسمتی سے، ابھی تک مارکیٹ میں ایسے کوئی حل موجود نہیں ہیں۔ اچھی خبر یہ ہے کہ وہاں ہے Kubernetes، جو آپ کو اس طرح کے حل کو نافذ کرنے کی اجازت دیتا ہے۔

Kubernetes کلاؤڈ یا ڈیٹا سینٹر کے لیے ایک آپریٹنگ سسٹم ہے جو آپ کو کسی ایک میزبان کے بجائے ایک کلسٹر میں ایک سے زیادہ سرورز پر ایک ایپلیکیشن کو تعینات کرنے اور اس کا نظم کرنے کی اجازت دیتا ہے۔

اب Kubernetes اس قسم کے سافٹ ویئر کے زمرے میں سرفہرست ہے۔ اس طرح کے مسائل کے بہت سے مختلف حل تھے، لیکن یہ معیار بن گیا۔ بہت سی کمپنیاں جو متبادل حل پر توجہ مرکوز کرتی تھیں اب Kubernetes کو سپورٹ کرنے کے لیے اپنی مصنوعات کو ڈھالنے پر توجہ مرکوز کر رہی ہیں۔

اس کے علاوہ، Kubernetes ایک عالمگیر حل ہے جو بہت سے دکانداروں کے نجی، عوامی اور ہائبرڈ کلاؤڈز میں تعاون یافتہ ہے، مثال کے طور پر: AWS، Google Cloud، Microsoft Azure، Mail.ru کلاؤڈ سلوشنز.

کبرنیٹس ڈیٹا بیس کے ساتھ کیسے کام کرتا ہے۔

Kubernetes کو اصل میں اسٹیٹ لیس ایپلی کیشنز کے لیے ڈیزائن کیا گیا تھا جو ڈیٹا پر کارروائی کرتی ہیں لیکن کچھ بھی اسٹور نہیں کرتی ہیں، جیسے کہ مائیکرو سروسز یا ویب ایپلیکیشنز۔ ڈیٹا بیس اسپیکٹرم کے دوسرے سرے پر ہیں، یعنی وہ اسٹیٹفول ایپلی کیشنز ہیں۔ اور Kubernetes اصل میں اس طرح کی ایپلی کیشنز کے لیے نہیں تھا۔

تاہم، ایسی خصوصیات ہیں جو حال ہی میں کبرنیٹس میں نمودار ہوئی ہیں جو ڈیٹابیس اور دیگر ریاستی ایپلی کیشنز کے استعمال کی اجازت دیتی ہیں:

  1. سٹیٹ فل سیٹ کا تصور پوڈز کے کام کو روکنے اور گریس فل شٹ ڈاؤن (ایپلی کیشن کی پیشین گوئی شٹ ڈاؤن) کو لاگو کرنے کے بارے میں واقعات پر کارروائی کے لیے پرائمٹیو کی ایک پوری سیریز ہے۔
  2. پرسسٹنٹ والیومز ڈیٹا اسٹورز ہیں جو پوڈز، کبرنیٹس مینجمنٹ آبجیکٹ سے وابستہ ہیں۔
  3. آپریٹر فریم ورک - یعنی ڈیٹا بیسز اور دیگر ریاستی ایپلی کیشنز کے انتظام کے لیے اجزاء بنانے کی صلاحیت جو بہت سے نوڈس میں تقسیم ہوتی ہے۔

پہلے سے ہی اب عوامی بادلوں میں ایک سروس کے طور پر بڑے ڈیٹا بیس موجود ہیں، جن کا پسدید Kubernetes ہے، مثال کے طور پر: CockroachCloud، InfluxDB، PlanetScale۔ یعنی، Kubernetes پر ڈیٹا بیس نہ صرف ایک ایسی چیز ہے جو نظریاتی طور پر ممکن ہے، بلکہ ایک ایسی چیز ہے جو عملی طور پر کام کرتی ہے۔

Percona کے پاس Kubernetes کے لیے دو اوپن سورس حل ہیں:

  1. MongoDB کے لیے Percona سرور کے لیے Kubernetes آپریٹر۔
  2. XtraDB CLUSTER کے لیے Kubernetes آپریٹر ایک ایسی خدمت ہے جو MySQL کے ساتھ مطابقت رکھتی ہے اور اعلیٰ دستیابی اور مستقل مزاجی فراہم کرتی ہے۔ اگر اعلی دستیابی کی ضرورت نہ ہو تو آپ ایک نوڈ بھی استعمال کر سکتے ہیں، مثال کے طور پر ڈیو ڈیٹا بیس کے لیے۔

Kubernetes کے صارفین کو دو گروپوں میں تقسیم کیا جا سکتا ہے۔ کچھ لوگ Kubernetes آپریٹرز کو براہ راست استعمال کرتے ہیں - یہ بنیادی طور پر ترقی یافتہ صارفین ہیں جو ٹیکنالوجی کے کام کرنے کے بارے میں اچھی طرح سمجھتے ہیں۔ دوسرے اسے بیک اینڈ پر چلاتے ہیں - اس طرح کے صارفین ڈیٹا بیس جیسی کسی سروس میں دلچسپی رکھتے ہیں، وہ کبرنیٹس کی باریکیوں کو نہیں جاننا چاہتے۔ صارفین کے دوسرے گروپ کے لیے، ہمارے پاس ایک اور اوپن سورس حل ہے - Percona DBaaS CLI ٹول۔ یہ ان لوگوں کے لیے ایک تجرباتی حل ہے جو ٹیکنالوجی کی گہری سمجھ کے بغیر Kubernetes پر مبنی اوپن سورس DBaaS حاصل کرنا چاہتے ہیں۔

Google Kubernetes Engine پر Percona کے DBaaS کو کیسے چلایا جائے۔

Google Kubernetes Engine، میری رائے میں، Kubernetes ٹیکنالوجی کے سب سے زیادہ فعال نفاذ میں سے ایک ہے۔ یہ دنیا کے بہت سے خطوں میں دستیاب ہے اور اس میں ایک سادہ اور آسان کمانڈ لائن ٹول (SDK) ہے، جو آپ کو پلیٹ فارم کو دستی طور پر منظم کرنے کے بجائے اسکرپٹ بنانے کی اجازت دیتا ہے۔

ہمارے DBaaS کے کام کرنے کے لیے، ہمیں درج ذیل اجزاء کی ضرورت ہے:

  1. کیوبیکٹل۔
  2. گوگل کلاؤڈ SDK۔
  3. پرکونا 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

گوگل کلاؤڈ 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 DBaaS CLI ٹول اب بھی ایک تجرباتی پروڈکٹ ہے، اس لیے یہ تجرباتی ریپوزٹری میں واقع ہے، جسے الگ سے فعال ہونا چاہیے، چاہے آپ کے پاس پہلے سے ہی Percona ریپوزٹریز انسٹال ہوں۔

مزید یہاں.

تنصیب الگورتھم:

  1. پرکونا ریلیز ٹول کا استعمال کرتے ہوئے پرکونا ریپوزٹری سیٹ اپ کریں۔ پہلے آپ کو پرکونا سے آفیشل پرکونا ریلیز پیکیج ڈاؤن لوڈ اور انسٹال کرنے کی ضرورت ہے:
    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

اگلا، ہم ایک کلسٹر بناتے ہیں. ڈیمو کے لیے، میں نے صرف تین نوڈس کا ایک Kubernetes کلسٹر بنایا ہے - یہ اعلی دستیابی کے لیے ضروری کم از کم ہے:

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)

پھر ہم ایک نام کی جگہ بناتے ہیں اور اسے فعال بناتے ہیں۔ نام کی جگہ، موٹے طور پر، ایک پروجیکٹ یا ماحول کی طرح ہے، لیکن پہلے سے ہی ایک Kubernetes کلسٹر کے اندر ہے۔ یہ گوگل کلاؤڈ پروجیکٹس سے آزاد ہے:

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 ایڈریس حاصل کر سکتے ہیں۔ اس صورت میں، ڈیٹا بیس کہیں سے بھی قابل رسائی ہوگا۔ یہ کم محفوظ ہے، لیکن اکثر زیادہ آسان ہے۔ بیرونی آئی پی کے لیے ہم درج ذیل کمانڈ استعمال کرتے ہیں:

# 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 ٹول آپ کو Kubernetes پر DBaaS جیسا حل حاصل کرنے میں مدد کرتا ہے۔ ایک ہی وقت میں، ہم اس کی فعالیت اور قابل استعمال پر کام جاری رکھے ہوئے ہیں۔

یہ رپورٹ سب سے پہلے پیش کی گئی۔ @Databases Meetup بذریعہ میل ڈاٹ آر یو کلاؤڈ سلوشنز اینڈ ٹیرانٹول۔ دیکھو ویڈیو دیگر پرفارمنس اور ٹیلی گرام پر ایونٹ کے اعلانات کو سبسکرائب کریں۔ Mail.ru گروپ پر Kubernetes کے ارد گرد.

اس موضوع پر اور کیا پڑھنا ہے:

  1. ایک جدید IIoT پلیٹ فارم میں ڈیٹا بیس۔
  2. کسی پروجیکٹ کے لیے ڈیٹا بیس کا انتخاب کیسے کریں تاکہ آپ کو دوبارہ انتخاب نہ کرنا پڑے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں