Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Mawingu ni kama kisanduku cha uchawi - unauliza unachohitaji, na rasilimali zinaonekana bila mpangilio. Mashine halisi, hifadhidata, mtandao - yote haya ni yako tu. Kuna wapangaji wengine wa wingu, lakini katika Ulimwengu wako wewe ndiye mtawala pekee. Una hakika kuwa utapokea rasilimali zinazohitajika kila wakati, hauzingatii mtu yeyote na unaamua kwa hiari mtandao utakavyokuwa. Je, uchawi huu hufanyaje kazi ambayo hufanya wingu kutenga rasilimali kwa usawa na kuwatenga kabisa wapangaji kutoka kwa kila mmoja?

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Wingu la AWS ni mfumo changamano wa mega-super ambao umekuwa ukibadilika kimageuzi tangu 2006. Sehemu ya maendeleo haya ilifanyika Vasily Pantyukhin - Mbunifu wa Huduma za Wavuti za Amazon. Kama mbunifu, anapata mwonekano wa ndani sio tu matokeo ya mwisho, lakini pia katika changamoto ambazo AWS inashinda. Kadiri uelewa wa jinsi mfumo unavyofanya kazi, ndivyo uaminifu unavyoongezeka. Kwa hiyo, Vasily atashiriki siri za huduma za wingu za AWS. Ifuatayo ni muundo wa seva halisi za AWS, upanuzi wa hifadhidata nyumbufu, hifadhidata maalum ya Amazon na mbinu za kuongeza utendakazi wa mashine pepe huku zikipunguza bei yake kwa wakati mmoja. Ujuzi wa mbinu za usanifu za Amazon utakusaidia kutumia huduma za AWS kwa ufanisi zaidi na unaweza kukupa mawazo mapya ya kujenga masuluhisho yako mwenyewe.

Kuhusu msemaji: Vasily Pantyukhin (Kuku) ilianza kama msimamizi wa Unix katika makampuni ya .ru, ilifanya kazi kwenye maunzi makubwa ya mfumo wa Sun Microsystem kwa miaka 6, na kuhubiri ulimwengu unaozingatia data katika EMC kwa miaka 11. Ilibadilika kuwa mawingu ya kibinafsi, na mnamo 2017 ilihamia kwa umma. Sasa anatoa ushauri wa kiufundi ili kusaidia kuishi na kuendeleza katika wingu la AWS.

Kanusho: kila kitu hapa chini ni maoni ya kibinafsi ya Vasily na huenda yasiendane na msimamo wa Huduma za Wavuti za Amazon. Kurekodi video Ripoti ambayo makala inategemea inapatikana kwenye chaneli yetu ya YouTube.

Kwa nini ninazungumza juu ya kifaa cha Amazon?

Gari langu la kwanza lilikuwa na upitishaji wa mwongozo. Ilikuwa nzuri kwa sababu ya hisia kwamba ningeweza kuendesha gari na kuwa na udhibiti kamili juu yake. Pia nilipenda kwamba angalau nilielewa kanuni ya uendeshaji wake. Kwa kawaida, nilifikiria muundo wa sanduku kuwa wa zamani kabisa - kitu kama sanduku la gia kwenye baiskeli.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Kila kitu kilikuwa kizuri, isipokuwa kwa jambo moja - kukwama kwenye foleni za trafiki. Inaonekana umeketi bila kufanya chochote, lakini unabadilisha gia kila wakati, ukibonyeza clutch, gesi, breki - inakufanya uchovu. Tatizo la msongamano wa magari lilitatuliwa kwa kiasi familia ilipopata gari la kiotomatiki. Wakati wa kuendesha gari, nilikuwa na wakati wa kufikiria juu ya kitu na kusikiliza kitabu cha sauti.

Siri nyingine ilionekana katika maisha yangu, kwa sababu niliacha kabisa kuelewa jinsi gari langu linavyofanya kazi. Gari la kisasa ni kifaa ngumu. Gari hubadilika wakati huo huo kwa vigezo kadhaa tofauti: kushinikiza gesi, breki, mtindo wa kuendesha gari, ubora wa barabara. Sielewi jinsi inavyofanya kazi tena.

