Me pehea te hanga kapua ranu ma te whakamahi i nga Kubernetes hei whakakapi i te DBaaS

Ko Petr Zaitsev toku ingoa, ko ahau te Tumuaki, kaiwhakarewa percona a ka hiahia ahau ki te korero ki a koe:

  • me pehea i ahu mai ai matou i nga otinga puna tuwhera ki te Raraunga Raraunga hei Ratonga;
  • he aha nga huarahi e noho ana ki te tuku i nga papaunga raraunga ki te kapua;
  • me pehea e taea ai e Kubernetes te whakakapi i te DBaaS, te whakakore i te whakawhirinaki o te kaihoko me te pupuri i te ngawari o te DBMS hei ratonga.

I whakaritea te tuhinga i runga i te purongo i @Databases Meetup na Mail.ru Cloud Solutions & Tarantool. Ki te kore koe e pirangi ki te panui, ka taea e koe te mataki:


Me pehea tatou i ahu mai i te puna tuwhera ki te Raraunga Raraunga hei Ratonga i te kapua

Kua mahi ahau i te puna tuwhera mai i te mutunga o te 90s. E rua tekau tau ki muri, ko te whakamahi i te puna tuwhera, penei i nga papaunga raraunga, ehara i te mea ngawari. He mea tika ki te tango i te waehere puna, papaki, whakahiato katahi ka whakamahi.

Ko te puna tuwhera ka haere i roto i te raupapa whakangawari:

  • Tar.gz me te WHAKATAHI nga puna e tika ana kia whakahiato;
  • pōkai whai whakawhirinakitanga pēnei i te .deb me te .rpm, me whakauru noa koe i te huinga pōkai;
  • nga putunga putunga penei i te APT me te YUM, he aunoa te whakaurunga;
  • nga otinga penei i te Docker me te Snap, e taea ai e koe te whiwhi kete ma te whakaurunga kaore he herenga o waho.

Ko te mutunga, ka ngawari ake te whakamahi i nga punaha punaha tuwhera me te whakaheke i te arai ki te uru ki te whakawhanake i aua tono.

I te wa ano, kaore i rite ki te ahuatanga o te 20 tau ki muri, i te wa e mohio ana te katoa ki te huihuinga, inaianei kaore e taea e te nuinga o nga kaihanga te hanga i nga taputapu e whakamahia ana e ratou mai i te puna.

Ko te tikanga, ehara tenei i te kino, na te mea:

  1. Ka taea e tatou te whakamahi i nga rorohiko uaua ake engari he pai ake te whakamahi i te rorohiko. Hei tauira, he watea te whakamahi i te kaitirotiro, engari he maha nga waahanga puna tuwhera kei roto, he uaua ki te hanga mai i te wahanga.
  2. He maha ake nga tangata ka noho hei kaiwhakawhanake mo te puna tuwhera me etahi atu rorohiko, ka nui ake nga rorohiko e whakamahia ana e nga pakihi, me te hiahia mo taua mea.

Ko te taha ki raro ko te waahanga e whai ake nei i roto i te ngawari e hono ana ki te whakamahi i nga otinga kapua, a na tenei ka arahi ki tetahi kaihoko raka, ara, te here ki tetahi kaiwhakarato. Ka whakamahia e matou nga otinga ngawari me nga kaiwhakarato e whakamahi ana i nga waahanga puna tuwhera, engari ko te mea ka werohia ki tetahi o nga kapua nui. Arā, ko te huarahi ngawari me te tere ki te hora i te puna tuwhera (me te raupaparorohiko e hototahi ana ki a ia) kei roto i nga kapua, ma te whakamahi i te API rangatira.

Ina tae mai ki nga papaunga raraunga i te kapua, e rua nga huarahi:

  1. Huihuia te hanganga pātengi raraunga, pera i roto i te pokapū raraunga auau. Arā, tango i nga poraka hanga paerewa: te tatau, te rokiroki, me era atu, whakauru i te Linux me te papaarangi ki runga, ka whirihora.
  2. Whakamahia te Raraunga Raraunga hei Ratonga, kei reira ka tukuna e te kaiwhakarato he papaunga raraunga kua rite ki roto i te kapua.

Ko te DBaaS he maakete e tipu tere ana inaianei na te mea ka taea e nga kaiwhakawhanake te mahi tika me nga papaa raraunga me te whakaiti i nga mahi o ia ra. Ka whakapau kaha te kaiwhakarato ki te whakarite i te Wāteatanga Nui me te ngawari ki te tauine, te papaki papaunga raraunga, te taapiri, me te whakatika mahi.

E rua nga momo Raraunga Raraunga hei Ratonga i runga i te puna tuwhera me tetahi momo rereke i te ahua o Kubernetes

E rua nga momo Raraunga Raraunga hei Ratonga mo nga papaunga raraunga tuwhera:

  1. He hua puna tuwhera paerewa kua whakauruhia ki roto i te tuara whakahaere mo te ngawari ki te tuku me te whakahaere.
  2. He otinga arumoni matatau me nga momo taapiri, he hototahi ki te puna tuwhera.

