Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Ang mga panganod sama sa usa ka kahon nga mahika - mangutana ka kung unsa ang imong kinahanglan, ug ang mga kahinguhaan makita nga wala’y bisan diin. Mga virtual machine, database, network - kining tanan imo ra. Adunay uban nga mga cloud tenant, apan sa imong Uniberso ikaw ang bugtong magmamando. Sigurado ka nga makadawat ka kanunay sa gikinahanglan nga mga kahinguhaan, wala nimo tagda ang bisan kinsa ug ikaw independente nga nagtino kung unsa ang network. Giunsa kini nga salamangka nga molihok nga naghimo sa panganod nga elastic nga paggahin sa mga kapanguhaan ug hingpit nga ihimulag ang mga saop gikan sa usag usa?

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Ang AWS cloud usa ka mega-super complex nga sistema nga ebolusyonaryong nag-uswag sukad pa niadtong 2006. Kabahin niini nga kalamboan nahitabo Vasily Pantyukhin - Arkitekto sa Serbisyo sa Web sa Amazon. Ingon usa ka arkitekto, nakakuha siya usa ka sulud nga pagtan-aw dili lamang sa katapusan nga sangputanan, apan usab sa mga hagit nga nabuntog sa AWS. Ang mas dako nga pagsabot kung giunsa ang sistema molihok, mas dako ang pagsalig. Busa, ipaambit ni Vasily ang mga sekreto sa mga serbisyo sa cloud sa AWS. Sa ubos mao ang disenyo sa pisikal nga mga server sa AWS, pagkamaunat-unat nga database scalability, usa ka custom nga database sa Amazon ug mga pamaagi alang sa pagdugang sa performance sa mga virtual machine samtang dungan nga pagkunhod sa ilang presyo. Ang kahibalo sa mga pamaagi sa arkitektura sa Amazon makatabang kanimo sa paggamit sa mga serbisyo sa AWS nga mas epektibo ug mahimong makahatag kanimo og bag-ong mga ideya alang sa paghimo sa imong kaugalingong mga solusyon.

Mahitungod sa mamumulong: Vasily Pantyukhin (Hen) nagsugod isip Unix admin sa .ru nga mga kompaniya, nagtrabaho sa dagkong Sun Microsystem hardware sulod sa 6 ka tuig, ug nagsangyaw sa usa ka data-centric nga kalibutan sa EMC sulod sa 11 ka tuig. Kini natural nga milambo ngadto sa pribado nga mga panganod, ug sa 2017 mibalhin ngadto sa publiko. Karon naghatag siya ug teknikal nga tambag aron matabangan nga mabuhi ug molambo sa AWS cloud.

Disclaimer: ang tanan sa ubos mao ang personal nga opinyon ni Vasily ug mahimong dili motakdo sa posisyon sa Amazon Web Services. Pagrekord sa video Ang taho nga gibase sa artikulo anaa sa among channel sa YouTube.

Ngano nga naghisgot ako bahin sa aparato sa Amazon?

Ang akong unang sakyanan adunay manual transmission. Nindot kadto tungod sa pagbati nga makamaneho ko sa sakyanan ug makakontrolar niini. Ganahan usab ko nga labing menos nasabtan nako ang prinsipyo sa operasyon niini. Siyempre, akong gihunahuna nga ang istruktura sa kahon medyo karaan - sama sa usa ka gearbox sa usa ka bisikleta.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Nindot ang tanan, gawas sa usa ka butang - natanggong sa mga kahuot sa trapiko. Morag naglingkod ka ug wala’y gibuhat, apan kanunay ka nga nag-ilis sa mga gears, gipugos ang clutch, gas, preno - kini nakapakapoy kanimo. Ang problema sa kahuot sa trapiko partially nasulbad sa dihang ang pamilya nakakuha og awtomatik nga sakyanan. Samtang nagdrayb, naa koy panahon sa paghunahuna ug pagpaminaw ug audiobook.

Laing misteryo ang nagpakita sa akong kinabuhi, tungod kay ako hingpit nga mihunong sa pagsabut kung giunsa ang paglihok sa akong awto. Ang modernong sakyanan usa ka komplikadong himan. Ang sakyanan dungan nga mopahiangay sa dose-dosenang mga lain-laing mga parameter: pagpindot sa gas, preno, estilo sa pagdrayb, kalidad sa dalan. Wala na ko kasabot kung giunsa kini paglihok.

