Yadda ake gina gajimare ta amfani da Kubernetes wanda zai iya maye gurbin DBaaS

Sunana Petr Zaitsev, ni ne Shugaba, wanda ya kafa perkona kuma ina so in gaya muku:

  • yadda muka fito daga buɗaɗɗen mafita zuwa Database azaman Sabis;
  • waɗanne hanyoyin da ake bi don ƙaddamar da bayanan bayanai a cikin gajimare;
  • yadda Kubernetes zai iya maye gurbin DBaaS, kawar da dogara ga mai siyarwa da kiyaye sauƙin DBMS azaman sabis.

An shirya labarin ne bisa rahoto a @Databases Meetup ta Mail.ru Cloud Solutions & Tarantool. Idan ba ku son karantawa, kuna iya kallo:


Yadda muka fito daga buɗaɗɗen tushe zuwa Database a matsayin Sabis a cikin gajimare

Ina aiki a buɗaɗɗen tushe tun ƙarshen 90s. Shekaru XNUMX da suka gabata, yin amfani da buɗaɗɗen tushe, kamar rumbun adana bayanai, bai kasance mai sauƙi ba. Ya zama dole a zazzage lambar tushe, faci, haɗa shi sannan kawai amfani da shi.

Bude tushen sannan ta bi jerin sauƙaƙawa:

  • Tar.gz da INSTALL kafofin da ake buƙatar haɗawa;
  • fakiti tare da abubuwan dogaro kamar .deb da .rpm, inda kawai kuna buƙatar shigar da saitin fakiti;
  • ma'ajiyar kunshin kamar APT da YUM, wanda shigarwa ke atomatik;
  • mafita kamar Docker da Snap, waɗanda ke ba ku damar karɓar fakiti ta hanyar shigarwa ba tare da dogaro na waje ba.

Sakamakon haka, yana samun sauƙin amfani da buɗaɗɗen software sannan kuma yana rage shingen shiga haɓaka irin waɗannan aikace-aikacen.

A lokaci guda kuma, ba kamar yanayin shekaru 20 da suka gabata ba, lokacin da kowa ya kasance ƙwararren taro, yanzu yawancin masu haɓakawa ba za su iya gina kayan aikin da suke amfani da su daga tushe ba.

A gaskiya, wannan ba mummunan ba ne, saboda:

  1. Za mu iya amfani da ƙarin hadaddun amma ƙarin software mai sauƙin amfani. Misali, mai lilo ya dace don amfani, amma ya haɗa da abubuwan buɗaɗɗen tushe da yawa kuma ba shi da daɗi don ginawa daga karce.
  2. Mutane da yawa za su iya zama masu haɓaka buɗaɗɗen tushe da sauran software, ƙarin software na kasuwanci ne ke amfani da shi, kuma buƙatarsa ​​ta fi girma.

Rashin ƙasa shi ne cewa mataki na gaba a sauƙaƙe yana da alaƙa da amfani da mafita na girgije, kuma wannan yana haifar da wani kulle-kulle mai sayarwa, wato, ɗaure ga mai sayarwa ɗaya. Muna amfani da mafita mai sauƙi kuma masu samarwa suna amfani da abubuwan buɗe tushen tushen, amma a zahiri an ƙusa su zuwa ɗaya daga cikin manyan girgije. Wato, hanya mafi sauƙi kuma mafi sauri don tura buɗaɗɗen tushe (da software da ta dace da ita) tana cikin gajimare, ta amfani da API na mallakar mallaka.

Lokacin da yazo ga bayanan bayanai a cikin gajimare, akwai hanyoyi guda biyu:

  1. Haɗa kayan aikin bayanai, kamar a cikin cibiyar bayanai na yau da kullun. Wato, ɗauki daidaitattun tubalan gini: ƙididdigewa, ajiya, da sauransu, shigar da Linux da bayanan bayanai akan su, sannan a daidaita su.
  2. Yi amfani da Database azaman Sabis, inda mai bada sabis ke ba da shirye-shiryen da aka ƙera a cikin gajimare.

DBaaS kasuwa ce mai saurin girma a yanzu saboda yana ba masu haɓaka damar yin aiki kai tsaye tare da bayanan bayanai kuma yana rage ayyukan yau da kullun. Mai badawa yana ɗauka don tabbatar da Babban Samuwar da sauƙin sikeli, facin bayanai, adanawa, da daidaita ayyukan aiki.

Nau'ikan Bayanai guda biyu azaman Sabis dangane da buɗaɗɗen tushe da madadin a cikin hanyar Kubernetes

Akwai nau'ikan Database iri biyu azaman Sabis don buɗe bayanan bayanai:

  1. Madaidaicin samfurin buɗaɗɗen tushen buɗaɗɗen kayan masarufi a cikin bayanan gudanarwa don sauƙin turawa da gudanarwa.
  2. Maganin kasuwanci na ci gaba tare da ƙari daban-daban, mai jituwa tare da buɗaɗɗen tushe.

