DBaaSን ሊተካ የሚችል Kubernetesን በመጠቀም ድቅል ደመናን እንዴት መገንባት እንደሚቻል

ስሜ ፔትር ዛይሴቭ እባላለሁ, እኔ ዋና ሥራ አስፈፃሚ, መስራች ነኝ Conርኮዋ እና ልነግርዎ እፈልጋለሁ: -

  • ከክፍት ምንጭ መፍትሄዎች ወደ ዳታቤዝ እንደ አገልግሎት እንዴት እንደመጣን;
  • የውሂብ ጎታዎችን በደመና ውስጥ ለመዘርጋት ምን አይነት አቀራረቦች አሉ;
  • Kubernetes DBaaSን እንዴት እንደሚተካ፣ የአቅራቢ ጥገኝነትን በማስወገድ እና የዲቢኤምኤስን ቀላልነት እንደ አገልግሎት ማስጠበቅ።

ጽሁፉ የተዘጋጀው @Databases Meetup በ Mail.ru Cloud Solutions & Tarantool በቀረበው ዘገባ መሰረት ነው። ማንበብ ካልፈለግክ መመልከት ትችላለህ፡-


ከክፍት ምንጭ ወደ ዳታቤዝ እንደ አገልግሎት በደመና ውስጥ እንዴት እንደመጣን።

ከ90ዎቹ መገባደጃ ጀምሮ በክፍት ምንጭ እየሰራሁ ነው። ከሃያ ዓመታት በፊት እንደ ዳታቤዝ ያሉ ክፍት ምንጮችን መጠቀም በጣም ቀላል አልነበረም። የምንጭ ኮዱን ማውረድ፣ መለጠፍ፣ ማጠናቀር እና ከዚያ ብቻ መጠቀም አስፈላጊ ነበር።

ክፍት ምንጭ ከዚያ ተከታታይ ማቃለያዎችን አልፏል፡-

  • Tar.gz እና መጠቅለል ያለባቸው ምንጮችን INSTALL;
  • እንደ .deb እና .rpm ያሉ ጥገኞች ያሉት ፓኬጆች፣የጥቅሎችን ስብስብ ብቻ መጫን የሚያስፈልግዎ።
  • እንደ APT እና YUM ያሉ የጥቅል ማከማቻዎች፣ መጫኑ አውቶማቲክ የሆነበት፣
  • እንደ Docker እና Snap ያሉ መፍትሄዎች ያለ ውጫዊ ጥገኞች በመጫን ጥቅሎችን እንዲቀበሉ ያስችልዎታል።

በውጤቱም፣ ክፍት ምንጭ ሶፍትዌርን ለመጠቀም ቀላል ይሆናል፣ እና እንደዚህ ያሉ መተግበሪያዎችን ለመስራት የመግባት እንቅፋትንም ይቀንሳል።

በተመሳሳይ ጊዜ, ከ 20 ዓመታት በፊት ከነበረው ሁኔታ በተለየ, ሁሉም ሰው የመሰብሰቢያ ባለሙያ በነበረበት ጊዜ, አሁን አብዛኛዎቹ ገንቢዎች የሚጠቀሙባቸውን መሳሪያዎች ከምንጩ መገንባት አይችሉም.

በእውነቱ, ይህ መጥፎ አይደለም, ምክንያቱም:

  1. የበለጠ ውስብስብ ነገር ግን ለተጠቃሚ ምቹ የሆኑ ሶፍትዌሮችን መጠቀም እንችላለን። ለምሳሌ, አሳሽ ለመጠቀም ምቹ ነው, ነገር ግን ብዙ ክፍት ምንጭ ክፍሎችን ያካትታል እና ከባዶ ለመገንባት የማይመች ነው.
  2. ብዙ ሰዎች የክፍት ምንጭ እና ሌሎች ሶፍትዌሮች ገንቢዎች ሊሆኑ ይችላሉ፣ ብዙ ሶፍትዌሮች በንግድ ስራ ይጠቀማሉ እና የሱ ፍላጎት የበለጠ ነው።

ጉዳቱ የሚቀጥለው የማቅለል ደረጃ ከደመና መፍትሄዎች አጠቃቀም ጋር የተያያዘ ነው, እና ይህ ወደ አንድ የተወሰነ የሻጭ መቆለፍ, ማለትም ከአንድ አቅራቢ ጋር የተያያዘ ነው. ቀላል መፍትሄዎችን እንጠቀማለን እና አቅራቢዎች ክፍት ምንጭ ክፍሎችን ይጠቀማሉ, ግን በእውነቱ እነሱ ከትልቅ ደመናዎች በአንዱ ላይ ተቸንክረዋል. ማለትም ክፍት ምንጭን (እና ከእሱ ጋር ተኳሃኝ የሆኑ ሶፍትዌሮችን) ለማሰማራት ቀላሉ እና ፈጣኑ መንገድ የባለቤትነት ኤፒአይን በመጠቀም በደመና ውስጥ ነው።