Nilipoanza kufanya kazi kwenye wingu la Amazon, pia ilikuwa siri kwangu. Siri hii tu ni amri ya ukubwa zaidi, kwa sababu kuna dereva mmoja kwenye gari, na katika AWS kuna mamilioni yao. Watumiaji wote wakati huo huo wanaongoza, bonyeza gesi na kuvunja. Inashangaza kwamba wanaenda mahali wanapotaka - ni muujiza kwangu! Mfumo hubadilika kiatomati, mizani na hurekebisha kwa usawa kwa kila mtumiaji ili ionekane kwake kuwa yuko peke yake katika Ulimwengu huu.

Uchawi uliisha kidogo nilipokuja kufanya kazi kama mbunifu huko Amazon. Niliona matatizo tunayokabiliana nayo, jinsi tunavyoyatatua, na jinsi tunavyokuza huduma. Kwa kuongezeka kwa uelewa wa jinsi mfumo unavyofanya kazi, imani zaidi katika huduma inaonekana. Kwa hivyo ninataka kushiriki picha ya kile kilicho chini ya kifuniko cha wingu la AWS.

Tutazungumza nini

Nilichagua mbinu mseto - nilichagua huduma 4 za kupendeza ambazo zinafaa kuzungumzia.

Uboreshaji wa seva. Mawingu ya muda mfupi yenye mwonekano halisi: vituo vya data halisi ambapo kuna seva halisi ambazo hutuliza, kupasha joto na kupepesa kwa taa.

Vitendaji visivyo na seva (Lambda) labda ndio huduma hatari zaidi kwenye wingu.

Kuongeza hifadhidata. Nitakuambia kuhusu jinsi tunavyounda hifadhidata zetu zinazoweza kupanuka.

Kuongeza mtandao. Sehemu ya mwisho ambayo nitafungua kifaa cha mtandao wetu. Hili ni jambo la ajabu - kila mtumiaji wa wingu anaamini kwamba yuko peke yake katika wingu na haoni wapangaji wengine kabisa.

Kumbuka. Nakala hii itajadili uboreshaji wa seva na kuongeza hifadhidata. Tutazingatia kuongeza mtandao katika makala inayofuata. Je, kazi zisizo na seva ziko wapi? Nakala tofauti ilichapishwa juu yao "Ndogo, lakini smart. Unboxing Firecracker microvirtual" Inazungumza juu ya njia kadhaa tofauti za kuongeza kiwango, na inajadili kwa undani suluhisho la Firecracker - ishara ya sifa bora za mashine na vyombo.

Seva

Wingu ni ephemeral. Lakini ephemerality hii bado ina embodiment kimwili - seva. Hapo awali, usanifu wao ulikuwa wa classical. Chipset ya kawaida ya x86, kadi za mtandao, Linux, Xen hypervisor ambayo mashine za kawaida ziliendeshwa.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Mnamo 2012, usanifu huu ulishughulikia kazi zake vizuri. Xen ni hypervisor kubwa, lakini ina drawback moja kuu. Anatosha juu juu kwa ajili ya kuiga kifaa. Kadi mpya, za kasi za mtandao au viendeshi vya SSD vinapopatikana, usomaji huu unakuwa wa juu sana. Jinsi ya kukabiliana na tatizo hili? Tuliamua kufanya kazi kwa pande mbili mara moja - boresha vifaa na hypervisor. Kazi ni nzito sana.

Kuboresha maunzi na hypervisor

Kufanya kila kitu mara moja na kuifanya vizuri haitafanya kazi. Nini "nzuri" ilimaanisha pia haikuwa wazi mwanzoni.

Tuliamua kuchukua njia ya mageuzi - tunabadilisha kipengele kimoja muhimu cha usanifu na kutupa katika uzalishaji.

Tunakanyaga kila reki, tunasikiliza malalamiko na mapendekezo. Kisha tunabadilisha sehemu nyingine. Kwa hivyo, kwa nyongeza ndogo, tunabadilisha kwa kiasi kikubwa usanifu mzima kulingana na maoni kutoka kwa watumiaji na usaidizi.

Mabadiliko yalianza mnamo 2013 na jambo ngumu zaidi - mtandao. KATIKA С3 matukio, kadi maalum ya Kuongeza kasi ya Mtandao iliongezwa kwenye kadi ya kawaida ya mtandao. Iliunganishwa halisi na kebo fupi ya kitanzi kwenye paneli ya mbele. Sio nzuri, lakini haionekani kwenye wingu. Lakini mwingiliano wa moja kwa moja na maunzi uliboresha jitter na upitishaji wa mtandao.