Duk zaɓuɓɓukan biyu suna rage yuwuwar ƙaura tsakanin gizagizai da rage ɗaukar bayanai da aikace-aikace. Misali, duk da cewa nau'ikan girgije daban-daban suna tallafawa ainihin daidaitattun MySQL, akwai bambance-bambance masu mahimmanci a tsakanin su: a cikin aiki, aiki, madadin, da sauransu. Ƙaura daga wannan gajimare zuwa wani na iya zama ƙalubale, musamman ga aikace-aikace masu rikitarwa.

Kuma a nan tambaya ta taso - shin zai yiwu a sami dacewa na Database a matsayin Sabis, amma a matsayin mafita mai sauƙi na budewa?

Labari mara kyau shine, rashin alheri, babu irin wannan mafita akan kasuwa tukuna. Labari mai dadi shine cewa akwai Kubernetes, wanda ke ba ku damar aiwatar da irin waɗannan mafita.

Kubernetes tsarin aiki ne don girgije ko cibiyar bayanai wanda ke ba ku damar turawa da sarrafa aikace-aikacen a cikin sabar da yawa a cikin tari maimakon a kan runduna ɗaya.

Yanzu Kubernetes shine jagora a cikin nau'in irin wannan software. Akwai hanyoyi daban-daban na magance irin waɗannan matsalolin, amma ya zama ma'auni. Kamfanoni da yawa waɗanda a da ke mayar da hankali kan hanyoyin magance su yanzu suna mai da hankali kan daidaita samfuran su don tallafawa Kubernetes.

Bugu da ƙari, Kubernetes shine mafita na duniya wanda ke tallafawa a cikin masu zaman kansu, jama'a da kuma gajimare masu yawa na masu sayarwa, misali: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.

Yadda Kubernetes ke aiki tare da bayanan bayanai

An tsara Kubernetes asali don aikace-aikacen marasa jiha waɗanda ke sarrafa bayanai amma ba sa adana komai, kamar microservices ko aikace-aikacen yanar gizo. Databases suna a ɗayan ƙarshen bakan, wato, aikace-aikace ne masu inganci. Kuma Kubernetes ba asali aka yi niyya don irin waɗannan aikace-aikacen ba.

Koyaya, akwai fasalulluka waɗanda suka bayyana a cikin Kubernetes kwanan nan waɗanda ke ba da izinin amfani da bayanan bayanai da sauran ƙa'idodi masu inganci:

  1. Ma'anar StatefulSet gabaɗayan jerin abubuwan da suka faru ne don sarrafa abubuwan da suka faru game da dakatar da aikin kwasfa da aiwatar da rufewar Graceful (Rufe aikace-aikacen da za a iya faɗi).
  2. Ƙaƙƙarfan Ƙaƙwalwar Ƙaƙƙarfan bayanai ne da ke da alaƙa da kwasfan fayiloli, abubuwan sarrafa Kubernetes.
  3. Tsarin Aiki - wato ikon ƙirƙirar abubuwan da aka haɗa don sarrafa bayanan bayanai da sauran ƙa'idodi masu inganci waɗanda aka rarraba a ko'ina da yawa.

Tuni a cikin gizagizai na jama'a akwai manyan Databases a matsayin Sabis, wanda bayansa shine Kubernetes, misali: CockroachCloud, InfluxDB, PlanetScale. Wato, bayanan bayanai akan Kubernetes ba wai kawai wani abu bane mai yuwuwa a ka'ida, har ma wani abu ne da ke aiki a aikace.

Percona yana da hanyoyin buɗe tushen mafita guda biyu don Kubernetes:

  1. Kubernetes Operator don Percona Server don MongoDB.
  2. Kubernetes Operator don XtraDB CLUSTER sabis ne wanda ya dace da MySQL kuma yana ba da babban samuwa da daidaito. Hakanan zaka iya amfani da kumburi guda ɗaya idan ba a buƙatar samun dama mai yawa, misali don bayanan dev.

Ana iya raba masu amfani da Kubernetes zuwa ƙungiyoyi biyu. Wasu mutane suna amfani da Kubernetes Operators kai tsaye - waɗannan galibin ci-gaban masu amfani ne waɗanda ke da kyakkyawar fahimtar yadda fasahar ke aiki. Wasu suna gudanar da shi a baya - irin waɗannan masu amfani suna sha'awar wani abu kamar Database azaman Sabis, ba sa so su shiga cikin nuances na Kubernetes. Ga rukuni na biyu na masu amfani, muna da wani buɗaɗɗen tushen mafita - Percona DBaaS CLI Tool. Wannan shine mafita na gwaji ga waɗanda suke son samun buɗaɗɗen tushen DBaaS bisa Kubernetes ba tare da zurfin fahimtar fasaha ba.

Yadda ake gudanar da DBaaS na Percona akan Injin Google Kubernetes