ወደ ደመናው የውሂብ ጎታ ስንመጣ፣ ሁለት አቀራረቦች አሉ፡-

  1. በመደበኛ የመረጃ ማእከል ውስጥ እንደሚታየው የመረጃ ቋቱን መሠረተ ልማት ያሰባስቡ። ያም ማለት ደረጃውን የጠበቀ የግንባታ ብሎኮችን ይውሰዱ፡ ስሌት፣ ማከማቻ እና የመሳሰሉትን በላያቸው ላይ ሊኑክስን እና ዳታቤዝ ይጫኑ እና ያዋቅሯቸው።
  2. አቅራቢው ዝግጁ የሆነ የውሂብ ጎታ በደመና ውስጥ የሚያቀርብበት ዳታቤዝ እንደ አገልግሎት ይጠቀሙ።

DBaaS በአሁኑ ጊዜ በፍጥነት እያደገ ያለ ገበያ ነው ምክንያቱም ገንቢዎች ከመረጃ ቋቶች ጋር በቀጥታ እንዲሰሩ እና መደበኛ ስራን ስለሚቀንስ። አቅራቢው ከፍተኛ ተገኝነት እና ቀላል ልኬት፣ የውሂብ ጎታ መጠገኛን፣ ምትኬዎችን እና የአፈጻጸም ማስተካከያን ለማረጋገጥ ወስኗል።

በክፍት ምንጭ ላይ የተመሰረቱ ሁለት አይነት የውሂብ ጎታ እንደ አገልግሎት እና አማራጭ በኩበርኔትስ መልክ

ለክፍት የውሂብ ጎታዎች እንደ አገልግሎት ሁለት ዓይነት የውሂብ ጎታዎች አሉ፡

  1. ለቀላል ማሰማራት እና አስተዳደር በአስተዳደር ጀርባ የታሸገ መደበኛ ክፍት ምንጭ ምርት።
  2. የላቀ የንግድ መፍትሔ ከተለያዩ ተጨማሪዎች ጋር፣ ከክፍት ምንጭ ጋር ተኳሃኝ።

ሁለቱም አማራጮች በደመና መካከል የመሰደድ እድልን ይቀንሳሉ እና የውሂብ እና የመተግበሪያዎችን ተንቀሳቃሽነት ይቀንሳሉ. ለምሳሌ ፣ ምንም እንኳን የተለያዩ የደመና ዓይነቶች በመሠረቱ ተመሳሳይ መደበኛ MySQL የሚደግፉ ቢሆኑም በመካከላቸው ጉልህ ልዩነቶች አሉ-በአሠራር ፣ በአፈፃፀም ፣ በመጠባበቂያ ፣ ወዘተ. ከአንዱ ደመና ወደ ሌላ መሸጋገር ፈታኝ ሊሆን ይችላል፣በተለይ ለተወሳሰቡ አፕሊኬሽኖች።

እና እዚህ ጥያቄው የሚነሳው - ​​የውሂብ ጎታውን እንደ አገልግሎት, ግን እንደ ቀላል ክፍት ምንጭ መፍትሄ ማግኘት ይቻላል?

መጥፎ ዜናው, በሚያሳዝን ሁኔታ, በገበያ ላይ እስካሁን እንደዚህ አይነት መፍትሄዎች የሉም. ጥሩ ዜናው እንደዚህ አይነት መፍትሄዎችን ተግባራዊ ለማድረግ የሚያስችል ኩበርኔትስ አለ.

Kubernetes በአንድ አስተናጋጅ ላይ ሳይሆን በአንድ ክላስተር ውስጥ በበርካታ አገልጋዮች ላይ አፕሊኬሽኑን ለማሰማራት እና ለማስተዳደር የሚያስችል የክላውድ ወይም የውሂብ ማዕከል ኦፕሬቲንግ ሲስተም ነው።

አሁን ኩበርኔትስ በእንደዚህ አይነት ሶፍትዌር ምድብ ውስጥ መሪ ነው. ለእንደዚህ አይነት ችግሮች ብዙ የተለያዩ መፍትሄዎች ነበሩ, ነገር ግን ደረጃው ሆነ. በአማራጭ መፍትሄዎች ላይ ያተኮሩ ብዙ ኩባንያዎች አሁን ኩበርኔትስን ለመደገፍ ምርቶቻቸውን በማላመድ ላይ ያተኩራሉ.

