د Kubernetes په کارولو سره د هایبرډ بادل جوړولو څرنګوالی چې کولی شي د DBaaS ځای په ځای کړي

زما نوم پیټر زیتسیف دی، زه د اجراییوي رییس، بنسټ ایښودونکی یم پرکونا او زه غواړم تاسو ته ووایم:

  • څنګه موږ د خلاصې سرچینې حلونو څخه ډیټابیس ته د خدمت په توګه راغلي یو؛
  • په بادل کې د ډیټابیسونو ځای په ځای کولو لپاره کومې لارې شتون لري؛
  • 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 ، ګوګل کلاوډ ، مایکروسافټ Azure ، Mail.ru کلاوډ حلونه.

Kubernetes څنګه د ډیټابیسونو سره کار کوي

Kubernetes په اصل کې د بې ریاسته غوښتنلیکونو لپاره ډیزاین شوی و چې ډیټا پروسس کوي مګر هیڅ شی نه ذخیره کوي، لکه مایکرو خدمتونه یا ویب غوښتنلیکونه. ډیټابیسونه د سپیکٹرم په بل پای کې دي، دا دی، دوی دولتي غوښتنلیکونه دي. او Kubernetes په اصل کې د داسې غوښتنلیکونو لپاره نه و.

په هرصورت، داسې ځانګړتیاوې شتون لري چې په دې وروستیو کې په Kubernetes کې ښکاره شوي چې د ډیټابیسونو او نورو دولتي غوښتنلیکونو کارولو ته اجازه ورکوي:

  1. د StatefulSet مفهوم د پوډونو کار ودرولو او د زړه راښکونکي بند (د غوښتنلیک وړاندوینې بندول) پلي کولو په اړه د پیښو پروسس کولو لپاره د ابتدايي لړۍ ټوله لړۍ ده.
  2. دوامداره حجمونه د ډیټا پلورنځي دي چې د پوډونو ، کبرنیټس مدیریت توکو سره تړاو لري.
  3. د آپریټر چوکاټ - دا د ډیټابیسونو او نورو دولتي غوښتنلیکونو اداره کولو لپاره د اجزاو رامینځته کولو وړتیا چې په ډیری نوډونو کې توزیع شوي.

لا دمخه په عامه بادلونو کې د خدمت په توګه لوی ډیټابیسونه شتون لري ، چې شالید یې کوبرنیټس دی ، د مثال په توګه: کاکروچ کلاوډ ، انفلوکس ډی بی ، پلانیټ سکیل. دا دی، په کوبرنیټس کې ډیټابیس نه یوازې هغه څه دي چې په نظري توګه ممکن وي، بلکې هغه څه دي چې په عمل کې کار کوي.

Percona د Kubernetes لپاره دوه خلاصې سرچینې حلونه لري:

  1. د MongoDB لپاره د Percona سرور لپاره Kubernetes آپریټر.
  2. د XtraDB CLUSTER لپاره Kubernetes Operator یو خدمت دی چې د MySQL سره مطابقت لري او لوړ شتون او دوام چمتو کوي. تاسو کولی شئ یو واحد نوډ هم وکاروئ که چیرې لوړ شتون ته اړتیا نه وي ، د مثال په توګه د ډیټابیس لپاره.

د Kubernetes کاروونکي په دوو ډلو ویشل کیدی شي. ځینې ​​​​خلک د Kubernetes Operators مستقیم کاروي - دا په عمده توګه پرمختللي کاروونکي دي چې د ټیکنالوژۍ کار کولو څرنګوالي په اړه ښه پوهه لري. نور یې په شاتنۍ برخه کې پرمخ وړي - دا ډول کارونکي د ډیټابیس په څیر یو څه سره علاقه لري د خدمت په توګه ، دوی نه غواړي د کوبرنیټس باریکیو ته ځان ورسوي. د کاروونکو د دویمې ډلې لپاره، موږ د خلاصې سرچینې یو بل حل لرو - Percona DBaaS CLI Tool. دا د هغو کسانو لپاره یو تجربوي حل دی چې غواړي د ټیکنالوژۍ ژورې پوهې پرته د Kubernetes پراساس د خلاصې سرچینې DBaaS ترلاسه کړي.

په ګوګل کوبرنیټس انجن کې د Percona DBaaS چلولو څرنګوالی

د ګوګل Kubernetes انجن، زما په نظر، د Kubernetes ټیکنالوژۍ یو له خورا فعال پلي کولو څخه دی. دا د نړۍ په ډیری سیمو کې شتون لري او یو ساده او اسانه کمانډ لاین وسیلې (SDK) لري ، کوم چې تاسو ته اجازه درکوي د پلیټ فارم په لاسي ډول اداره کولو پرځای سکریپټونه رامینځته کړئ.

زموږ د DBaaS د کار کولو لپاره، موږ لاندې برخو ته اړتیا لرو:

  1. کوبیکټل.
  2. د ګوګل کلاوډ SDK.
  3. Percona DBaaS CLI.

kubectl نصب کړئ

موږ ستاسو د عملیاتي سیسټم لپاره کڅوړه نصب کوو، موږ به د اوبنټو مثال وګورو. نور جزیات دلته.

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)

بیا موږ د نوم ځای جوړوو او فعال یې کوو. د نوم ځای دی، تقریبا خبرې کول، د پروژې یا چاپیریال په څیر، مګر دمخه د کوبرنیټس کلستر کې دننه. دا د ګوګل کلاوډ پروژو څخه خپلواک دی:

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

زه د سکریپټونو محصول د انسان د لوستلو وړ ب formatه کې ښیې ، مګر د 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 په څیر حل ترلاسه کولو کې مرسته کوي. په ورته وخت کې، موږ د دې فعالیت او کارونې کار ته دوام ورکوو.

دا راپور په لومړي ځل وړاندې شو @ ډیټابیس ناسته د Mail.ru Cloud Solutions&Tarantool لخوا. وګوره видео نور پرفارمنسونه او په ټیلیګرام کې د پیښې اعلانونو کې ګډون وکړئ په Mail.ru ګروپ کې د Kubernetes شاوخوا.

په موضوع کې نور څه ولولئ:

  1. په عصري IIoT پلیټ فارم کې ډیټابیسونه.
  2. څنګه د پروژې لپاره ډیټابیس غوره کړئ نو تاسو اړتیا نلرئ بیا انتخاب کړئ.

سرچینه: www.habr.com

Add a comment