Sa dihang nagsugod ko sa pagtrabaho sa Amazon cloud, kini usa usab ka misteryo alang kanako. Kini nga misteryo lamang ang usa ka han-ay sa magnitude nga mas dako, tungod kay adunay usa ka drayber sa sakyanan, ug sa AWS adunay milyon-milyon niini. Ang tanan nga mga tiggamit dungan nga nagmaneho, gipugos ang gas ug preno. Katingalahan nga moadto sila kung asa nila gusto - kini usa ka milagro alang kanako! Ang sistema awtomatik nga mopahiangay, timbangan ug elasticly adjust sa matag user aron nga daw alang kaniya nga siya nag-inusara niini nga Uniberso.

Ang salamangka medyo nawala sa dihang ako sa ulahi nagtrabaho isip arkitekto sa Amazon. Akong nakita kung unsa nga mga problema ang among giatubang, giunsa namo kini pagsulbad, ug giunsa namo pagpalambo ang mga serbisyo. Uban sa nagkadako nga pagsabut kung giunsa ang sistema molihok, dugang nga pagsalig sa serbisyo makita. Mao nga gusto nako ipaambit ang usa ka litrato kung unsa ang naa sa ilawom sa hood sa AWS cloud.

Unsa ang atong hisgutan

Gipili nako ang usa ka lainlaing pamaagi - Gipili nako ang 4 nga makapaikag nga mga serbisyo nga angay hisgutan.

Pag-optimize sa server. Ephemeral nga mga panganod nga adunay pisikal nga embodiment: pisikal nga mga sentro sa datos diin adunay mga pisikal nga server nga nag-hum, nagpainit ug nagpangidlap sa mga suga.

Mga gimbuhaton nga walay server (Lambda) mao tingali ang labing scalable nga serbisyo sa panganod.

Pag-scale sa database. Isulti ko kanimo kung giunsa namo paghimo ang among kaugalingon nga mga scalable database.

Pag-scale sa network. Ang katapusan nga bahin diin akong ablihan ang aparato sa among network. Nindot kini nga butang - ang matag tiggamit sa panganod nagtuo nga nag-inusara siya sa panganod ug wala gyud makakita sa ubang mga saop.

Nota. Kini nga artikulo maghisgot sa pag-optimize sa server ug pag-scale sa database. Atong hisgotan ang network scaling sa sunod nga artikulo. Asa ang mga wala’y server nga gimbuhaton? Usa ka bulag nga transcript ang gipatik bahin kanila "Gamay, apan maalamon. Unboxing Firecracker microvirtual" Naghisgot kini bahin sa daghang lainlaing mga pamaagi sa pag-scale, ug detalyado nga gihisgutan ang solusyon sa Firecracker - usa ka symbiosis sa labing kaayo nga kalidad sa usa ka virtual nga makina ug mga sudlanan.

Mga server

Ang panganod kay ephemeral. Apan kini nga ephemerality adunay gihapon usa ka pisikal nga embodiment - mga server. Sa sinugdan, ang ilang arkitektura kay klasikal. Standard nga x86 chipset, network card, Linux, Xen hypervisor diin gipadagan ang mga virtual machine.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Sa 2012, kini nga arkitektura nakasagubang sa mga buluhaton niini nga maayo. Ang Xen usa ka maayo nga hypervisor, apan kini adunay usa ka dakong disbentaha. Igo na siya taas nga overhead alang sa emulation sa device. Ingon nga bag-o, mas paspas nga network card o SSD drive mahimong magamit, kini nga overhead mahimong labi ka taas. Unsaon pag-atubang niini nga problema? Nakahukom kami nga magtrabaho sa duha ka mga nataran sa usa ka higayon - pag-optimize sa hardware ug hypervisor. Seryoso kaayo ang buluhaton.

Pag-optimize sa hardware ug hypervisor

Ang pagbuhat sa tanan sa makausa ug ang pagbuhat niini og maayo dili molihok. Unsa ang "maayo" dili usab klaro sa sinugdanan.

Nakahukom kami sa paghimo sa usa ka ebolusyonaryong pamaagi - among giusab ang usa ka importante nga elemento sa arkitektura ug gilabay kini sa produksyon.

Among gitumban ang matag rake, naminaw sa mga reklamo ug mga sugyot. Unya usbon namo ang laing component. Mao nga, sa gagmay nga mga pag-uswag, gibag-o namon ang tibuuk nga arkitektura base sa feedback gikan sa mga tiggamit ug suporta.