በተጨማሪም ኩበርኔትስ በብዙ አቅራቢዎች በግል ፣ በአደባባይ እና በድብልቅ ደመናዎች የሚደገፍ ሁለንተናዊ መፍትሄ ነው ፣ ለምሳሌ AWS ፣ Google Cloud ፣ Microsoft Azure ፣ Mail.ru የደመና መፍትሄዎች.

Kubernetes ከመረጃ ቋቶች ጋር እንዴት እንደሚሰራ

ኩበርኔትስ በመጀመሪያ የተነደፈው ሀገር ለሌላቸው አፕሊኬሽኖች ነው መረጃን ለሚያስኬዱ ነገር ግን ምንም ነገር አያከማችም ለምሳሌ ማይክሮ ሰርቪስ ወይም የድር መተግበሪያዎች። የመረጃ ቋቶች በሌላኛው የስፔክትረም ጫፍ ላይ ይገኛሉ፣ ያም ማለት ሁኔታዊ አፕሊኬሽኖች ናቸው። እና ኩበርኔትስ በመጀመሪያ ለእንደዚህ አይነት መተግበሪያዎች የታሰበ አልነበረም።

ነገር ግን፣ በቅርብ ጊዜ በ Kubernetes ውስጥ የውሂብ ጎታዎችን እና ሌሎች ትክክለኛ አፕሊኬሽኖችን መጠቀም የሚፈቅዱ ባህሪያት አሉ።

  1. የStatefulSet ፅንሰ-ሀሳብ የፖድ ስራዎችን ስለማቆም እና የግራceful መዘጋትን (የሚገመተውን የመተግበሪያውን መዝጋት) ስለመተግበር ክስተቶችን ለማስኬድ ሙሉ ተከታታይ ቅድመ ሁኔታዎች ነው።
  2. ቋሚ ጥራዞች ከፖድዶች, የኩበርኔትስ አስተዳደር እቃዎች ጋር የተቆራኙ የውሂብ ማከማቻዎች ናቸው.
  3. ኦፕሬተር ማዕቀፍ - ማለትም ፣ የውሂብ ጎታዎችን እና ሌሎች በብዙ አንጓዎች ላይ የተከፋፈሉ መንግስታዊ አፕሊኬሽኖችን ለማስተዳደር ክፍሎችን የመፍጠር ችሎታ።

ቀድሞውኑ በሕዝብ ደመና ውስጥ እንደ አገልግሎት ትልቅ ዳታቤዝ አሉ ፣ የኋለኛው ኩበርኔትስ ነው ፣ ለምሳሌ CockroachCloud ፣ InfluxDB ፣ PlanetScale። ያም ማለት በ Kubernetes ላይ ያለው የውሂብ ጎታ በንድፈ ሐሳብ ደረጃ ብቻ ሳይሆን በተግባርም የሚሰራ ነገር ነው.

ፐርኮና ለኩበርኔትስ ሁለት ክፍት ምንጭ መፍትሄዎች አሉት።

  1. ኩበርኔትስ ኦፕሬተር ለፐርኮና አገልጋይ ለሞንጎዲቢ።
  2. Kubernetes ኦፕሬተር ለ XtraDB CLUSTER ከ MySQL ጋር ተኳሃኝ የሆነ እና ከፍተኛ ተገኝነት እና ወጥነት ያለው አገልግሎት ነው። እንዲሁም ከፍተኛ ተገኝነት የማያስፈልግ ከሆነ አንድ ነጠላ መስቀለኛ መንገድ መጠቀም ይችላሉ, ለምሳሌ ለዴቭ ዳታቤዝ.

የኩበርኔትስ ተጠቃሚዎች በሁለት ቡድን ሊከፈሉ ይችላሉ። አንዳንድ ሰዎች የኩበርኔትስ ኦፕሬተሮችን በቀጥታ ይጠቀማሉ - እነዚህ በዋነኝነት የላቁ ተጠቃሚዎች ናቸው ቴክኖሎጂው እንዴት እንደሚሰራ ጥሩ ግንዛቤ ያላቸው። ሌሎች በጀርባው ላይ ያካሂዳሉ - እንደዚህ ያሉ ተጠቃሚዎች እንደ ዳታቤዝ እንደ አገልግሎት ፍላጎት አላቸው ፣ ወደ የኩበርኔትስ ልዩነቶች ውስጥ መፈተሽ አይፈልጉም። ለሁለተኛው የተጠቃሚዎች ቡድን ሌላ ክፍት ምንጭ መፍትሄ አለን - Percona DBaaS CLI Tool። ይህ የቴክኖሎጂውን ጥልቅ ግንዛቤ ሳያገኙ በ Kubernetes ላይ የተመሠረተ ክፍት ምንጭ DBaaS ማግኘት ለሚፈልጉ ሰዎች የሙከራ መፍትሄ ነው።