Ko nga whiringa e rua ka whakaiti i te kaha o te heke i waenga i nga kapua me te whakaheke i te kawe o nga raraunga me nga tono. Hei tauira, ahakoa ko nga momo kapua e tautoko ana i te MySQL paerewa kotahi, he rereke nga rereketanga i waenga i a raatau: i te mahi, i te mahi, i te taapiri, me era atu. He uaua te heke mai i tetahi kapua ki tetahi atu, ina koa mo nga tono uaua.

Na konei ka puta ake te patai - ka taea ranei te whiwhi i te waatea o te Raraunga Raraunga hei Ratonga, engari he otinga tuwhera ngawari noa?

Ko te korero kino ko te mea, kaore ano he otinga penei i runga i te maakete. Ko te rongo pai kei reira a Kubernetes, e taea ai e koe te whakatinana i aua otinga.

He punaha whakahaere a Kubernetes mo te kapua, te pokapū raraunga ranei e taea ai e koe te tuku me te whakahaere i tetahi tono puta noa i nga tūmau maha i roto i te roopu, kaua ki te kaihautu kotahi.

Inaianei ko Kubernetes te kaihautu i roto i te waahanga o aua momo rorohiko. He maha nga otinga rereke mo enei raru, engari ka noho hei paerewa. He maha nga kamupene e aro nui ana ki etahi atu otinga kei te aro inaianei ki te whakarereke i a raatau hua ki te tautoko i nga Kubernetes.

I tua atu, ko Kubernetes he otinga mo te ao katoa e tautokohia ana i roto i nga kapua motuhake, iwi whanui me nga kapua ranu o nga kaihoko maha, hei tauira: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.

Me pehea te mahi a Kubernetes me nga papaa raraunga

I hoahoatia tuatahitia a Kubernetes mo nga tono kore whenua e tukatuka raraunga engari karekau e penapena tetahi mea, penei i nga ratonga miihini, tono paetukutuku ranei. Ko nga raraunga kei tera pito o te awhiowhiotanga, ara, he tono whaimana. A ko Kubernetes ehara i te mea tuatahi mo enei tono.

Heoi ano, he ahuatanga kua puta mai i Kubernetes i mua tata nei e taea ai te whakamahi i nga papaunga raraunga me etahi atu tono whaimana:

  1. Ko te ariā StatefulSet he raupapa o mua mo te tukatuka i nga kaupapa e pa ana ki te whakamutu i te mahi o nga poti me te whakatinana i te Whakaweto Ataahua (ka taea te kati o te tono).
  2. Ko nga Rorohiko Tonu he toa raraunga e hono ana ki nga poti, nga taonga whakahaere Kubernetes.
  3. Anga Kaiwhakahaere - ara, te kaha ki te hanga i nga waahanga mo te whakahaere i nga papaunga raraunga me etahi atu tono whaimana kua tohatohahia puta noa i nga waahanga maha.

Inaianei kei roto i nga kapua a te iwi he nui nga Raraunga Raraunga hei Ratonga, ko te pito o muri ko Kubernetes, hei tauira: CockroachCloud, InfluxDB, PlanetScale. Arā, ko te pātengi raraunga i runga i te Kubernetes ehara i te mea ka taea anake, engari he mea e mahi ana.

E rua nga otinga puna tuwhera a Percona mo Kubernetes:

  1. Kaiwhakahaere Kubernetes mo te Tūmau Percona mo MongoDB.
  2. Ko te Kaiwhakahaere Kubernetes mo XtraDB CLUSTER he ratonga e hototahi ana ki a MySQL me te whakarato i te waatea me te riterite. Ka taea hoki e koe te whakamahi i te node kotahi ki te kore e hiahiatia kia nui te waatea, hei tauira mo te putunga raraunga dev.

Ka taea te wehea nga kaiwhakamahi Kubernetes ki nga roopu e rua. Ko etahi ka whakamahi tika i nga Kaiwhakahaere Kubernetes - ko te nuinga o nga kaiwhakamahi matatau e mohio pai ana ki te mahi o te hangarau. Ko etahi ka whakahaere i runga i te tuara - ko nga kaiwhakamahi e aro ana ki tetahi mea penei i te Raraunga Raraunga hei Ratonga, kaore ratou e hiahia ki te ruku ki nga ahuatanga o Kubernetes. Mo te roopu tuarua o nga kaiwhakamahi, kei a matou tetahi atu otinga puna tuwhera - Percona DBaaS CLI Tool. He otinga whakamatautau tenei mo te hunga e hiahia ana ki te tiki DBaaS puna tuwhera i runga i nga Kubernetes me te kore e tino mohio ki te hangarau.

Me pehea te whakahaere i te DBaaS a Percona i runga i te Google Kubernetes Engine

Ko Google Kubernetes Engine, ki taku whakaaro, ko tetahi o nga tino whakatinanatanga o te hangarau Kubernetes. E wātea ana i roto i nga rohe maha o te ao, he Utauta Raina Whakahau (SDK) ngawari me te watea, e taea ai e koe te hanga tuhinga, kaua ki te whakahaere a-ringa i te turanga.