Kisha tuliamua kuboresha ufikiaji wa kuzuia hifadhi ya data EBS - Hifadhi ya Elastic Block. Ni mchanganyiko wa mtandao na hifadhi. Ugumu ni kwamba wakati kadi za Kiharakisha cha Mtandao zilikuwepo kwenye soko, hakukuwa na chaguo la kununua vifaa vya Kuongeza kasi ya Uhifadhi. Kwa hivyo tuligeuka kwa kuanza Maabara ya Annapurna, ambao walitengeneza chips maalum za ASIC kwa ajili yetu. Waliruhusu viwango vya mbali vya EBS kuwekwa kama vifaa vya NVMe.

Katika matukio C4 tulitatua matatizo mawili. Ya kwanza ni kwamba tulitekeleza msingi wa mustakabali wa kuahidi, lakini mpya wakati huo, teknolojia ya NVMe. Pili, tulipakua kichakataji cha kati kwa kiasi kikubwa kwa kuhamisha usindikaji wa maombi kwa EBS hadi kadi mpya. Ilibadilika vizuri, kwa hivyo sasa Annapurna Labs ni sehemu ya Amazon.

Kufikia Novemba 2017, tuligundua kuwa ilikuwa wakati wa kubadilisha hypervisor yenyewe.

Hypervisor mpya ilitengenezwa kulingana na moduli za kernel za KVM zilizobadilishwa.

Ilifanya iwezekane kupunguza kiwango kikubwa cha uigaji wa kifaa na kufanya kazi moja kwa moja na ASIC mpya. Mifano С5 zilikuwa mashine za kwanza za mtandaoni zilizo na hypervisor mpya inayoendesha chini ya kofia. Tulimtaja Nitro.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidataMaendeleo ya matukio kwenye kalenda ya matukio.

Aina zote mpya za mashine pepe ambazo zimeonekana tangu Novemba 2017 zinaendesha kwenye hypervisor hii. Matukio ya Metal Bare hayana hypervisor, lakini pia huitwa Nitro, kwa kuwa hutumia kadi maalum za Nitro.

Zaidi ya miaka miwili iliyofuata, idadi ya aina ya matukio ya Nitro ilizidi michache kadhaa: A1, C5, M5, T3 na wengine.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata
Aina za mifano.

Jinsi mashine za kisasa za Nitro zinavyofanya kazi

Zina sehemu kuu tatu: hypervisor ya Nitro (iliyojadiliwa hapo juu), chip ya usalama na kadi za Nitro.

Chip ya usalama kuunganishwa moja kwa moja kwenye ubao wa mama. Inadhibiti vipengele vingi muhimu, kama vile kudhibiti upakiaji wa mfumo wa uendeshaji wa jeshi.

Kadi za Nitro - Kuna aina nne kati yao. Zote zimetengenezwa na Annapurna Labs na zinatokana na ASIC za kawaida. Baadhi ya firmware yao pia ni ya kawaida.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata
Aina nne za kadi za Nitro.

Moja ya kadi imeundwa kufanya kazi nayo mtandaoVPC. Hiki ndicho kinachoonekana kwenye mashine pepe kama kadi ya mtandao ENA - Adapta ya Mtandao Elastic. Pia hujumuisha trafiki wakati wa kuipeleka kupitia mtandao wa kimwili (tutazungumzia kuhusu hili katika sehemu ya pili ya makala), inadhibiti firewall ya Vikundi vya Usalama, na inawajibika kwa uelekezaji na mambo mengine ya mtandao.

Chagua kadi zinazofanya kazi na uhifadhi wa block EBS na diski ambazo zimejengwa ndani ya seva. Zinaonekana kwa mashine pepe ya mgeni kama Adapta za NVMe. Pia wanajibika kwa usimbaji fiche wa data na ufuatiliaji wa diski.

Mfumo wa kadi za Nitro, hypervisor na chip ya usalama imeunganishwa kwenye mtandao wa SDN au Mtandao Uliofafanuliwa wa Programu. Kuwajibika kwa kusimamia mtandao huu (Ndege ya Kudhibiti) kadi ya mtawala.