Ang pagbag-o nagsugod sa 2013 sa labing komplikado nga butang - ang network. SA S3 mga higayon, usa ka espesyal nga Network Accelerator card ang gidugang sa standard network card. Kini literal nga konektado sa usa ka mubo nga loopback cable sa atubangan nga panel. Dili kini gwapa, apan dili kini makita sa panganod. Apan ang direkta nga interaksyon sa hardware sa sukaranan nagpauswag sa jitter ug network throughput.

Sunod nakahukom kami nga pauswagon ang pag-access sa pag-block sa pagtipig sa data EBS - Elastic Block Storage. Kini usa ka kombinasyon sa network ug storage. Ang kalisud mao nga samtang ang mga kard sa Network Accelerator naglungtad sa merkado, wala’y kapilian nga paliton lang ang hardware sa Storage Accelerator. Busa mibalik kami sa usa ka pagsugod Annapurna Labs, nga nagpalambo sa espesyal nga ASIC chips alang kanamo. Gitugotan nila ang hilit nga mga volume sa EBS nga ma-mount ingon mga aparato sa NVMe.

Sa mga higayon C4 nasulbad namo ang duha ka problema. Ang una mao nga gipatuman namon ang usa ka pundasyon alang sa kaugmaon sa pagsaad, apan bag-o nianang panahona, ang teknolohiya sa NVMe. Ikaduha, gidiskarga namon ang sentral nga processor pinaagi sa pagbalhin sa pagproseso sa mga hangyo sa EBS sa usa ka bag-ong kard. Maayo ang nahimo, mao nga karon ang Annapurna Labs bahin sa Amazon.

Pagka Nobyembre 2017, nahibal-an namon nga panahon na nga usbon ang hypervisor mismo.

Ang bag-ong hypervisor naugmad base sa giusab nga KVM kernel modules.

Gihimo kini nga posible nga batakan nga makunhuran ang overhead sa emulation sa aparato ug direkta nga magtrabaho sa mga bag-ong ASIC. Higayon S5 mao ang una nga virtual machine nga adunay bag-ong hypervisor nga nagdagan sa ilawom sa hood. Ginganlan namo siya Nitro.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug databaseEbolusyon sa mga higayon sa timeline.

Ang tanan nga bag-ong mga lahi sa virtual nga makina nga nagpakita sukad Nobyembre 2017 nagdagan sa kini nga hypervisor. Ang mga kaso sa Bare Metal walay hypervisor, pero ginatawag man sila nga Nitro, kay naggamit sila sing pinasahi nga Nitro card.

Sa misunod nga duha ka tuig, ang gidaghanon sa mga tipo sa mga kaso sa Nitro milapas sa duha ka dosena: A1, C5, M5, T3 ug uban pa.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database
Mga tipo sa pananglitan.

Giunsa pagtrabaho ang modernong mga makina sa Nitro

Adunay sila tulo ka nag-unang sangkap: ang Nitro hypervisor (gihisgot sa ibabaw), ang security chip ug ang Nitro card.

Security chip direkta nga gisagol sa motherboard. Gikontrol niini ang daghang hinungdanon nga mga gimbuhaton, sama sa pagkontrol sa pagkarga sa host OS.

Nitro nga mga kard - Adunay upat ka matang niini. Ang tanan niini gimugna sa Annapurna Labs ug gibase sa kasagaran nga mga ASIC. Ang pipila sa ilang firmware komon usab.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database
Upat ka matang sa Nitro cards.

Ang usa sa mga kard gidisenyo aron magamit networkVPC. Mao kini ang makita sa mga virtual machine isip network card ENA - Elastic Network Adapter. Gi-encapsulate usab niini ang trapiko kung ipadala kini pinaagi sa usa ka pisikal nga network (atong hisgutan kini sa ikaduhang bahin sa artikulo), gikontrol ang firewall sa Security Groups, ug responsable sa pag-ruta ug uban pang mga butang sa network.

Pilia ang mga kard nga magamit sa block storage EBS ug mga disk nga gitukod sa server. Nagpakita sila sa bisita nga virtual machine ingon Mga adaptor sa NVMe. Sila usab ang responsable sa pag-encrypt sa datos ug pag-monitor sa disk.

Ang sistema sa Nitro cards, hypervisor ug security chip gisagol sa usa ka network sa SDN o Software Defined Network. Responsable sa pagdumala niini nga network (Control Plane) controller card.