Injin Kubernetes Google, a ganina, yana ɗaya daga cikin mafi yawan aiwatar da fasahar Kubernetes. Ana samunsa a yankuna da yawa na duniya kuma yana da kayan aikin Layin Umurni mai sauƙi da dacewa (SDK), wanda ke ba ku damar ƙirƙirar rubutun maimakon sarrafa dandamali da hannu.

Domin DBaaS ɗinmu ya yi aiki, muna buƙatar abubuwan da ke biyowa:

  1. Kubectl.
  2. Google Cloud SDK.
  3. Farashin DbaaS CLI.

Shigar kubectl

Mun shigar da kunshin don tsarin aiki, za mu dubi misalin Ubuntu. Karin bayani a nan.

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

Ana shigar da Google Cloud SDK

Muna shigar da kunshin software a cikin hanya guda. Karin bayani a nan.

# 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

Shigar da Percona DBaaS CLI

Shigar daga ma'ajin Percona. Percona DBaaS CLI Tool har yanzu samfurin gwaji ne, don haka yana cikin ma'ajiyar gwaji, wanda dole ne a kunna shi daban, koda kuwa an riga an shigar da ma'ajin Percona.

Read more a nan.

Algorithm na shigarwa:

  1. Kafa ma'ajin Percona ta amfani da kayan aikin-sakin percona. Da farko kuna buƙatar saukewa kuma shigar da fakitin sakin percona na hukuma daga Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Kunna ɓangaren ma'ajiyar kayan aikin gwaji kamar haka:
    sudo percona-release enable tools experimental
    
  3. Sanya kunshin percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Kafa aiki na sassa

Ƙari game da saituna a nan.

Da farko kuna buƙatar shiga cikin asusunku na Google. Bugu da ari, Google Cloud yana ba mai amfani ɗaya damar samun ayyuka masu zaman kansu da yawa, don haka kuna buƙatar tantance aikin aiki ta amfani da lambar don wannan aikin:

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

Na gaba, muna ƙirƙirar tari. Don demo, Na ƙirƙiri gungu na Kubernetes na nodes guda uku kawai - wannan shine mafi ƙarancin da ake buƙata don samun dama:

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

Umurnin kubectl mai zuwa yana ba da gata da ake so ga mai amfaninmu na yanzu:

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

Sa'an nan kuma mu ƙirƙiri suna kuma sanya shi aiki. Sunan sararin samaniya, kusan magana ne, kuma yana kama da aiki ko muhalli, amma tuni yana cikin gungu na Kubernetes. Yana da zaman kansa daga ayyukan Google Cloud:

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

Fara tari

Da zarar mun bi ta waɗannan ƴan matakai, za mu iya fara gungu na kulli uku tare da wannan umarni mai sauƙi:

# 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

Yadda ake haɗawa da tari

Ta hanyar tsoho, yana samuwa ne kawai a cikin Kubernetes. Wato, ba a samun dama daga wannan uwar garken wanda daga cikinsa kuka gudanar da umarnin "Create". Don samar da ita, misali, don gwaje-gwaje tare da abokin ciniki, kuna buƙatar tura tashar jiragen ruwa ta hanyar Taswirar Port:

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

Sannan mun haɗa abokin ciniki na MySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Babban umarni sarrafa tari

Database a kan jama'a IP

Idan kuna son ƙarin bayani na dindindin don samun gungu, zaku iya samun adireshin IP na waje. A wannan yanayin, za a iya samun damar adana bayanai daga ko'ina. Wannan ba shi da ƙarancin tsaro, amma galibi ya fi dacewa. Don IP na waje muna amfani da umarni mai zuwa:

# 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

Saita kalmar sirri a sarari

Maimakon tsarin yana samar da kalmar sirri ba da gangan ba, kuna iya saita kalmar wucewa a sarari:

# 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

Ina nuna fitowar rubutun a cikin tsarin ɗan adam wanda za'a iya karantawa, amma tsarin JSON shima ana tallafawa.

Kashe babban samuwa

Tare da umarni mai zuwa zaka iya musaki babban samuwa don tura kundi guda:

# 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

Wannan shine mafita don gwajin ayyuka don samun MySQL sama da gudana cikin sauri da sauƙi kamar yadda zai yiwu, gwada shi, sannan a rufe shi ko amfani da shi don haɓakawa.

Kayan aikin Percona DBaaS CLI yana taimaka muku cimma mafita mai kama da DBaaS akan Kubernetes. A lokaci guda kuma, muna ci gaba da aiki akan ayyukan sa da amfani.

An fara gabatar da wannan rahoto a @Databases Meetup ta Mail.ru Cloud Solutions&Tarantool. Duba видео sauran wasan kwaikwayo da kuma biyan kuɗi zuwa sanarwar taron akan Telegram A kusa da Kubernetes a Ƙungiyar Mail.ru.

Me kuma za a karanta a kan batun:

  1. Databases a cikin tsarin IIoT na zamani.
  2. Yadda ake zabar rumbun adana bayanai don aiki don kada ku sake zabar.

source: www.habr.com

Add a comment