ProHoster > blog > Utawala > Jinsi ya kuunda wingu la mseto kwa kutumia Kubernetes ambayo inaweza kuchukua nafasi ya DBaaS
Jinsi ya kuunda wingu la mseto kwa kutumia Kubernetes ambayo inaweza kuchukua nafasi ya DBaaS
Jina langu ni Petr Zaitsev, mimi ndiye Mkurugenzi Mtendaji, mwanzilishi percona na ninataka kukuambia:
jinsi tulivyotoka kwenye suluhisho la chanzo huria hadi Hifadhidata kama Huduma;
ni njia gani zipo za kupeleka hifadhidata kwenye wingu;
jinsi Kubernetes inaweza kuchukua nafasi ya DBaaS, kuondoa utegemezi wa muuzaji na kudumisha urahisi wa DBMS kama huduma.
Nakala hiyo ilitayarishwa kulingana na ripoti katika @Databases Meetup na Mail.ru Cloud Solutions & Tarantool. Ikiwa hutaki kusoma, unaweza kutazama:
Jinsi tulivyotoka kwa chanzo wazi hadi Hifadhidata kama Huduma kwenye wingu
Nimekuwa nikifanya kazi katika chanzo wazi tangu mwishoni mwa miaka ya 90. Miaka ishirini iliyopita, kutumia chanzo wazi, kama hifadhidata, haikuwa rahisi sana. Ilikuwa ni lazima kupakua msimbo wa chanzo, kiraka, kukusanya na kisha tu kuitumia.
Chanzo wazi kisha kilipitia safu ya kurahisisha:
Tar.gz na SAKINISHA vyanzo vilivyohitaji kukusanywa;
vifurushi vilivyo na tegemezi kama .deb na .rpm, ambapo unahitaji tu kusakinisha seti ya vifurushi;
hazina za vifurushi kama APT na YUM, ambayo usakinishaji ni otomatiki;
suluhisho kama vile Docker na Snap, ambayo hukuruhusu kupokea vifurushi kwa usakinishaji bila utegemezi wa nje.
Kwa hivyo, inakuwa rahisi kutumia programu huria na pia inapunguza kizuizi cha kuingia katika kuunda programu kama hizo.
Wakati huo huo, tofauti na hali ya miaka 20 iliyopita, wakati kila mtu alikuwa mtaalam wa mkutano, sasa watengenezaji wengi hawawezi kujenga zana wanazotumia kutoka kwa chanzo.
Kwa kweli, hii sio mbaya, kwa sababu:
Tunaweza kutumia programu ngumu zaidi lakini rahisi zaidi kwa watumiaji. Kwa mfano, kivinjari ni rahisi kutumia, lakini inajumuisha vipengele vingi vya chanzo wazi na ni vigumu kujenga kutoka mwanzo.
Watu wengi zaidi wanaweza kuwa watengenezaji wa chanzo huria na programu nyingine, programu zaidi hutumiwa na biashara, na hitaji lake ni kubwa zaidi.
Upande wa chini ni kwamba hatua inayofuata katika kurahisisha inahusishwa na matumizi ya ufumbuzi wa wingu, na hii inasababisha muuzaji fulani amefungwa, yaani, kumfunga kwa muuzaji mmoja. Tunatumia ufumbuzi rahisi na watoa huduma hutumia vipengele vya chanzo wazi, lakini kwa kweli wametundikwa kwenye mojawapo ya mawingu makubwa. Hiyo ni, njia rahisi na ya haraka zaidi ya kupeleka chanzo wazi (na programu inayoendana nayo) iko kwenye mawingu, kwa kutumia API ya umiliki.
Linapokuja suala la hifadhidata katika wingu, kuna njia mbili:
Kusanya miundombinu ya hifadhidata, kama katika kituo cha kawaida cha data. Hiyo ni, chukua vizuizi vya kawaida vya ujenzi: hesabu, uhifadhi, na kadhalika, sasisha Linux na hifadhidata juu yao, na uzisanidi.
Tumia Hifadhidata kama Huduma, ambapo mtoa huduma hutoa hifadhidata iliyotengenezwa tayari ndani ya wingu.
DBaaS ni soko linalokua kwa kasi sasa hivi kwa sababu inaruhusu wasanidi programu kufanya kazi moja kwa moja na hifadhidata na kupunguza kazi ya kawaida. Mtoa huduma anajitolea kuhakikisha Upatikanaji wa Juu na kuongeza urahisi, kuweka alama kwenye hifadhidata, hifadhi rudufu, na kurekebisha utendaji.
Aina mbili za Hifadhidata kama Huduma kulingana na chanzo huria na mbadala katika mfumo wa Kubernetes
Kuna aina mbili za Hifadhidata kama Huduma ya hifadhidata wazi:
Bidhaa ya kawaida ya programu huria iliyofungwa katika mazingira ya nyuma ya usimamizi kwa ajili ya kusambaza na usimamizi kwa urahisi.
Suluhisho la hali ya juu la kibiashara na nyongeza mbalimbali, sambamba na chanzo huria.
Chaguo zote mbili hupunguza uwezekano wa uhamiaji kati ya mawingu na kupunguza uhamishaji wa data na programu. Kwa mfano, licha ya ukweli kwamba aina tofauti za mawingu zinaunga mkono kimsingi kiwango sawa cha MySQL, kuna tofauti kubwa kati yao: katika uendeshaji, utendaji, chelezo, na kadhalika. Kuhama kutoka kwa wingu moja hadi nyingine kunaweza kuwa changamoto, haswa kwa programu ngumu.
Na hapa swali linatokea - inawezekana kupata urahisi wa Hifadhidata kama Huduma, lakini kama suluhisho rahisi la chanzo wazi?
Habari mbaya ni kwamba, kwa bahati mbaya, hakuna suluhisho kama hizo kwenye soko bado. Habari njema ni kwamba kuna Kubernetes, ambayo inakuwezesha kutekeleza ufumbuzi huo.
Kubernetes ni mfumo wa uendeshaji wa kituo cha wingu au data unaokuruhusu kusambaza na kudhibiti programu kwenye seva nyingi kwenye kundi badala ya seva pangishi moja.
Sasa Kubernetes ndiye kiongozi katika kitengo cha programu kama hizo. Kulikuwa na suluhisho nyingi tofauti kwa shida kama hizo, lakini ikawa kiwango. Kampuni nyingi zilizokuwa zikizingatia suluhu mbadala sasa zinalenga kurekebisha bidhaa zao ili kusaidia Kubernetes.
Kwa kuongeza, Kubernetes ni suluhisho la ulimwengu wote ambalo linasaidiwa katika mawingu ya faragha, ya umma na ya mseto ya wachuuzi wengi, kwa mfano: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.
Jinsi Kubernetes inavyofanya kazi na hifadhidata
Kubernetes iliundwa kwa ajili ya programu zisizo na uraia ambazo huchakata data lakini hazihifadhi chochote, kama vile huduma ndogo au programu za wavuti. Hifadhidata ziko kwenye mwisho mwingine wa wigo, ambayo ni, ni matumizi ya hali. Na Kubernetes haikukusudiwa kwa maombi kama haya.
Walakini, kuna vipengee ambavyo vimeonekana katika Kubernetes hivi karibuni ambavyo vinaruhusu utumiaji wa hifadhidata na programu zingine nzuri:
Dhana ya StatefulSet ni mfululizo mzima wa mambo ya awali ya kuchakata matukio kuhusu kusimamisha kazi ya maganda na kutekeleza Uzima wa Neema (kuzima kwa programu kutabirika).
Kiasi Kinachoendelea ni hifadhi za data ambazo zinahusishwa na maganda, vitu vya usimamizi wa Kubernetes.
Mfumo wa Opereta - ambayo ni, uwezo wa kuunda vipengee vya kudhibiti hifadhidata na programu zingine za serikali zinazosambazwa katika nodi nyingi.
Tayari sasa kwenye mawingu ya umma kuna Hifadhidata kubwa kama Huduma, ambayo nyuma yake ni Kubernetes, kwa mfano: CockroachCloud, InfluxDB, PlanetScale. Hiyo ni, hifadhidata ya Kubernetes sio tu kitu ambacho kinawezekana kinadharia, lakini pia kitu kinachofanya kazi kwa vitendo.
Percona ina suluhisho mbili za chanzo wazi kwa Kubernetes:
Opereta ya Kubernetes ya Seva ya Percona ya MongoDB.
Kubernetes Operator kwa XtraDB CLUSTER ni huduma inayoendana na MySQL na hutoa upatikanaji wa juu na uthabiti. Unaweza pia kutumia nodi moja ikiwa upatikanaji wa juu hauhitajiki, kwa mfano kwa hifadhidata ya dev.
Watumiaji wa Kubernetes wanaweza kugawanywa katika vikundi viwili. Baadhi ya watu hutumia Kubernetes Operators moja kwa moja - hawa ni watumiaji wa hali ya juu ambao wana ufahamu mzuri wa jinsi teknolojia inavyofanya kazi. Wengine huiendesha kwenye sehemu ya nyuma - watumiaji kama hao wanavutiwa na kitu kama Hifadhidata kama Huduma, hawataki kuangazia nuances ya Kubernetes. Kwa kundi la pili la watumiaji, tuna suluhisho lingine la chanzo wazi - Percona DBaaS CLI Tool. Hili ni suluhisho la majaribio kwa wale wanaotaka kupata chanzo huria cha DBaaS kulingana na Kubernetes bila ufahamu wa kina wa teknolojia.
Jinsi ya kuendesha DBaaS ya Percona kwenye Injini ya Google Kubernetes
Google Kubernetes Engine, kwa maoni yangu, ni mojawapo ya utekelezaji bora zaidi wa teknolojia ya Kubernetes. Inapatikana katika maeneo mengi ya dunia na ina Zana ya Mstari wa Amri rahisi na rahisi (SDK), ambayo inakuruhusu kuunda hati badala ya kudhibiti jukwaa wewe mwenyewe.
Ili DBaaS yetu ifanye kazi, tunahitaji vifaa vifuatavyo:
Kubectl.
SDK ya Wingu la Google.
Percona DBaaS CLI.
Sakinisha kubectl
Tunaweka kifurushi kwa mfumo wako wa kufanya kazi, tutaangalia mfano wa Ubuntu. Maelezo zaidi hapa.
Tunaweka kifurushi cha programu kwa njia ile ile. Maelezo zaidi hapa.
# 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
Inasakinisha Percona DBaaS CLI
Sakinisha kutoka kwa hazina za Percona. Zana ya Percona DBaaS CLI bado ni bidhaa ya majaribio, kwa hivyo iko kwenye hazina ya majaribio, ambayo lazima iwashwe kando, hata ikiwa tayari una hazina za Percona zilizosakinishwa.
Sanidi hazina za Percona kwa kutumia zana ya kutolewa kwa percona. Kwanza unahitaji kupakua na kusakinisha kifurushi rasmi cha kutolewa kwa percona kutoka Percona:
Kwanza unahitaji kuingia kwenye akaunti yako ya Google. Zaidi ya hayo, Wingu la Google huruhusu mtumiaji mmoja kuwa na miradi mingi inayojitegemea, kwa hivyo unahitaji kubainisha mradi unaofanya kazi kwa kutumia msimbo wa mradi huu:
gcloud auth login
gcloud config set project hidden-brace-236921
Ifuatayo, tunaunda kundi. Kwa onyesho, niliunda kundi la Kubernetes la nodi tatu pekee - hiki ndicho kiwango cha chini kinachohitajika kwa upatikanaji wa juu:
Kisha tunaunda nafasi ya majina na kuifanya iwe hai. Nafasi ya majina ni, takribani kusema, pia kama mradi au mazingira, lakini tayari iko ndani ya nguzo ya Kubernetes. Ni huru kutoka kwa miradi ya Wingu la Google:
Mara tu tumepitia hatua hizi chache, tunaweza kuanza nguzo ya nodi tatu kwa amri hii rahisi:
# 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
Jinsi ya kuunganisha kwenye nguzo
Kwa chaguo-msingi, inapatikana ndani ya Kubernetes pekee. Hiyo ni, haipatikani kutoka kwa seva hii ambayo uliendesha amri ya "Unda". Ili kuifanya ipatikane, kwa mfano, kwa majaribio na mteja, unahitaji kusambaza mlango kupitia Ramani ya Port:
mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP
Amri za juu za usimamizi wa nguzo
Hifadhidata kwenye IP ya umma
Ikiwa unataka suluhisho la kudumu zaidi la upatikanaji wa nguzo, unaweza kupata anwani ya IP ya nje. Katika kesi hii, hifadhidata itapatikana kutoka mahali popote. Hii ni salama kidogo, lakini mara nyingi inafaa zaidi. Kwa IP ya nje tunatumia amri ifuatayo:
# 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
Weka nenosiri wazi
Badala ya mfumo kutoa nenosiri kwa nasibu, unaweza kuweka nenosiri kwa uwazi:
Hili ni suluhisho la kazi za majaribio ili kufanya MySQL ifanye kazi haraka na kwa urahisi iwezekanavyo, ijaribu, kisha uifunge au uitumie kwa maendeleo.
Zana ya Percona DBaaS CLI hukusaidia kufikia suluhisho kama la DBaaS kwenye Kubernetes. Wakati huo huo, tunaendelea kufanya kazi juu ya utendaji wake na usability.