Siyempre, nagpadayon kami sa pagpalambo sa bag-ong mga ASIC. Pananglitan, sa katapusan sa 2018 ilang gipagawas ang Inferentia chip, nga nagtugot kanimo sa pagtrabaho nga mas episyente sa mga buluhaton sa pagkat-on sa makina.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database
Inferentia Machine Learning Processor chip.

Scalable nga Database

Ang usa ka tradisyonal nga database adunay usa ka layered nga istruktura. Aron mapasayon ​​pag-ayo, ang mosunod nga mga lebel gipalahi.

  • SQL - kliyente ug hangyo sa mga dispatser nga magtrabaho niini.
  • Mga probisyon mga transaksyon - klaro ang tanan dinhi, ACID ug uban pa.
  • pag-cache, nga gihatag sa mga buffer pool.
  • Pag-log - naghatag og trabaho uban sa redo logs. Sa MySQL sila gitawag nga Bin Logs, sa PosgreSQL - Write Ahead Logs (WAL).
  • Pagtipig - direkta nga pagrekord sa disk.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database
Layered nga istruktura sa database.

Adunay lain-laing mga paagi sa pag-scale sa mga database: sharding, Shared Nothing architecture, shared disks.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Bisan pa, kining tanan nga mga pamaagi nagpadayon sa parehas nga istruktura sa database nga monolithic. Kini sa kamahinungdanon naglimite sa scaling. Aron masulbad kini nga problema, naghimo kami og among kaugalingong database − Amazon Aurora. Nahiuyon kini sa MySQL ug PostgreSQL.

Amazon Aurora

Ang panguna nga ideya sa arkitektura mao ang pagbulag sa lebel sa pagtipig ug pag-log gikan sa panguna nga database.

Sa pagtan-aw sa unahan, isulti ko nga gihimo usab namon ang lebel sa caching nga independente. Ang arkitektura mihunong nga usa ka monolith, ug nakakuha kami dugang nga lebel sa kagawasan sa pag-scale sa indibidwal nga mga bloke.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database
Ang logging ug storage nga lebel bulag sa database.

Ang usa ka tradisyonal nga DBMS nagsulat sa datos sa usa ka sistema sa pagtipig sa porma sa mga bloke. Sa Amazon Aurora, naghimo kami og smart storage nga makasulti og pinulongan redo-logs. Sa sulod, gihimo sa pagtipig ang mga troso nga mga bloke sa datos, gimonitor ang ilang integridad ug awtomatiko nga gi-back up.

Kini nga pamaagi nagtugot kanimo sa pagpatuman sa mga makapaikag nga mga butang sama sa pag-clone. Naglihok kini sa sukaranan nga mas paspas ug mas ekonomikanhon tungod sa kamatuoran nga wala kini magkinahanglan og kompleto nga kopya sa tanang datos.

Ang storage layer kay gipatuman isip usa ka distributed system. Kini naglangkob sa usa ka dako kaayo nga gidaghanon sa mga pisikal nga mga server. Ang matag redo log giproseso ug gitipigan nga dungan unom ka knot. Gisiguro niini ang pagpanalipod sa datos ug pagbalanse sa load.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Ang pagbasa sa scaling mahimong makab-ot gamit ang angay nga mga replika. Ang gipang-apod-apod nga pagtipig nagwagtang sa panginahanglan alang sa pag-synchronize tali sa nag-unang database nga pananglitan, diin atong gisulat ang datos, ug ang nahabilin nga mga replika. Ang pinakabag-o nga datos gigarantiyahan nga magamit sa tanan nga mga replika.

Ang bugtong problema mao ang pag-cache sa daan nga datos sa nabasa nga mga replika. Apan kini nga problema nasulbad pagbalhin sa tanang redo logs sa mga replika sa internal nga network. Kung ang log naa sa cache, kini gimarkahan nga dili husto ug gi-overwrite. Kung wala kini sa cache, kini gilabay lamang.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Gihan-ay namo ang storage.

Giunsa ang pag-scale sa mga tier sa DBMS

Dinhi, ang horizontal scaling mas lisud. Busa adto ta sa gibunalan nga dalan klasiko nga bertikal scaling.

Atong isipon nga kita adunay aplikasyon nga nakigsulti sa DBMS pinaagi sa usa ka master node.