Bila shaka, tunaendelea kutengeneza ASIC mpya. Kwa mfano, mwishoni mwa 2018 walitoa Chip Inferentia, ambayo inakuwezesha kufanya kazi kwa ufanisi zaidi na kazi za kujifunza mashine.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata
Chip ya Kichakata cha Kujifunza cha Mashine ya Inferentia.

Hifadhidata Inayoweza Kuongezeka

Hifadhidata ya jadi ina muundo wa tabaka. Ili kurahisisha sana, viwango vifuatavyo vinatofautishwa.

  • SQL - mteja na wasafirishaji wa ombi hufanya kazi juu yake.
  • Masharti shughuli - kila kitu ni wazi hapa, ACID na yote hayo.
  • Kuhifadhi akiba, ambayo hutolewa na mabwawa ya bafa.
  • Kuweka magogo - hutoa kazi na magogo ya kufanya upya. Katika MySQL zinaitwa Kumbukumbu za Bin, katika PosgreSQL - Andika Magogo ya Mbele (WAL).
  • Uhifadhi - kurekodi moja kwa moja kwenye diski.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata
Muundo wa hifadhidata uliowekwa tabaka.

Kuna njia tofauti za kuongeza hifadhidata: kugawanyika, Usanifu wa Kushiriki Hakuna, diski za pamoja.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Walakini, njia hizi zote huhifadhi muundo sawa wa hifadhidata ya monolithic. Hii inazuia kwa kiasi kikubwa kuongeza. Ili kutatua tatizo hili, tulitengeneza hifadhidata yetu wenyewe - Amazon Aurora. Inaoana na MySQL na PostgreSQL.

Amazon Aurora

Wazo kuu la usanifu ni kutenganisha viwango vya uhifadhi na ukataji miti kutoka kwa hifadhidata kuu.

Kuangalia mbele, nitasema kwamba sisi pia tulifanya kiwango cha uhifadhi kuwa huru. Usanifu huacha kuwa monolith, na tunapata digrii za ziada za uhuru katika kuongeza vitalu vya mtu binafsi.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata
Viwango vya ukataji miti na uhifadhi ni tofauti na hifadhidata.

DBMS ya kitamaduni huandika data kwa mfumo wa uhifadhi katika mfumo wa vizuizi. Huko Amazon Aurora, tuliunda hifadhi mahiri ambayo inaweza kuzungumza lugha fanya upya magogo. Ndani, hifadhi hugeuza kumbukumbu kuwa vizuizi vya data, hufuatilia uadilifu wao na kuhifadhi nakala kiotomatiki.

Njia hii hukuruhusu kutekeleza mambo ya kupendeza kama vile cloning. Inafanya kazi kwa kasi zaidi na kiuchumi zaidi kutokana na ukweli kwamba hauhitaji kuunda nakala kamili ya data zote.

Safu ya uhifadhi inatekelezwa kama mfumo uliosambazwa. Inajumuisha idadi kubwa sana ya seva za kimwili. Kila logi ya kufanya upya inachakatwa na kuhifadhiwa wakati huo huo mafundo sita. Hii inahakikisha ulinzi wa data na kusawazisha mzigo.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Kuongeza kusoma kunaweza kupatikana kwa kutumia nakala zinazofaa. Hifadhi iliyosambazwa huondoa hitaji la ulandanishi kati ya mfano mkuu wa hifadhidata, ambapo tunaandika data, na nakala zilizosalia. Data iliyosasishwa imehakikishwa kupatikana kwa nakala zote.

Shida pekee ni kuhifadhi data ya zamani kwenye nakala zilizosomwa. Lakini tatizo hili linatatuliwa uhamishaji wa kumbukumbu zote za kufanya upya kwa nakala kwenye mtandao wa ndani. Ikiwa logi iko kwenye kache, imetiwa alama kuwa si sahihi na imeandikwa tena. Ikiwa haipo kwenye kashe, inatupwa tu.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Tulipanga uhifadhi.

Jinsi ya kuongeza viwango vya DBMS

Hapa, kuongeza usawa ni ngumu zaidi. Basi hebu tuende chini ya njia iliyopigwa classic wima kuongeza.

Wacha tuchukue kuwa tunayo programu ambayo inawasiliana na DBMS kupitia nodi kuu.