Kia mahi to tatou DBaaS, me hiahia nga waahanga e whai ake nei:

  1. Kubectl.
  2. Google Cloud SDK.
  3. Percona DBaaS CLI.

Tāuta kubectl

Ka whakauruhia e matou te kete mo to punaha whakahaere, ka tirohia e matou te tauira o Ubuntu. Ētahi atu kōrero konei.

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

Te whakauru i te Google Cloud SDK

Ka whakauruhia e matou te putea rorohiko i te huarahi ano. Ētahi atu kōrero konei.

# 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

Te whakauru i a Percona DBaaS CLI

Tāutahia mai i nga whare pupuri Percona. He hua whakamatautau tonu a Percona DBaaS CLI Tool, no reira kei roto i te whare putunga whakamatautau, me whakahohea motuhake, ahakoa kua whakauruhia e koe nga putunga Percona.

Pānuitia atu konei.

Algorithm whakauru:

  1. Whakaritehia nga whare pupuri Percona ma te whakamahi i te taputapu tuku-percona. Tuatahi ka hiahia koe ki te tango me te whakauru i te kete tuku-percona mana mai i Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Whakahohehia te waahanga putunga taputapu whakamatautau penei:
    sudo percona-release enable tools experimental
    
  3. Tāutahia te mōkihi percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Te whakarite i nga mahi o nga waahanga

He korero ano mo nga tautuhinga konei.

Tuatahi me whakauru koe ki to putea Google. I tua atu, ka whakaaetia e Google Cloud tetahi kaiwhakamahi kia maha nga kaupapa motuhake, na me tohu e koe he kaupapa mahi ma te whakamahi i te waehere mo tenei kaupapa:

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

I muri mai, ka hangaia e matou he huinga. Mo te demo, i hanga e ahau he kahui Kubernetes e toru noa nga pona - koinei te iti rawa e hiahiatia ana mo te waatea nui:

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

Ko te whakahau kubectl e whai ake nei ka hoatu nga painga e hiahiatia ana ki to tatou kaiwhakamahi o naianei:

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

Na ka hangaia e matou he mokowā ingoa me te mahi. Ko te mokowā ingoa, he rite tonu ki te kaupapa, ki te taiao ranei, engari kei roto tonu i te roopu Kubernetes. He motuhake mai i nga kaupapa Google Cloud:

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

Ka timata te tautau

I muri i enei waahanga iti, ka taea e tatou te timata i te huinga toru-node me tenei whakahau ngawari:

# 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

Me pehea te hono atu ki te roopu

Ma te taunoa, kei roto noa i nga Kubernetes. Arā, kaore e taea te uru mai i tenei tūmau i whakahaerehia e koe te whakahau "Waihanga". Kia watea ai, hei tauira, mo nga whakamatautau me tetahi kaihoko, me tuku e koe te tauranga ma te Mahere Tauranga:

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

Na ka hono matou i to kaihoko MySQL:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Ko nga whakahau whakahaere kohinga matatau

Raraunga i runga i te IP tūmatanui

Mena kei te hiahia koe ki tetahi otinga pumau mo te waatea o te roopu, ka taea e koe te tiki i tetahi wahitau IP o waho. I roto i tenei take, ka waatea te papaa raraunga mai i nga waahi katoa. He iti ake te haumaru, engari he watea ake. Mo te IP o waho ka whakamahia e matou te whakahau e whai ake nei:

# 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

Whakaritea te kupuhipa

Engari ki te hanga matapōkeretia e te punaha he kupuhipa, ka taea e koe te tautuhi i te kupuhipa:

# 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

Kei te whakaatu ahau i te putanga o nga tuhinga i roto i te whakatakotoranga panui tangata, engari kei te tautokohia te whakatakotoranga JSON.

Whakawetohia te waatea nui

Ma te whakahau e whai ake nei ka taea e koe te whakakore i te waatea nui ki te tuku i tetahi node kotahi:

# 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

He otinga tenei mo te whakamatautau i nga mahi kia tere ake te whakahaere i a MySQL me te ngawari, ka whakamatauhia, katahi ka kati, ka whakamahia ranei hei whanaketanga.

Ko te taputapu Percona DBaaS CLI ka awhina i a koe ki te whakatutuki i tetahi otinga penei i te DBaaS i runga i nga Kubernetes. I te wa ano, kei te mahi tonu matou i runga i tana mahi me tana whakamahinga.

I tukuna tuatahi tenei purongo i @Patengi Raraunga Huihuinga na Mail.ru Cloud Solutions&Tarantool. Titiro видео etahi atu whakaaturanga me te ohauru ki nga panui kaupapa i runga Telegram Huri noa i a Kubernetes i te Roopu Mail.ru.

He aha atu hei panui mo te kaupapa:

  1. Raraunga raraunga i roto i te papaaho IIoT hou.
  2. Me pehea te whiriwhiri i te papaa raraunga mo tetahi kaupapa kia kore ai koe e whiriwhiri ano.

Source: will.com

Tāpiri i te kōrero