ప్రోహోస్టర్ > బ్లాగ్ > పరిపాలన > DBaaSని భర్తీ చేయగల Kubernetesని ఉపయోగించి హైబ్రిడ్ క్లౌడ్ను ఎలా నిర్మించాలి
DBaaSని భర్తీ చేయగల Kubernetesని ఉపయోగించి హైబ్రిడ్ క్లౌడ్ను ఎలా నిర్మించాలి
నా పేరు పీటర్ జైట్సేవ్, నేను CEO, వ్యవస్థాపకుడిని పెర్కోనా и хочу рассказать:
మేము ఓపెన్ సోర్స్ సొల్యూషన్స్ నుండి డేటాబేస్కి ఒక సర్వీస్గా ఎలా వచ్చాము;
какие существуют подходы к развертыванию баз данных в облаке;
కుబెర్నెటీస్ DBaaSని ఎలా భర్తీ చేయగలదు, విక్రేత డిపెండెన్సీని తొలగిస్తుంది మరియు DBMS యొక్క సరళతను సేవగా కొనసాగిస్తుంది.
Статья подготовлена на основе доклада на @Databases Meetup by Mail.ru Cloud Solutions & Tarantool. Если не хотите читать, можно посмотреть:
Как от open source пришли к Database as a Service в облаке
నేను 90వ దశకం చివరి నుండి ఓపెన్ సోర్స్లో పని చేస్తున్నాను. ఇరవై సంవత్సరాల క్రితం, డేటాబేస్ వంటి ఓపెన్ సోర్స్ను ఉపయోగించడం అంత సులభం కాదు. సోర్స్ కోడ్ను డౌన్లోడ్ చేయడం, ప్యాచ్ చేయడం, కంపైల్ చేయడం మరియు ఆపై మాత్రమే ఉపయోగించడం అవసరం.
Затем open source пережил серию упрощений:
Tar.gz మరియు కంపైల్ చేయవలసిన మూలాలను ఇన్స్టాల్ చేయండి;
пакеты с зависимостями типа .deb и.rpm, где нужно только установить набор пакетов;
APT మరియు YUM వంటి ప్యాకేజీ రిపోజిటరీలు, దీనితో ఇన్స్టాలేషన్ స్వయంచాలకంగా ఉంటుంది;
такие решения как Docker и Snap, позволяющие получать пакеты по инсталляции без внешних зависимостей.
ఫలితంగా, ఓపెన్ సోర్స్ సాఫ్ట్వేర్ను ఉపయోగించడం సులభతరం అవుతుంది మరియు అటువంటి అప్లికేషన్లను అభివృద్ధి చేయడంలో ప్రవేశానికి అడ్డంకిని కూడా తగ్గిస్తుంది.
При этом, в отличие от ситуации 20 лет назад, когда все были экспертами по сборке, сейчас большинство разработчиков не могут собрать из исходников используемые инструменты.
На самом деле, это неплохо, так как:
మేము మరింత సంక్లిష్టమైన కానీ మరింత యూజర్ ఫ్రెండ్లీ సాఫ్ట్వేర్ను ఉపయోగించవచ్చు. ఉదాహరణకు, బ్రౌజర్ ఉపయోగించడానికి అనుకూలమైనది, కానీ ఇది అనేక ఓపెన్ సోర్స్ భాగాలను కలిగి ఉంటుంది మరియు మొదటి నుండి నిర్మించడానికి అసౌకర్యంగా ఉంటుంది.
ఎక్కువ మంది వ్యక్తులు ఓపెన్ సోర్స్ మరియు ఇతర సాఫ్ట్వేర్ల డెవలపర్లుగా మారవచ్చు, వ్యాపారాలు ఎక్కువ సాఫ్ట్వేర్లను ఉపయోగిస్తాయి మరియు దాని అవసరం ఎక్కువగా ఉంటుంది.
ప్రతికూలత ఏమిటంటే, సరళీకరణలో తదుపరి దశ క్లౌడ్ సొల్యూషన్ల ఉపయోగంతో ముడిపడి ఉంటుంది మరియు ఇది ఒక నిర్దిష్ట విక్రేత లాక్-ఇన్కు దారి తీస్తుంది, అంటే ఒక సరఫరాదారుకు కట్టుబడి ఉంటుంది. మేము సాధారణ పరిష్కారాలను ఉపయోగిస్తాము మరియు ప్రొవైడర్లు ఓపెన్ సోర్స్ భాగాలను ఉపయోగిస్తాము, కానీ వాస్తవానికి అవి పెద్ద మేఘాలలో ఒకదానికి వ్రేలాడదీయబడతాయి. అంటే, యాజమాన్య APIని ఉపయోగించి క్లౌడ్లలో ఓపెన్ సోర్స్ (మరియు దానికి అనుకూలమైన సాఫ్ట్వేర్)ని అమలు చేయడానికి సులభమైన మరియు వేగవంతమైన మార్గం.
క్లౌడ్లోని డేటాబేస్ల విషయానికి వస్తే, రెండు విధానాలు ఉన్నాయి:
సాధారణ డేటా సెంటర్లో వలె డేటాబేస్ మౌలిక సదుపాయాలను సమీకరించండి. అంటే, ప్రామాణిక బిల్డింగ్ బ్లాక్లను తీసుకోండి: కంప్యూట్, స్టోరేజ్ మరియు మొదలైనవి, వాటిపై Linux మరియు డేటాబేస్ను ఇన్స్టాల్ చేసి, వాటిని కాన్ఫిగర్ చేయండి.
డేటాబేస్ను సేవగా ఉపయోగించండి, ఇక్కడ ప్రొవైడర్ క్లౌడ్ లోపల సిద్ధంగా ఉన్న డేటాబేస్ను అందిస్తుంది.
DBaaS ప్రస్తుతం వేగంగా అభివృద్ధి చెందుతున్న మార్కెట్ ఎందుకంటే ఇది డెవలపర్లను డేటాబేస్లతో నేరుగా పని చేయడానికి అనుమతిస్తుంది మరియు సాధారణ పనిని తగ్గిస్తుంది. అధిక లభ్యత మరియు సులభమైన స్కేలింగ్, డేటాబేస్ ప్యాచింగ్, బ్యాకప్లు మరియు పనితీరు ట్యూనింగ్ని నిర్ధారించడానికి ప్రొవైడర్ చర్యలు తీసుకుంటుంది.
ఓపెన్ సోర్స్ ఆధారంగా సర్వీస్గా రెండు రకాల డేటాబేస్ మరియు కుబెర్నెట్స్ రూపంలో ప్రత్యామ్నాయం
ఓపెన్ డేటాబేస్ల కోసం రెండు రకాల డేటాబేస్ సర్వీస్గా ఉన్నాయి:
Стандартный open source-продукт, упакованный в бэкенд для администрирования, что упрощает развертывание и управление.
వివిధ యాడ్-ఆన్లతో కూడిన అధునాతన వాణిజ్య పరిష్కారం, ఓపెన్ సోర్స్కు అనుకూలంగా ఉంటుంది.
రెండు ఎంపికలు మేఘాల మధ్య వలసల అవకాశాన్ని తగ్గిస్తాయి మరియు డేటా మరియు అప్లికేషన్ల పోర్టబిలిటీని తగ్గిస్తాయి. ఉదాహరణకు, వివిధ రకాలైన మేఘాలు తప్పనిసరిగా ఒకే ప్రామాణిక MySQLకి మద్దతు ఇస్తున్నప్పటికీ, వాటి మధ్య ముఖ్యమైన తేడాలు ఉన్నాయి: ఆపరేషన్, పనితీరు, బ్యాకప్ మరియు మొదలైనవి. ఒక క్లౌడ్ నుండి మరొక క్లౌడ్కు మారడం సవాలుగా ఉంటుంది, ముఖ్యంగా సంక్లిష్టమైన అప్లికేషన్లకు.
మరియు ఇక్కడ ప్రశ్న తలెత్తుతుంది - డేటాబేస్ యొక్క సౌలభ్యాన్ని సేవగా పొందడం సాధ్యమేనా, కానీ సాధారణ ఓపెన్ సోర్స్ పరిష్కారంగా?
చెడు వార్త ఏమిటంటే, దురదృష్టవశాత్తు, మార్కెట్లో ఇంకా అలాంటి పరిష్కారాలు లేవు. శుభవార్త ఏమిటంటే, అటువంటి పరిష్కారాలను అమలు చేయడానికి మిమ్మల్ని అనుమతించే Kubernetes ఉంది.
Kubernetes అనేది క్లౌడ్ లేదా డేటా సెంటర్ కోసం ఒక ఆపరేటింగ్ సిస్టమ్, ఇది ఒకే హోస్ట్లో కాకుండా క్లస్టర్లో బహుళ సర్వర్లలో అప్లికేషన్ను అమలు చేయడానికి మరియు నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఇప్పుడు కుబెర్నెటెస్ అటువంటి సాఫ్ట్వేర్ విభాగంలో నాయకుడు. అటువంటి సమస్యలకు అనేక విభిన్న పరిష్కారాలు ఉన్నాయి, కానీ అది ప్రమాణంగా మారింది. ప్రత్యామ్నాయ పరిష్కారాలపై దృష్టి సారించే చాలా కంపెనీలు ఇప్పుడు కుబెర్నెట్లకు మద్దతు ఇచ్చేలా తమ ఉత్పత్తులను స్వీకరించడంపై దృష్టి సారిస్తున్నాయి.
Кроме того, Kubernetes — универсальное решение, которое поддерживается в частных, общедоступных и гибридных облаках многих вендоров, например: AWS, Google Cloud, Microsoft Azure, Mail.ru క్లౌడ్ సొల్యూషన్స్.
Как Kubernetes работает с базами данных
కుబెర్నెటెస్ వాస్తవానికి డేటాను ప్రాసెస్ చేసే స్థితిలేని అప్లికేషన్ల కోసం రూపొందించబడింది, అయితే మైక్రోసర్వీస్లు లేదా వెబ్ అప్లికేషన్లు వంటి దేనినీ నిల్వ చేయదు. డేటాబేస్లు స్పెక్ట్రం యొక్క మరొక చివరలో ఉన్నాయి, అంటే అవి స్టేట్ఫుల్ అప్లికేషన్లు. మరియు కుబెర్నెటెస్ వాస్తవానికి అటువంటి అనువర్తనాల కోసం ఉద్దేశించబడలేదు.
Однако есть фичи, которые появились в Kubernetes в последнее время и позволяют использовать базы данных и другие stateful-приложения:
Концепт StatefulSet — целая серия примитивов для обработки событий об остановке работы подов и осуществления Graceful Shutdown (предсказуемого завершения работы приложения).
పెర్సిస్టెంట్ వాల్యూమ్లు పాడ్లు, కుబెర్నెట్స్ మేనేజ్మెంట్ ఆబ్జెక్ట్లతో అనుబంధించబడిన డేటా స్టోర్లు.
ఆపరేటర్ ఫ్రేమ్వర్క్ - అంటే, అనేక నోడ్లలో పంపిణీ చేయబడిన డేటాబేస్లు మరియు ఇతర స్టేట్ఫుల్ అప్లికేషన్లను నిర్వహించడానికి భాగాలను సృష్టించగల సామర్థ్యం.
Уже сейчас в публичных облаках есть крупные Database as a Service, в бэкенде которых Kubernetes, например: CockroachCloud, InfluxDB, PlanetScale. То есть база данных на Kubernetes — это не только то, что теоретически возможно, но и то, что работает на практике.
У Percona есть два open source решения для Kubernetes:
MongoDB కోసం Percona సర్వర్ కోసం Kubernetes ఆపరేటర్.
Kubernetes Operator for XtraDB CLUSTER — сервис, который совместим с MySQL, обеспечивает высокую доступность и консистентность. Также можно использовать single node, если высокая доступность не нужна, например для dev database.
కుబెర్నెట్స్ వినియోగదారులను రెండు గ్రూపులుగా విభజించవచ్చు. కొంతమంది వ్యక్తులు నేరుగా Kubernetes ఆపరేటర్లను ఉపయోగిస్తున్నారు - వీరు ప్రధానంగా సాంకేతికత ఎలా పనిచేస్తుందనే దానిపై మంచి అవగాహన ఉన్న అధునాతన వినియోగదారులు. ఇతరులు దీన్ని బ్యాకెండ్లో అమలు చేస్తారు - అటువంటి వినియోగదారులు డేటాబేస్ వంటి వాటిపై సేవగా ఆసక్తి కలిగి ఉంటారు, వారు కుబెర్నెట్స్ యొక్క సూక్ష్మ నైపుణ్యాలను పరిశోధించడానికి ఇష్టపడరు. రెండవ సమూహ వినియోగదారుల కోసం, మాకు మరొక ఓపెన్ సోర్స్ సొల్యూషన్ ఉంది - Percona DBaaS CLI టూల్. సాంకేతికతపై లోతైన అవగాహన లేకుండా కుబెర్నెట్స్ ఆధారంగా ఓపెన్ సోర్స్ DBaaSని పొందాలనుకునే వారికి ఇది ప్రయోగాత్మక పరిష్కారం.
Как запустить DBaaS от Percona на Google Kubernetes Engine
Google Kubernetes Engine, на мой взгляд, одна из самых функциональных реализаций технологии Kubernetes. Она доступно во многих регионах мира и обладает простым и удобным Command Line Tool (SDK), позволяющим создавать скрипты, а не управлять платформой вручную.
మా DBaaS పని చేయడానికి, మాకు ఈ క్రింది భాగాలు అవసరం:
Kubectl.
Google క్లౌడ్ SDK.
పెర్కోనా DBaaS CLI.
kubectlని ఇన్స్టాల్ చేయండి
Устанавливаем пакет для вашей операционной системы, мы рассмотрим на примере Ubuntu. Подробнее ఇక్కడ.
# 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. Percona DBaaS CLI Tool — продукт пока экспериментальный, поэтому находится в экспериментальном репозитории, который нужно включить отдельно, даже если у вас уже установлены репозитории Percona.
పెర్కోనా-విడుదల సాధనాన్ని ఉపయోగించి పెర్కోనా రిపోజిటరీలను సెటప్ చేయండి. ముందుగా మీరు పెర్కోనా నుండి అధికారిక పెర్కోనా-విడుదల ప్యాకేజీని డౌన్లోడ్ చేసి, ఇన్స్టాల్ చేయాలి:
ముందుగా మీరు మీ Google ఖాతాలోకి లాగిన్ అవ్వాలి. ఇంకా, Google క్లౌడ్ అనేక స్వతంత్ర ప్రాజెక్ట్లను కలిగి ఉండటానికి ఒక వినియోగదారుని అనుమతిస్తుంది, కాబట్టి మీరు ఈ ప్రాజెక్ట్ కోసం కోడ్ని ఉపయోగించి పని చేసే ప్రాజెక్ట్ను పేర్కొనాలి:
gcloud auth login
gcloud config set project hidden-brace-236921
తరువాత, మేము ఒక క్లస్టర్ను సృష్టిస్తాము. డెమో కోసం, నేను కేవలం మూడు నోడ్లతో కూడిన కుబెర్నెటెస్ క్లస్టర్ని సృష్టించాను - ఇది అధిక లభ్యతకు అవసరమైన కనిష్టం:
Затем мы создаем namespace и делаем его активным. Namespace — это, грубо говоря, тоже как проект или environment, но уже внутри Kubernetes-кластера. Он независим от проектов Google Cloud:
После того, как мы прошли через эти несколько шагов, можем запустить кластер из трех узлов вот такой простой командой:
# 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. То есть с этого сервера, с которого вы запустили команду «Создать», он не доступен. Чтобы он стал доступен, например для тестов с клиентом, нужно прокинуть порт через Port Mapping:
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
Явно задаем пароль
సిస్టమ్ యాదృచ్ఛికంగా పాస్వర్డ్ను రూపొందించడానికి బదులుగా, మీరు పాస్వర్డ్ను స్పష్టంగా సెట్ చేయవచ్చు:
MySQLని వీలైనంత త్వరగా మరియు సులభంగా అమలు చేయడానికి, పరీక్షించి, ఆపై దాన్ని షట్ డౌన్ చేయడానికి లేదా అభివృద్ధి కోసం ఉపయోగించడానికి టాస్క్లను పరీక్షించడానికి ఇది ఒక పరిష్కారం.
Percona DBaaS CLI సాధనం కుబెర్నెట్స్లో DBaaS-వంటి పరిష్కారాన్ని సాధించడంలో మీకు సహాయపడుతుంది. అదే సమయంలో, మేము దాని కార్యాచరణ మరియు వినియోగంపై పనిని కొనసాగిస్తాము.