በGoogle Kubernetes ሞተር ላይ የፐርኮና DBaaSን እንዴት ማሄድ እንደሚቻል

ጎግል ኩበርኔትስ ሞተር በእኔ አስተያየት የኩበርኔትስ ቴክኖሎጂ በጣም ተግባራዊ ከሆኑት ውስጥ አንዱ ነው። በብዙ የአለም ክልሎች የሚገኝ እና ቀላል እና ምቹ የሆነ የትዕዛዝ መስመር መሳሪያ (ኤስዲኬ) ያለው ሲሆን ይህም መድረክን በእጅ ከማስተዳደር ይልቅ ስክሪፕቶችን እንዲፈጥሩ ያስችልዎታል።

የእኛ DbaaS እንዲሰራ፣ የሚከተሉትን ክፍሎች እንፈልጋለን።

  1. ኩቤክትል
  2. ጉግል ክላውድ ኤስዲኬ።
  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

ጉግል ክላውድ ኤስዲኬን በመጫን ላይ

የሶፍትዌር ፓኬጁን በተመሳሳይ መንገድ እንጭነዋለን. ተጨማሪ ዝርዝሮች እዚህ.

# 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 ን በመጫን ላይ

ከፐርኮና ማከማቻዎች ጫን። የፐርኮና DBaaS CLI መሣሪያ አሁንም የሙከራ ምርት ነው፣ ስለዚህ በሙከራ ማከማቻ ውስጥ ይገኛል፣ እሱም በተናጠል መንቃት አለበት፣ ምንም እንኳን አስቀድመው የፐርኮና ማከማቻዎች የተጫኑ ቢሆኑም።

ይበልጥ እዚህ.

የመጫኛ ስልተ ቀመር፡

  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

የክፍሎችን አሠራር በማዘጋጀት ላይ

ስለ ቅንብሮች ተጨማሪ እዚህ.

በመጀመሪያ ወደ ጎግል መለያህ መግባት አለብህ። በተጨማሪም፣ Google ክላውድ አንድ ተጠቃሚ ብዙ ገለልተኛ ፕሮጄክቶችን እንዲይዝ ይፈቅድለታል፣ ስለዚህ ለዚህ ፕሮጀክት ኮድ በመጠቀም የሚሰራ ፕሮጀክት መግለጽ ያስፈልግዎታል፡-

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)

ከዚያ የስም ቦታን እንፈጥራለን እና ንቁ እንዲሆን እናደርጋለን. የስም ቦታ በግምት እንደ አንድ ፕሮጀክት ወይም አካባቢ ነው፣ ነገር ግን አስቀድሞ በኩበርኔትስ ክላስተር ውስጥ ነው። ከGoogle ክላውድ ፕሮጀክቶች ነጻ ነው፡-

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 የሚከተለውን ትዕዛዝ እንጠቀማለን:

# 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 በተቻለ ፍጥነት እና በቀላሉ ለማስኬድ ፣ ለመፈተሽ እና ከዚያ ለመዝጋት ወይም ለልማት ለማዋል ተግባሮችን ለመፈተሽ ይህ መፍትሄ ነው።

የፐርኮና DBaaS CLI መሳሪያ በ Kubernetes ላይ እንደ DBaaS አይነት መፍትሄ እንዲያገኙ ያግዝዎታል። በተመሳሳይ ጊዜ, በተግባራዊነቱ እና በአጠቃቀም ላይ መስራታችንን እንቀጥላለን.

ይህ ሪፖርት በመጀመሪያ የቀረበው በ @ የውሂብ ጎታዎች ስብሰባ በ Mail.ru Cloud Solutions&Tarantool. ተመልከት видео ሌሎች ትርኢቶች እና በቴሌግራም ውስጥ ለክስተቶች ማስታወቂያዎች ይመዝገቡ በ Mail.ru ቡድን ውስጥ Kubernetes ዙሪያ.

በርዕሱ ላይ ሌላ ምን ማንበብ አለብዎት:

  1. በዘመናዊ IIoT መድረክ ውስጥ ያሉ የውሂብ ጎታዎች።
  2. እንደገና ላለመምረጥ ለፕሮጀክት የውሂብ ጎታ እንዴት እንደሚመረጥ።

ምንጭ: hab.com

አስተያየት ያክሉ