Kung nag-scale patindog, naggahin kami usa ka bag-ong node nga adunay daghang mga processor ug memorya.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Sunod, gibalhin namon ang aplikasyon gikan sa daan nga master node ngadto sa bag-o. Mitungha ang mga problema.

  • Nagkinahanglan kini og mahinungdanong downtime sa aplikasyon.
  • Ang bag-ong master node adunay bugnaw nga cache. Ang pasundayag sa database mahimong labing kataas pagkahuman sa pag-init sa cache.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Unsaon pagpauswag sa sitwasyon? Paghimo og proxy tali sa aplikasyon ug sa master node.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Unsay ikahatag niini kanato? Karon ang tanan nga mga aplikasyon dili kinahanglan nga mano-mano nga i-redirect sa bag-ong node. Ang switch mahimo sa ilalum sa usa ka proxy ug sa sukaranan nga mas paspas.

Morag nasulbad na ang problema. Apan dili, nag-antos gihapon kami sa panginahanglan sa pagpainit sa cache. Dugang pa, usa ka bag-ong problema ang nagpakita - karon ang proxy usa ka potensyal nga punto sa kapakyasan.

Katapusan nga solusyon sa Amazon Aurora nga walay server

Giunsa namo pagsulbad kini nga mga problema?

Nagbilin ug proxy. Dili kini usa ka bulag nga pananglitan, apan usa ka tibuuk nga gipang-apod-apod nga panon sa mga proxy diin ang mga aplikasyon nagkonektar sa database. Sa kaso sa kapakyasan, bisan unsa sa mga node mahimong pulihan hapit diha-diha dayon.

Gidugang ang usa ka pool sa mainit nga mga node nga lainlain ang gidak-on. Busa, kung gikinahanglan ang paggahin og bag-ong node nga mas dako o mas gamay nga gidak-on, kini anaa dayon. Dili kinahanglan nga maghulat nga kini ma-load.

Ang tibuok proseso sa scaling kontrolado sa usa ka espesyal nga monitoring system. Ang pag-monitor kanunay nga nagmonitor sa kahimtang sa kasamtangan nga master node. Kung kini nakamatikod, pananglitan, nga ang load sa processor nakaabot sa usa ka kritikal nga kantidad, kini nagpahibalo sa pool sa mainit nga mga higayon mahitungod sa panginahanglan sa paggahin og bag-ong node.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database
Giapod-apod nga mga proxy, mainit nga mga higayon ug pag-monitor.

Adunay usa ka node nga adunay gikinahanglan nga gahum. Ang mga buffer pool gikopya niini, ug ang sistema nagsugod sa paghulat alang sa usa ka luwas nga higayon sa pagbalhin.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Kasagaran ang higayon sa pagbalhin moabut nga dali ra. Unya ang komunikasyon tali sa proxy ug ang daan nga master node gisuspinde, ang tanan nga mga sesyon gibalhin sa bag-ong node.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Pagtrabaho uban sa database resumes.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Ang graph nagpakita nga ang suspension mubo ra kaayo. Ang asul nga graph nagpakita sa load, ug ang pula nga mga lakang nagpakita sa scaling moments. Ang mga short-term dips sa asul nga graph mao gyud ang mubo nga paglangan.

Giunsa pagluto sa AWS ang pagkamaunat nga mga serbisyo niini. Pag-scale sa mga server ug database

Pinaagi sa dalan, gitugotan ka sa Amazon Aurora nga hingpit nga makatipig salapi ug i-off ang database kung wala kini gigamit, pananglitan, sa katapusan sa semana. Human sa paghunong sa load, ang DB anam-anam nga makunhuran ang gahum niini ug mapalong sa pipila ka panahon. Kung mobalik ang karga, mobangon kini nga hapsay pag-usab.

Sa sunod nga bahin sa istorya bahin sa aparato sa Amazon, maghisgot kami bahin sa pag-scale sa network. Mag-subscribe mail ug padayon nga tutok aron dili ka masipyat sa artikulo.

sa Taas nga Load++ Si Vasily Pantyukhin maghatag usa ka taho "Houston, naa mi problema. Disenyo sa mga sistema alang sa kapakyasan, mga sumbanan sa pag-uswag alang sa internal nga serbisyo sa panganod sa Amazon" Unsa nga mga sumbanan sa disenyo alang sa gipang-apod-apod nga mga sistema ang gigamit sa mga developer sa Amazon, unsa ang mga hinungdan sa mga kapakyasan sa serbisyo, unsa ang arkitektura nga nakabase sa Cell, Constant Work, Shuffle Sharding - kini mahimong makapaikag. Wala pay usa ka bulan hangtod sa komperensya - pag-book sa imong mga tiket. Oktubre 24 katapusang pagtaas sa presyo.

Source: www.habr.com

Idugang sa usa ka comment