Wakati wa kuongeza wima, tunatenga node mpya ambayo itakuwa na wasindikaji zaidi na kumbukumbu.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Ifuatayo, tunabadilisha programu kutoka kwa nodi kuu ya zamani hadi mpya. Matatizo hutokea.

  • Hii itahitaji muda wa chini wa programu.
  • Node mpya ya bwana itakuwa na cache baridi. Utendaji wa hifadhidata utakuwa wa juu zaidi baada ya akiba kuwashwa.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Jinsi ya kuboresha hali hiyo? Sanidi proksi kati ya programu na nodi kuu.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Je, hii itatupa nini? Sasa programu zote hazihitaji kuelekezwa upya kwa nodi mpya. Kubadilisha kunaweza kufanywa chini ya proksi na kimsingi ni haraka.

Inaonekana kwamba tatizo limetatuliwa. Lakini hapana, bado tunakabiliwa na hitaji la kuongeza joto kwenye kashe. Kwa kuongeza, tatizo jipya limeonekana - sasa wakala ni uwezekano wa kushindwa.

Suluhisho la mwisho na Amazon Aurora isiyo na seva

Je, tulitatuaje matatizo haya?

Umeacha proksi. Huu sio mfano tofauti, lakini kundi zima la proksi zilizosambazwa kupitia ambazo programu huunganishwa kwenye hifadhidata. Katika kesi ya kushindwa, nodes yoyote inaweza kubadilishwa karibu mara moja.

Imeongeza dimbwi la nodi za joto za ukubwa tofauti. Kwa hiyo, ikiwa ni muhimu kutenga node mpya ya ukubwa mkubwa au ndogo, inapatikana mara moja. Hakuna haja ya kuingojea kupakia.

Mchakato mzima wa kuongeza kiwango unadhibitiwa na mfumo maalum wa ufuatiliaji. Ufuatiliaji daima hufuatilia hali ya node ya sasa ya bwana. Ikiwa inatambua, kwa mfano, kwamba mzigo wa processor umefikia thamani muhimu, inajulisha bwawa la matukio ya joto kuhusu haja ya kutenga node mpya.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata
Wakala zilizosambazwa, matukio ya joto na ufuatiliaji.

Node yenye nguvu inayohitajika inapatikana. Mabwawa ya buffer yanakiliwa kwake, na mfumo huanza kusubiri wakati salama ili kubadili.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Kawaida wakati wa kubadili huja haraka sana. Kisha mawasiliano kati ya wakala na nodi kuu ya zamani imesimamishwa, vikao vyote vinabadilishwa kwenye nodi mpya.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Fanya kazi na hifadhidata inaendelea.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Grafu inaonyesha kuwa kusimamishwa kwa kweli ni fupi sana. Grafu ya bluu inaonyesha mzigo, na hatua nyekundu zinaonyesha wakati wa kuongeza. Majonzi ya muda mfupi kwenye grafu ya samawati ndio ucheleweshaji huo mfupi.

Jinsi AWS hupika huduma zake za elastic. Kuongeza seva na hifadhidata

Kwa njia, Amazon Aurora inakuwezesha kuokoa pesa kabisa na kuzima database wakati haitumiki, kwa mfano, mwishoni mwa wiki. Baada ya kusimamisha mzigo, DB hatua kwa hatua hupunguza nguvu zake na kuzima kwa muda fulani. Wakati mzigo unarudi, utainuka vizuri tena.

Katika sehemu inayofuata ya hadithi kuhusu kifaa cha Amazon, tutazungumza juu ya kuongeza mtandao. Jisajili barua na endelea kufuatilia ili usikose makala.

Cha HighLoad ++ Vasily Pantyukhin atatoa ripoti "Houston, tuna tatizo. Ubunifu wa mifumo ya kutofaulu, mifumo ya ukuzaji kwa huduma za wingu za ndani za Amazon" Ni mifumo gani ya muundo wa mifumo iliyosambazwa hutumiwa na watengenezaji wa Amazon, ni sababu gani za kutofaulu kwa huduma, ni nini usanifu wa msingi wa Kiini, Kazi ya Mara kwa mara, Shuffle Sharding - itakuwa ya kuvutia. Chini ya mwezi mmoja kabla ya mkutano - kata tiketi yako. Oktoba 24 ongezeko la bei ya mwisho.

Chanzo: mapenzi.com

Kuongeza maoni