One-cloud - data center level OS sa Odnoklassniki

One-cloud - data center level OS sa Odnoklassniki

Aloha, mga tawo! Ang akong ngalan mao si Oleg Anastasyev, nagtrabaho ko sa Odnoklassniki sa grupo sa Platform. Ug gawas kanako, adunay daghang hardware nga nagtrabaho sa Odnoklassniki. Kami adunay upat ka mga sentro sa datos nga adunay mga 500 ka racks nga adunay labaw pa sa 8 ka libo nga mga server. Sa usa ka punto, nahibal-an namon nga ang pagpaila sa usa ka bag-ong sistema sa pagdumala magtugot kanamo sa pagkarga sa mga ekipo nga mas episyente, mapadali ang pagdumala sa pag-access, awtomatiko ang (pag-usab) nga pag-apod-apod sa mga kapanguhaan sa kompyuter, mapadali ang paglansad sa mga bag-ong serbisyo, ug mapadali ang mga tubag. sa dagkong mga aksidente.

Unsa ang gikan niini?

Gawas kanako ug sa usa ka hugpong sa hardware, adunay mga tawo usab nga nagtrabaho uban niini nga hardware: mga inhenyero nga nahimutang direkta sa data centers; mga networker nga nag-set up sa network software; mga administrador, o mga SRE, nga naghatag ug kalig-on sa imprastraktura; ug development teams, ang matag usa kanila maoy responsable sa bahin sa mga gimbuhaton sa portal. Ang software nga ilang gibuhat nagtrabaho sama niini:

One-cloud - data center level OS sa Odnoklassniki

Ang mga hangyo sa user madawat sa duha sa atubangan sa main portal www.ok.ru, ug sa uban pa, pananglitan sa music API fronts. Aron maproseso ang lohika sa negosyo, gitawag nila ang server sa aplikasyon, nga, kung giproseso ang hangyo, nagtawag sa gikinahanglan nga mga espesyal nga microservice - usa ka graph (graph sa sosyal nga koneksyon), user-cache (cache sa mga profile sa gumagamit), ug uban pa.

Ang matag usa niini nga mga serbisyo gipakatap sa daghang mga makina, ug ang matag usa kanila adunay responsable nga mga developer nga responsable sa pag-obra sa mga module, ilang operasyon ug pag-uswag sa teknolohiya. Ang tanan nga kini nga mga serbisyo nagdagan sa mga server sa hardware, ug hangtod karon naglansad kami usa ka eksakto nga buluhaton matag server, i.e. kini espesyal alang sa usa ka piho nga buluhaton.

Ngano man? Kini nga pamaagi adunay daghang mga bentaha:

  • Nahupayan pagdumala sa masa. Ingnon ta nga ang usa ka buluhaton nanginahanglan pipila ka mga librarya, pipila ka mga setting. Ug unya ang server gi-assign sa usa ka piho nga grupo, ang polisiya sa cfengine alang niini nga grupo gihulagway (o gihulagway na kini), ug kini nga pag-configure sa sentro ug awtomatik nga gilukot sa tanan nga mga server niini nga grupo.
  • Gipasimple mga diagnostic. Ingnon ta nga imong gitan-aw ang dugang nga load sa sentral nga processor ug nakaamgo nga kini nga load mahimo lamang nga mamugna pinaagi sa buluhaton nga nagdagan niini nga hardware processor. Ang pagpangita alang sa usa ka tawo nga mabasol natapos dayon.
  • Gipasimple pagmonitor. Kung adunay sayup sa server, ang monitor nagtaho niini, ug nahibal-an nimo kung kinsa ang sad-an.

Usa ka serbisyo nga gilangkuban sa daghang mga replika ang gigahin daghang mga server - usa alang sa matag usa. Unya ang computing nga kapanguhaan alang sa serbisyo gigahin sa yano kaayo: ang gidaghanon sa mga server nga naa sa serbisyo, ang labing taas nga kantidad sa mga kapanguhaan nga magamit niini. Ang "Sayon" dinhi wala magpasabot nga kini sayon ​​​​gamiton, apan sa diwa nga ang alokasyon sa kahinguhaan gihimo sa mano-mano.

Kini nga pamaagi nagtugot usab kanamo sa pagbuhat espesyal nga iron configurations alang sa usa ka buluhaton nga nagdagan niini nga server. Kung ang buluhaton nagtipig daghang daghang datos, nan mogamit kami usa ka 4U server nga adunay usa ka chassis nga adunay 38 nga mga disk. Kung ang buluhaton puro computational, nan makapalit kita og mas barato nga 1U server. Kini mao ang computationally episyente. Lakip sa ubang mga butang, kini nga pamaagi nagtugot kanamo sa paggamit sa upat ka beses nga mas gamay nga mga makina nga adunay usa ka load nga ikatandi sa usa ka mahigalaon nga social network.

Ang ingon nga kahusayan sa paggamit sa mga kapanguhaan sa pag-compute kinahanglan usab nga masiguro ang kahusayan sa ekonomiya, kung magpadayon kita gikan sa premise nga ang labing mahal nga butang mao ang mga server. Sulod sa dugay nga panahon, ang hardware mao ang labing mahal, ug nagbutang kami og daghang paningkamot sa pagpakunhod sa presyo sa hardware, nga nag-abut sa fault tolerance algorithm aron makunhuran ang mga kinahanglanon sa kasaligan sa hardware. Ug karon nakaabot na kami sa yugto diin ang presyo sa server mihunong nga mahimong mahukmanon. Kung dili nimo tagdon ang pinakabag-o nga mga exotics, nan ang piho nga pagsumpo sa mga server sa rack dili igsapayan. Karon kami adunay laing problema - ang presyo sa luna nga giokupar sa server sa data center, nga mao, ang luna sa rack.

Nakaamgo nga mao kini ang kahimtang, nakahukom kami nga kuwentahon kung unsa ka epektibo ang among paggamit sa mga racks.
Gikuha namon ang presyo sa labing kusgan nga server gikan sa mga makatarunganon sa ekonomiya, gikalkulo kung pila ang ingon nga mga server nga mahimo namon ibutang sa mga racks, pila ka mga buluhaton ang among daganon base sa daan nga modelo nga "usa ka server = usa ka buluhaton" ug kung pila ang ingon niana. ang mga buluhaton mahimong magamit ang kagamitan. Ilang giihap ug gipatulo ang mga luha. Nahibal-an nga ang among kahusayan sa paggamit sa mga racks mga 11%. Ang konklusyon klaro: kinahanglan naton nga dugangan ang kahusayan sa paggamit sa mga sentro sa datos. Morag klaro ang solusyon: kinahanglan nimo nga modagan ang daghang mga buluhaton sa usa ka server sa usa ka higayon. Apan dinhi nagsugod ang mga kalisdanan.

Ang pag-configure sa masa nahimong labi ka labi ka komplikado - imposible na karon nga ma-assign ang bisan unsang grupo sa usa ka server. Pagkahuman, karon daghang mga buluhaton sa lainlaing mga mando ang mahimong ilunsad sa usa ka server. Dugang pa, ang pagsumpo mahimong magkasumpaki alang sa lainlaing mga aplikasyon. Ang diagnosis mahimo usab nga labi ka komplikado: kung nakita nimo ang pagtaas sa pagkonsumo sa CPU o disk sa usa ka server, wala ka mahibal-an kung unsang buluhaton ang hinungdan sa kasamok.

Apan ang panguna nga butang mao nga wala’y pagkalainlain tali sa mga buluhaton nga nagdagan sa parehas nga makina. Dinhi, pananglitan, usa ka graph sa kasagaran nga oras sa pagtubag sa usa ka buluhaton sa server sa wala pa ug pagkahuman gilunsad ang lain nga aplikasyon sa computational sa parehas nga server, nga wala’y kalabotan sa una - ang oras sa pagtubag sa panguna nga buluhaton miuswag pag-ayo.

One-cloud - data center level OS sa Odnoklassniki

Dayag, kinahanglan nimo nga modagan ang mga buluhaton sa mga sulud o sa mga virtual nga makina. Tungod kay hapit tanan sa among mga buluhaton nagdagan sa ilawom sa usa ka OS (Linux) o gipahiangay alang niini, dili na kinahanglan nga suportahan ang daghang lainlaing mga operating system. Tungod niini, dili kinahanglan ang virtualization; tungod sa dugang nga overhead, kini dili kaayo episyente kaysa sa containerization.

Ingon usa ka pagpatuman sa mga sulud alang sa pagpadagan sa mga buluhaton direkta sa mga server, ang Docker usa ka maayong kandidato: ang mga imahe sa file system nakasulbad sa mga problema sa nagkasumpaki nga mga pag-configure. Ang kamatuoran nga ang mga hulagway mahimong gilangkuban sa daghang mga lut-od nagtugot kanato nga makunhuran pag-ayo ang gidaghanon sa datos nga gikinahanglan sa pag-deploy niini sa imprastraktura, nga nagbulag sa komon nga mga bahin ngadto sa lain nga mga base layer. Unya ang sukaranan (ug labing kadaghan) nga mga lut-od dali nga ma-cache sa tibuuk nga imprastraktura, ug aron mahatagan ang daghang lainlaing mga lahi sa aplikasyon ug bersyon, gamay ra nga mga layer ang kinahanglan ibalhin.

Dugang pa, ang usa ka andam nga rehistro ug pag-tag sa imahe sa Docker naghatag kanamo nga andam nga mga primitibo alang sa pag-bersyon ug paghatud sa code sa produksiyon.

Ang Docker, sama sa bisan unsang ubang parehas nga teknolohiya, naghatag kanamo pipila nga lebel sa pag-inusara sa sulud sa gawas sa kahon. Pananglitan, ang pag-inusara sa memorya - ang matag sudlanan gihatagan og limitasyon sa paggamit sa memorya sa makina, nga sa unahan dili kini mahurot. Mahimo usab nimo ihimulag ang mga sudlanan base sa paggamit sa CPU. Alang kanamo, bisan pa, ang standard insulation dili igo. Apan labaw pa niana sa ubos.

Ang direktang pagpadagan sa mga sudlanan sa mga server maoy bahin lamang sa problema. Ang laing bahin may kalabutan sa pag-host sa mga sudlanan sa mga server. Kinahanglan nimong masabtan kung unsang sudlanan ang mahimong ibutang kung asa nga server. Dili kini sayon ​​​​nga buluhaton, tungod kay ang mga sudlanan kinahanglan nga ibutang sa mga tigtagad kutob sa mahimo nga dili mapakunhod ang ilang katulin. Ang ingon nga pagbutang mahimo usab nga lisud gikan sa usa ka punto sa pagtugot sa sayup. Kasagaran gusto namon nga ibutang ang mga replika sa parehas nga serbisyo sa lainlaing mga rack o bisan sa lainlaing mga kwarto sa sentro sa datos, aron kung mapakyas ang usa ka rack o kwarto, dili dayon mawala ang tanan nga mga replika sa serbisyo.

Ang pag-apod-apod sa mga sudlanan nga mano-mano dili usa ka kapilian kung ikaw adunay 8 ka libo nga mga server ug 8-16 ka libo nga mga sudlanan.

Dugang pa, gusto namon nga hatagan ang mga developer og dugang nga kagawasan sa alokasyon sa kapanguhaan aron sila mismo ang mag-host sa ilang mga serbisyo sa produksiyon, nga wala’y tabang sa usa ka administrador. Sa samang higayon, gusto namong ipadayon ang pagkontrola aron ang pipila ka menor de edad nga serbisyo dili makaut-ot sa tanang kahinguhaan sa among mga data center.

Dayag nga, kinahanglan namon ang usa ka control layer nga awtomatiko nga buhaton kini.

Mao nga nakaabut kami sa usa ka yano ug masabtan nga litrato nga gihigugma sa tanan nga mga arkitekto: tulo ka mga kwadro.

One-cloud - data center level OS sa Odnoklassniki

Ang one-cloud masters usa ka failover cluster nga responsable sa cloud orchestration. Ang developer nagpadala usa ka manifest sa agalon, nga adunay tanan nga kasayuran nga gikinahanglan aron ma-host ang serbisyo. Pinasukad niini, ang agalon naghatag mga mando sa pinili nga mga minions (mga makina nga gidisenyo aron makadagan ang mga sudlanan). Ang mga minions adunay among ahente, nga nakadawat sa mando, nag-isyu sa mga mando niini sa Docker, ug gi-configure ni Docker ang linux kernel aron ilunsad ang katugbang nga sudlanan. Gawas pa sa pagpatuman sa mga mando, ang ahente padayon nga nagtaho sa agalon bahin sa mga pagbag-o sa kahimtang sa minion machine ug sa mga sudlanan nga nagdagan niini.

Alokasyon sa Kapanguhaan

Karon atong tan-awon ang problema sa mas komplikado nga alokasyon sa kapanguhaan alang sa daghang mga minions.

Ang usa ka kapanguhaan sa pag-compute sa one-cloud mao ang:

  • Ang kantidad sa gahum sa processor nga gigamit sa usa ka piho nga buluhaton.
  • Ang gidaghanon sa memorya nga magamit sa buluhaton.
  • Trapik sa network. Ang matag usa sa mga minions adunay usa ka piho nga interface sa network nga adunay limitado nga bandwidth, mao nga imposible ang pag-apod-apod sa mga buluhaton nga wala gikonsiderar ang kantidad sa datos nga ilang gipadala sa network.
  • Mga disk. Dugang pa, klaro, sa luna alang niini nga mga buluhaton, gigahin usab namo ang matang sa disk: HDD o SSD. Ang mga disk mahimong magsilbi sa usa ka limitado nga gidaghanon sa mga hangyo matag segundo - IOPS. Busa, alang sa mga buluhaton nga makamugna og mas daghang IOPS kay sa makaya sa usa ka disk, gigahin usab namo ang "mga spindle" - nga mao, ang mga himan sa disk nga kinahanglan nga eksklusibo nga gitagana alang sa buluhaton.

Dayon alang sa pipila ka serbisyo, pananglitan alang sa user-cache, mahimo natong irekord ang nahurot nga mga kapanguhaan niining paagiha: 400 processor cores, 2,5 TB sa memorya, 50 Gbit/s traffic sa duha ka direksyon, 6 TB sa HDD space nga nahimutang sa 100 spindles . O sa mas pamilyar nga porma sama niini:

alloc:
    cpu: 400
    mem: 2500
    lan_in: 50g
    lan_out: 50g
    hdd:100x6T

Ang mga kapanguhaan sa serbisyo sa user-cache naggamit lamang sa usa ka bahin sa tanan nga magamit nga mga kapanguhaan sa imprastraktura sa produksiyon. Busa, gusto nako nga sigurohon nga sa kalit, tungod sa usa ka sayup sa operator o dili, ang user-cache dili mogamit og daghang mga kapanguhaan kaysa gigahin niini. Sa ato pa, kinahanglan natong limitahan ang mga kahinguhaan. Apan unsa ang mahimo natong ihigot sa quota?

Mobalik kita sa among gipasimple nga diagram sa interaksyon sa mga sangkap ug i-redraw kini uban ang dugang nga mga detalye - sama niini:

One-cloud - data center level OS sa Odnoklassniki

Unsa ang nakadani sa imong mata:

  • Ang web frontend ug musika naggamit sa nahilit nga mga cluster sa parehas nga server sa aplikasyon.
  • Mahimo natong mailhan ang lohikal nga mga lut-od diin kini nga mga pungpong nahisakop: mga atubangan, mga cache, pagtipig sa datos ug layer sa pagdumala.
  • Ang frontend heterogeneous; kini naglangkob sa lain-laing mga functional subsystems.
  • Ang mga cache mahimo usab nga magkatag sa subsystem kansang data ilang gi-cache.

Atong usbon ang hulagway pag-usab:

One-cloud - data center level OS sa Odnoklassniki

Bah! Oo, nakakita kami usa ka hierarchy! Kini nagpasabot nga mahimo nimong ipang-apod-apod ang mga kahinguhaan sa mas dagkong mga tipik: pag-assign og responsable nga developer sa usa ka node niini nga hierarchy nga katumbas sa functional subsystem (sama sa "musika" sa hulagway), ug pag-attach og quota sa samang lebel sa hierarchy. Kini nga hierarchy nagtugot usab kanamo sa pag-organisar sa mga serbisyo nga labi ka dali alang sa kadali sa pagdumala. Pananglitan, among gibahin ang tanan nga web, tungod kay kini usa ka dako kaayo nga grupo sa mga server, ngadto sa pipila ka gagmay nga mga grupo, nga gipakita sa hulagway isip grupo1, grupo2.

Pinaagi sa pagtangtang sa dugang nga mga linya, mahimo natong isulat ang matag node sa atong hulagway sa mas patag nga porma: grupo1.web.atubangan, api.music.front, user-cache.cache.

Mao kini ang atong pag-abot sa konsepto sa "hierarchical queue". Kini adunay ngalan sama sa "group1.web.front". Usa ka quota alang sa mga kahinguhaan ug mga katungod sa tiggamit ang gi-assign niini. Hatagan namon ang tawo gikan sa DevOps og mga katungod sa pagpadala sa usa ka serbisyo sa pila, ug ang ingon nga empleyado mahimong maglansad sa usa ka butang sa pila, ug ang tawo gikan sa OpsDev adunay mga katungod sa admin, ug karon mahimo na niya madumala ang pila, mag-assign sa mga tawo didto, hatagi kini nga mga tawo og katungod, ug uban pa. Ang mga serbisyo nga nagdagan niini nga pila modagan sulod sa quota sa pila. Kung ang quota sa pag-compute sa pila dili igo aron ipatuman ang tanan nga mga serbisyo sa usa ka higayon, nan kini ipatuman nga sunud-sunod, sa ingon maporma ang pila mismo.

Atong tan-awon pag-ayo ang mga serbisyo. Ang usa ka serbisyo adunay usa ka hingpit nga kwalipikado nga ngalan, nga kanunay naglakip sa ngalan sa pila. Unya ang atubangan nga serbisyo sa web adunay ngalan ok-web.group1.web.front. Ug ang serbisyo sa server sa aplikasyon nga gi-access niini tawgon ok-app.group1.web.front. Ang matag serbisyo adunay usa ka dayag, nga nagtino sa tanan nga gikinahanglan nga kasayuran alang sa pagbutang sa piho nga mga makina: pila ka mga kahinguhaan ang gigamit sa kini nga buluhaton, unsa nga pag-configure ang gikinahanglan alang niini, kung pila ang kinahanglan nga mga replika, mga kabtangan alang sa pagdumala sa mga kapakyasan sa kini nga serbisyo. Ug pagkahuman nga ang serbisyo gibutang direkta sa mga makina, ang mga higayon niini makita. Gitawag usab sila nga dili klaro - ingon nga numero sa pananglitan ug ngalan sa serbisyo: 1.ok-web.group1.web.front, 2.ok-web.group1.web.front, …

Kini sayon ​​​​kaayo: pinaagi sa pagtan-aw lamang sa ngalan sa nagdagan nga sudlanan, mahimo dayon natong mahibal-an ang daghan.

Karon atong tan-awon pag-ayo kung unsa ang aktuwal nga gihimo niini nga mga higayon: mga buluhaton.

Mga Klase sa Pag-inusara sa Buluhaton

Ang tanan nga mga buluhaton sa OK (ug, tingali, bisan asa) mahimong bahinon ngadto sa mga grupo:

  • Mubo nga Latency Buluhaton - prod. Alang sa ingon nga mga buluhaton ug serbisyo, ang paglangan sa pagtubag (latency) hinungdanon kaayo, kung unsa kadali ang matag usa sa mga hangyo maproseso sa sistema. Mga pananglitan sa mga buluhaton: web fronts, caches, application servers, OLTP storage, etc.
  • Mga problema sa pagkalkula - batch. Dinhi, ang katulin sa pagproseso sa matag piho nga hangyo dili hinungdanon. Alang kanila, hinungdanon kung pila ang mga kalkulasyon nga buhaton sa kini nga buluhaton sa usa ka piho nga (taas) nga yugto sa panahon (throughput). Kini mahimong bisan unsang buluhaton sa MapReduce, Hadoop, pagkat-on sa makina, estadistika.
  • Mga buluhaton sa background - walay pulos. Alang sa ingon nga mga buluhaton, dili ang latency o throughput hinungdanon kaayo. Naglakip kini sa lainlaing mga pagsulay, paglalin, pagkalkula pag-usab, ug pagkakabig sa datos gikan sa usa ka format ngadto sa lain. Sa usa ka bahin, parehas sila sa mga kalkulado, sa pikas bahin, dili gyud hinungdanon sa amon kung unsa kadali kini makompleto.

Atong tan-awon kon sa unsang paagi ang maong mga buluhaton naggamit sa mga kapanguhaan, pananglitan, ang sentral nga processor.

Mubo nga mga buluhaton sa paglangan. Ang ingon nga buluhaton adunay usa ka sumbanan sa pagkonsumo sa CPU nga susama niini:

One-cloud - data center level OS sa Odnoklassniki

Ang usa ka hangyo gikan sa tiggamit nadawat alang sa pagproseso, ang buluhaton nagsugod sa paggamit sa tanan nga magamit nga mga cores sa CPU, giproseso kini, gibalik ang tubag, naghulat sa sunod nga hangyo ug mihunong. Ang sunod nga hangyo miabot - pag-usab gipili namon ang tanan nga naa didto, gikalkula kini, ug naghulat alang sa sunod.

Aron magarantiya ang labing gamay nga latency alang sa ingon nga buluhaton, kinahanglan namon nga kuhaon ang labing kadaghan nga mga kapanguhaan nga gigamit niini ug ireserba ang gikinahanglan nga gidaghanon sa mga core sa minion (ang makina nga magpatuman sa buluhaton). Unya ang pormula sa pagpareserba alang sa among problema mao ang mosunod:

alloc: cpu = 4 (max)

ug kung kita adunay usa ka minion machine nga adunay 16 ka mga cores, nan eksakto nga upat ka mga buluhaton ang mahimong ibutang niini. Labi na namon nga namatikdan nga ang kasagaran nga pagkonsumo sa processor sa ingon nga mga buluhaton kanunay nga ubos kaayo - nga klaro, tungod kay usa ka hinungdanon nga bahin sa oras ang buluhaton naghulat alang sa usa ka hangyo ug wala’y mahimo.

Mga buluhaton sa pagkalkula. Ang ilang sumbanan mahimong gamay nga lahi:

One-cloud - data center level OS sa Odnoklassniki

Ang kasagaran nga konsumo sa kapanguhaan sa CPU alang sa ingon nga mga buluhaton taas kaayo. Kasagaran gusto namon ang usa ka buluhaton sa pagkalkula nga makompleto sa usa ka piho nga oras, mao nga kinahanglan namon nga ireserba ang labing gamay nga gidaghanon sa mga processor nga kinahanglan niini aron ang tibuuk nga pagkalkula makompleto sa usa ka madawat nga oras. Ang pormula sa pagpareserba niini mahimong sama niini:

alloc: cpu = [1,*)

"Palihug ibutang kini sa usa ka minion diin adunay labing menos usa ka libre nga kinauyokan, ug kung unsa kadaghan, kini lamyon ang tanan."

Dinhi ang kaepektibo sa paggamit labi ka labi ka maayo kaysa sa mga buluhaton nga adunay mubo nga paglangan. Apan ang ganansya mahimong labi ka dako kung imong ikombinar ang duha nga mga klase sa mga buluhaton sa usa ka minion nga makina ug ipang-apod-apod ang mga kahinguhaan niini samtang naglakaw. Kung ang usa ka buluhaton nga adunay usa ka mubo nga paglangan nanginahanglan usa ka processor, madawat dayon kini, ug kung dili na kinahanglan ang mga kahinguhaan, gibalhin sila sa buluhaton sa pagkalkula, i.e. usa ka butang nga sama niini:

One-cloud - data center level OS sa Odnoklassniki

Apan unsaon kini pagbuhat?

Una, atong tan-awon ang prod ug ang alloc niini: cpu = 4. Kinahanglang magreserba ug upat ka cores. Sa Docker run mahimo kini sa duha ka paagi:

  • Gamit ang opsyon --cpuset=1-4, i.e. paggahin ug upat ka piho nga mga core sa makina sa buluhaton.
  • Paggamit --cpuquota=400_000 --cpuperiod=100_000, pag-assign og quota alang sa oras sa processor, i.e. nagpakita nga matag 100 ms sa tinuod nga oras ang buluhaton naggamit ug dili mosobra sa 400 ms sa oras sa processor. Ang sama nga upat ka mga cores makuha.

Apan hain niining mga paagiha ang angay?

nindot tan-awon ang cpuset. Ang tahas adunay upat nga gipahinungod nga mga cores, nga nagpasabut nga ang mga cache sa processor molihok nga epektibo kutob sa mahimo. Kini usab adunay kakulian: kinahanglan namon nga buhaton ang tahas sa pag-apod-apod sa mga kalkulasyon sa wala’y karga nga mga cores sa makina imbes sa OS, ug kini usa ka dili hinungdanon nga buluhaton, labi na kung sulayan namon nga ibutang ang mga buluhaton sa batch sa ingon nga usa ka makina. Gipakita sa mga pagsulay nga ang kapilian nga adunay usa ka quota mas haum dinhi: niining paagiha ang operating system adunay dugang nga kagawasan sa pagpili sa kinauyokan aron mahimo ang buluhaton sa karon nga higayon ug ang oras sa processor maapod-apod nga mas episyente.

Atong mahibal-an kung unsaon paghimo og mga reserbasyon sa Docker base sa minimum nga gidaghanon sa mga cores. Dili na magamit ang quota sa mga buluhaton sa batch, tungod kay dili na kinahanglan nga limitahan ang maximum, igo na nga garantiya ang minimum. Ug dinhi ang kapilian mohaum pag-ayo docker run --cpushares.

Kami miuyon nga kung ang usa ka batch nanginahanglan usa ka garantiya alang sa labing menos usa ka kinauyokan, nan among gipakita --cpushares=1024, ug kung adunay labing menos duha ka mga core, nan among gipakita --cpushares=2048. Ang mga bahin sa CPU dili makabalda sa bisan unsang paagi sa pag-apod-apod sa oras sa processor basta adunay igo niini. Busa, kung ang prod wala karon naggamit sa tanan nga upat ka mga cores, wala’y naglimite sa mga buluhaton sa batch, ug mahimo silang mogamit dugang nga oras sa processor. Apan sa usa ka sitwasyon diin adunay kakulang sa mga processor, kung ang prod nahurot na ang tanan nga upat ka mga cores niini ug nakaabot sa iyang quota, ang nahabilin nga oras sa processor mabahin proporsyonal sa mga cpushare, i.e. sa usa ka sitwasyon nga tulo ka libre nga mga cores, ang usa mahimong gihatag sa usa ka buluhaton nga adunay 1024 cpushares, ug ang nahabilin nga duha ihatag sa usa ka buluhaton nga adunay 2048 cpushares.

Apan ang paggamit sa quota ug mga bahin dili igo. Kinahanglan natong sigurohon nga ang usa ka buluhaton nga adunay usa ka mubo nga paglangan makadawat og prayoridad kay sa usa ka batch nga buluhaton sa dihang maggahin og oras sa processor. Kung wala ang ingon nga prioritization, ang batch nga buluhaton mokuha sa tanan nga oras sa processor sa higayon nga kini gikinahanglan sa prod. Wala'y mga kapilian sa pag-prioritize sa container sa Docker run, apan ang mga polisiya sa scheduler sa Linux CPU magamit. Mahimo nimong mabasa ang bahin kanila sa detalye dinhi, ug sulod sa gambalay niini nga artikulo atong hisgotan sila sa makadiyot:

  • SCHED_OTHER
    Sa kasagaran, ang tanan nga normal nga proseso sa user sa usa ka makina sa Linux makadawat.
  • SCHED_BATCH
    Gidisenyo alang sa mga proseso nga kusog sa kapanguhaan. Kung nagbutang usa ka buluhaton sa usa ka processor, usa ka gitawag nga silot sa pagpaaktibo gipaila: ang ingon nga buluhaton dili kaayo makadawat mga kapanguhaan sa processor kung kini gigamit karon sa usa ka buluhaton sa SCHED_OTHER
  • SCHED_IDLE
    Usa ka proseso sa background nga adunay ubos kaayo nga prayoridad, mas ubos pa kay sa nindot -19. Gigamit namo ang among open source library usa-nio, aron mabutang ang gikinahanglan nga polisiya sa pagsugod sa sudlanan pinaagi sa pagtawag

one.nio.os.Proc.sched_setscheduler( pid, Proc.SCHED_IDLE )

Apan bisan kung dili ka magprograma sa Java, ang parehas nga butang mahimo gamit ang chrt nga mando:

chrt -i 0 $pid

Atong i-summarize ang tanan natong lebel sa pagkahimulag ngadto sa usa ka lamesa alang sa katin-awan:

Klase sa insulasyon
Pananglitan sa Alloc
Mga kapilian sa pagdagan sa Docker
sched_setscheduler chrt*

prod
cpu = 4
--cpuquota=400000 --cpuperiod=100000
SCHED_OTHER

Batch
Cpu = [1, *)
--cpushares=1024
SCHED_BATCH

Dili
Cpu= [2, *)
--cpushares=2048
SCHED_IDLE

* Kung naghimo ka og chrt gikan sa sulod sa usa ka sudlanan, mahimo nimo kinahanglan ang sys_nice nga kapabilidad, tungod kay pinaagi sa default gikuha ni Docker kini nga kapabilidad sa pagsugod sa sudlanan.

Apan ang mga buluhaton naggamit dili lamang sa processor, kondili usab sa trapiko, nga makaapekto sa latency sa usa ka buluhaton sa network labaw pa sa sayop nga alokasyon sa mga kapanguhaan sa processor. Busa, natural nga gusto namon nga makuha ang parehas nga litrato alang sa trapiko. Kana mao, kung ang usa ka prod nga buluhaton magpadala pipila ka mga pakete sa network, gilimitahan namon ang labing kadaghan nga tulin (formula alloc: lan=[*,500mbps) ), diin ang prod makahimo niini. Ug alang sa batch among gigarantiya lamang ang minimum nga throughput, apan dili limitahan ang maximum (formula alloc: lan=[10Mbps,*) ) Niini nga kaso, ang prod traffic kinahanglang makadawat ug prayoridad kay sa batch nga mga buluhaton.
Dinhi ang Docker wala’y bisan unsang mga primitibo nga magamit namon. Apan kini moabut sa atong tabang Pagkontrol sa Trapiko sa Linux. Nakab-ot namo ang gitinguha nga resulta sa tabang sa disiplina Hierarchical Fair Service Curve. Uban sa tabang niini, among giila ang duha ka klase sa trapiko: taas nga prayoridad nga prod ug ubos nga prayoridad nga batch/idle. Ingon usa ka sangputanan, ang pagsumpo alang sa paggawas nga trapiko sama niini:

One-cloud - data center level OS sa Odnoklassniki

dinhi 1:0 mao ang "gamut qdisc" sa hsfc disiplina; 1:1 - hsfc nga klase sa bata nga adunay kinatibuk-ang limitasyon sa bandwidth nga 8 Gbit/s, diin gibutang ang mga klase sa bata sa tanang sudlanan; 1:2 - ang klase sa bata nga hsfc kasagaran sa tanan nga batch ug walay pulos nga mga buluhaton nga adunay "dinamikong" limitasyon, nga gihisgutan sa ubos. Ang nahabilin nga mga klase sa bata sa hsfc gipahinungod nga mga klase alang sa karon nga nagdagan nga mga sulud sa prod nga adunay mga limitasyon nga katumbas sa ilang mga pagpakita - 450 ug 400 Mbit/s. Ang matag klase sa hsfc gihatagan ug qdisc queue fq o fq_codel, depende sa bersyon sa kernel sa Linux, aron malikayan ang pagkawala sa packet panahon sa pagbuto sa trapiko.

Kasagaran, ang mga disiplina sa tc nagsilbi nga unahon lamang ang paggawas nga trapiko. Apan gusto namong unahon usab ang umaabot nga trapiko - human sa tanan, ang pipila ka batch nga buluhaton dali nga makapili sa tibuok umaabot nga channel, makadawat, pananglitan, usa ka dako nga batch sa input data para sa mapa&mobuhin. Alang niini among gigamit ang module ifb, nga nagmugna og ifbX virtual interface alang sa matag network interface ug nag-redirect sa umaabot nga trapiko gikan sa interface ngadto sa outgoing nga trapiko sa ifbX. Dugang pa, alang sa ifbX, ang tanan nga parehas nga mga disiplina nagtrabaho aron makontrol ang paggawas nga trapiko, diin ang pag-configure sa hsfc parehas kaayo:

One-cloud - data center level OS sa Odnoklassniki

Atol sa mga eksperimento, among nahibal-an nga ang hsfc nagpakita sa labing maayo nga mga resulta kung ang 1: 2 nga klase sa dili prayoridad nga batch / idle nga trapiko limitado sa minion nga mga makina sa dili molapas sa usa ka libre nga lane. Kung dili, ang dili prayoridad nga trapiko adunay daghang epekto sa latency sa mga buluhaton sa prod. gitino sa miniond ang kasamtangan nga kantidad sa libre nga bandwidth matag segundo, pagsukod sa kasagaran nga konsumo sa trapiko sa tanan nga mga buluhaton sa usa ka gihatag nga minion One-cloud - data center level OS sa Odnoklassniki ug kuhaan kini gikan sa bandwidth sa interface sa network One-cloud - data center level OS sa Odnoklassniki nga adunay gamay nga margin, i.e.

One-cloud - data center level OS sa Odnoklassniki

Ang mga banda gihubit nga independente alang sa umaabot ug paggawas nga trapiko. Ug sumala sa bag-ong mga kantidad, gi-reconfigure sa miniond ang dili prayoridad nga limitasyon sa klase nga 1: 2.

Busa, gipatuman namo ang tanang tulo ka klase sa isolation: prod, batch ug idle. Kini nga mga klase dako kaayog impluwensya sa performance nga mga kinaiya sa mga buluhaton. Busa, nakahukom kami nga ibutang kini nga hiyas sa ibabaw sa hierarchy, aron sa pagtan-aw sa ngalan sa hierarchical queue kini mahimong tin-aw dayon kung unsa ang among giatubang:

One-cloud - data center level OS sa Odnoklassniki

Tanan namong mga higala web и musika ang mga atubangan gibutang dayon sa hierarchy ubos sa prod. Pananglitan, ubos sa batch, ibutang nato ang serbisyo katalogo sa musika, nga matag karon ug unya nag-compile sa usa ka katalogo sa mga track gikan sa usa ka set sa mga mp3 file nga gi-upload sa Odnoklassniki. Usa ka pananglitan sa usa ka serbisyo nga wala’y trabaho mao ang transpormer sa musika, nga nag-normalize sa lebel sa volume sa musika.

Sa pagtangtang sa dugang nga mga linya pag-usab, mahimo namong isulat ang among mga ngalan sa serbisyo nga mas patag pinaagi sa pagdugang sa klase sa paglainlain sa buluhaton sa katapusan sa tibuuk nga ngalan sa serbisyo: web.front.prod, catalog.music.batch, transformer.music.idle.

Ug karon, sa pagtan-aw sa ngalan sa serbisyo, nahibal-an namon dili lamang kung unsa ang gimbuhaton niini, apan usab ang klase sa pagkalainlain niini, nga nagpasabut nga kritikal niini, ug uban pa.

Nindot ang tanan, apan adunay usa ka mapait nga kamatuoran. Imposible nga hingpit nga ihimulag ang mga buluhaton nga nagdagan sa usa ka makina.

Unsa ang among nahimo nga makab-ot: kung ang batch kusog nga nagkonsumo lamang Ang mga kahinguhaan sa CPU, dayon ang built-in nga Linux CPU scheduler maayo kaayo ang trabaho niini, ug halos walay epekto sa prod task. Apan kung kini nga buluhaton sa batch nagsugod sa aktibong pagtrabaho uban ang panumduman, nan ang impluwensya sa usag usa nagpakita na. Nahitabo kini tungod kay ang buluhaton sa prod "nahugasan" sa mga cache sa panumduman sa processor - ingon usa ka sangputanan, ang mga pagkawala sa cache nagdugang, ug ang processor nagproseso sa prod nga buluhaton nga labi ka hinay. Ang ingon nga batch nga buluhaton makadugang sa latency sa among tipikal nga prod nga sudlanan sa 10%.

Ang pagbulag sa trapiko labi ka lisud tungod sa kamatuoran nga ang mga modernong network card adunay internal nga pila sa mga pakete. Kung ang pakete gikan sa batch nga buluhaton moabut una didto, nan kini ang una nga ipasa sa cable, ug wala’y mahimo bahin niini.

Dugang pa, hangtod karon nakahimo pa kami sa pagsulbad sa problema sa pag-una sa trapiko sa TCP: ang pamaagi sa hsfc wala molihok alang sa UDP. Ug bisan sa kaso sa trapiko sa TCP, kung ang buluhaton sa batch makamugna og daghang trapiko, naghatag usab kini mga 10% nga pagtaas sa paglangan sa buluhaton sa prod.

pagtugot sa sayop

Usa sa mga tumong sa pagpalambo sa usa ka panganod mao ang pagpalambo sa sayop nga pagtugot sa Odnoklassniki. Busa, sa sunod gusto nakong tagdon sa mas detalyado ang posibleng mga senaryo sa mga kapakyasan ug mga aksidente. Magsugod kita sa usa ka yano nga senaryo - usa ka kapakyasan sa sudlanan.

Ang sudlanan mismo mahimong mapakyas sa daghang mga paagi. Kini mahimo nga usa ka matang sa eksperimento, bug o sayup sa manifest, tungod niini ang prod nga buluhaton nagsugod sa pagkonsumo sa daghang mga kapanguhaan kaysa gipakita sa manifest. Kami adunay usa ka kaso: ang usa ka developer nagpatuman sa usa ka komplikado nga algorithm, gi-rework kini sa daghang mga higayon, nag-overthink sa iyang kaugalingon ug nalibog pag-ayo nga sa katapusan ang problema nabuak sa usa ka dili hinungdanon nga paagi. Ug tungod kay ang prod nga buluhaton adunay mas taas nga prayoridad kaysa sa tanan sa parehas nga mga minions, nagsugod kini sa pagkonsumo sa tanan nga magamit nga mga kapanguhaan sa processor. Niini nga sitwasyon, ang pag-inusara, o hinoon ang quota sa oras sa CPU, nagluwas sa adlaw. Kung ang usa ka buluhaton gigahin nga usa ka quota, ang buluhaton dili mokonsumo pa. Busa, ang batch ug uban pang mga prod nga buluhaton nga nagdagan sa parehas nga makina wala makamatikod sa bisan unsa.

Ang ikaduhang posibleng problema mao ang pagkahulog sa sudlanan. Ug dinhi i-restart ang mga palisiya makaluwas kanamo, nahibal-an sila sa tanan, ang Docker mismo naghimo usa ka maayo nga trabaho. Hapit tanan nga mga buluhaton sa prod adunay kanunay nga palisiya sa pagsugod usab. Usahay mogamit kami og on_failure alang sa mga buluhaton sa batch o alang sa pag-debug sa mga sudlanan sa prod.

Unsa ang imong mahimo kung ang usa ka tibuuk nga minion dili magamit?

Dayag, padagana ang sudlanan sa laing makina. Ang makapainteres nga bahin dinhi mao ang mahitabo sa (mga) IP address nga gi-assign sa sudlanan.

Mahimo namon nga i-assign ang mga sudlanan sa parehas nga mga adres sa IP sama sa mga minion nga makina diin kini nga mga sudlanan nagdagan. Unya, sa diha nga ang sudlanan gilusad sa laing makina, ang IP address niini mausab, ug ang tanan nga mga kliyente kinahanglan nga makasabut nga ang sudlanan mibalhin, ug karon sila kinahanglan nga moadto sa usa ka lain-laing mga address, nga nagkinahanglan sa usa ka lain nga Serbisyo Discovery nga serbisyo.

Kombenyente ang Service Discovery. Adunay daghang mga solusyon sa merkado nga lainlain ang lebel sa pagtugot sa sayup alang sa pag-organisar sa usa ka rehistro sa serbisyo. Kasagaran ang ingon nga mga solusyon nagpatuman sa lohika sa pagbalanse sa load, pagtipig dugang nga pagsumpo sa porma sa pagtipig sa KV, ug uban pa.
Bisan pa, gusto namon nga likayan ang panginahanglan nga ipatuman ang usa ka bulag nga rehistro, tungod kay kini nagpasabut sa pagpaila sa usa ka kritikal nga sistema nga gigamit sa tanan nga mga serbisyo sa produksiyon. Kini nagpasabot nga kini mao ang usa ka potensyal nga punto sa kapakyasan, ug kamo kinahanglan nga mopili o mag-ugmad sa usa ka kaayo fault-tolerant nga solusyon, nga klaro kaayo nga lisud, panahon-ut-ut ug mahal.

Ug usa pa ka dako nga disbentaha: aron ang among daan nga imprastraktura magtrabaho sa bag-o, kinahanglan namon nga isulat pag-usab ang tanan nga mga buluhaton aron magamit ang usa ka matang sa sistema sa Pagdiskubre sa Serbisyo. Adunay usa ka DAGHAN nga trabaho, ug sa pipila ka mga lugar hapit imposible kung bahin sa mga mubu nga lebel nga mga aparato nga nagtrabaho sa lebel sa kernel sa OS o direkta sa hardware. Pag-implementar niini nga gamit gamit ang establisado nga mga sumbanan sa solusyon, sama sa kilid nga sakyanan nagpasabut nga sa pipila ka mga lugar usa ka dugang nga karga, sa uban - usa ka komplikasyon sa operasyon ug dugang nga mga sitwasyon sa kapakyasan. Dili namo gusto nga makomplikado ang mga butang, mao nga nakahukom mi nga himoong opsyonal ang paggamit sa Service Discovery.

Sa usa ka panganod, ang IP nagsunod sa sudlanan, i.e. ang matag pananglitan sa buluhaton adunay kaugalingon nga IP address. Kini nga adres "static": kini gi-assign sa matag higayon kung ang serbisyo una nga gipadala sa panganod. Kung ang usa ka serbisyo adunay lahi nga gidaghanon sa mga higayon sa panahon sa iyang kinabuhi, nan sa katapusan i-assign kini nga daghang mga adres sa IP sama sa daghang mga higayon.

Sunod, kini nga mga adres dili mausab: sila gi-assign sa makausa ug nagpadayon sa paglungtad sa tibuok kinabuhi sa serbisyo sa produksyon. Ang mga adres sa IP nagsunod sa mga sulud sa tibuuk nga network. Kung ang sudlanan ibalhin sa lain nga minion, ang adres mosunod niini.

Sa ingon, ang pagmapa sa usa ka ngalan sa serbisyo sa lista sa mga adres sa IP panagsa ra kaayo nga nabag-o. Kung imong tan-awon pag-usab ang mga ngalan sa mga higayon sa serbisyo nga among gihisgutan sa sinugdanan sa artikulo (1.ok-web.group1.web.front.prod, 2.ok-web.group1.web.front.prod, …), atong mamatikdan nga kini susama sa mga FQDN nga gigamit sa DNS. Husto kana, aron mapa ang mga ngalan sa mga instance sa serbisyo sa ilang mga IP address, gigamit namon ang DNS protocol. Dugang pa, gibalik niini nga DNS ang tanan nga gireserba nga mga adres sa IP sa tanan nga mga sulud - parehas nga nagdagan ug mihunong (ingnon ta nga tulo ka mga replika ang gigamit, ug kami adunay lima ka mga adres nga gireserba didto - ang tanan nga lima ibalik). Ang mga kliyente, nga nakadawat niini nga kasayuran, mosulay sa pag-establisar og koneksyon sa tanan nga lima ka mga replika - ug sa ingon mahibal-an ang mga nagtrabaho. Kini nga kapilian alang sa pagtino sa pagkaanaa labi ka kasaligan; wala kini naglambigit sa DNS o Pagdiskobre sa Serbisyo, nga nagpasabut nga wala’y lisud nga mga problema nga sulbaron aron masiguro ang kalabotan sa kasayuran ug pagtugot sa sayup sa kini nga mga sistema. Dugang pa, sa mga kritikal nga serbisyo diin ang operasyon sa tibuuk nga portal nagdepende, dili gyud kami makagamit sa DNS, apan isulod lang ang mga IP address sa pagsumpo.

Ang pagpatuman sa ingon nga pagbalhin sa IP sa luyo sa mga sulud mahimo’g dili hinungdanon - ug tan-awon naton kung giunsa kini molihok sa mosunod nga pananglitan:

One-cloud - data center level OS sa Odnoklassniki

Ingnon ta nga ang one-cloud master naghatag sa mando sa minion M1 aron modagan 1.ok-web.group1.web.front.prod uban ang adres 1.1.1.1. Nagtrabaho sa usa ka minion KINAHANGLAN, nga nag-anunsyo niini nga adres sa mga espesyal nga server ruta reflector. Ang naulahi adunay sesyon sa BGP uban sa hardware sa network, diin ang ruta sa address 1.1.1.1 sa M1 gihubad. M1 ruta packets sulod sa sudlanan gamit ang Linux. Adunay tulo nga mga server sa reflector sa ruta, tungod kay kini usa ka kritikal nga bahin sa usa ka panganod nga imprastraktura - kung wala sila, ang network sa usa ka panganod dili molihok. Gibutang namon kini sa lainlaing mga rack, kung mahimo nga nahimutang sa lainlaing mga kwarto sa sentro sa datos, aron makunhuran ang posibilidad nga mapakyas ang tanan nga tulo sa parehas nga oras.

Atong isipon karon nga ang koneksyon tali sa one-cloud master ug sa M1 minion nawala. Ang one-cloud master molihok na karon sa pangagpas nga ang M1 hingpit nga napakyas. Sa ato pa, maghatag kini ug mando sa M2 minion nga maglansad web.group1.web.front.prod nga adunay parehas nga adres 1.1.1.1. Karon kami adunay duha ka magkasumpaki nga mga ruta sa network alang sa 1.1.1.1: sa M1 ug sa M2. Aron masulbad ang ingon nga mga panagbangi, among gigamit ang Multi Exit Discriminator, nga gipiho sa pahibalo sa BGP. Kini usa ka numero nga nagpakita sa gibug-aton sa gi-anunsyo nga ruta. Taliwala sa nagkasumpaki nga mga ruta, ang ruta nga adunay ubos nga kantidad sa MED ang pilion. Gisuportahan sa one-cloud master ang MED isip usa ka bahin sa mga adres sa IP nga sudlanan. Sa unang higayon, ang adres gisulat nga adunay igo nga dako nga MED = 1. Sa sitwasyon sa ingon nga emergency nga pagbalhin sa sudlanan, ang agalon nagpamenos sa MED, ug ang M000 makadawat na sa sugo sa pag-advertise sa address 000 uban sa MED = 2. Ang pananglitan nga nagdagan sa M1.1.1.1 magpabilin sa niini nga kaso nga walay koneksyon, ug ang iyang dugang nga kapalaran makapainteres kanato gamay hangtud nga ang koneksyon uban sa agalon mapasig-uli, sa diha nga siya mohunong sama sa usa ka daan nga pagkuha.

Mga aksidente

Ang tanan nga mga sistema sa pagdumala sa data center kanunay nga nagdumala sa gagmay nga mga kapakyasan nga madawat. Ang pag-awas sa sudlanan mao ang naandan halos bisan asa.

Atong tan-awon kung giunsa naton pagdumala ang usa ka emerhensya, sama sa pagkapakyas sa kuryente sa usa o daghang mga kwarto sa usa ka sentro sa datos.

Unsa ang gipasabut sa usa ka aksidente alang sa usa ka sistema sa pagdumala sa data center? Una sa tanan, kini usa ka dako nga usa ka higayon nga kapakyasan sa daghang mga makina, ug ang sistema sa pagkontrol kinahanglan nga mobalhin sa daghang mga sudlanan sa parehas nga oras. Apan kung ang katalagman dako kaayo, mahimo’g mahitabo nga ang tanan nga mga buluhaton dili ma-re-allocate sa ubang mga minions, tungod kay ang kapasidad sa kahinguhaan sa data center nahulog sa ubos sa 100% sa load.

Kasagaran ang mga aksidente giubanan sa kapakyasan sa control layer. Mahimo kini mahitabo tungod sa kapakyasan sa mga ekipo niini, apan mas kanunay tungod sa kamatuoran nga ang mga aksidente wala gisulayan, ug ang control layer mismo nahulog tungod sa dugang nga load.

Unsay imong mahimo niining tanan?

Ang mga paglalin sa masa nagpasabut nga adunay daghang mga kalihokan, paglalin, ug pag-deploy nga nahitabo sa imprastraktura. Ang matag usa sa mga paglalin mahimong magkinahanglan og pipila ka panahon nga gikinahanglan sa paghatud ug pag-unpack sa mga hulagway sa sudlanan ngadto sa mga minions, paglansad ug pag-initialize sa mga sudlanan, ug uban pa. Busa, gitinguha nga mas importante nga mga buluhaton ang ilunsad sa dili pa ang dili kaayo importante.

Atong tan-awon pag-usab ang hierarchy sa mga serbisyo nga nahibal-an namon ug pagsulay sa pagdesisyon kung unsang mga buluhaton ang gusto namon nga unahon.

One-cloud - data center level OS sa Odnoklassniki

Siyempre, kini ang mga proseso nga direktang nalangkit sa pagproseso sa mga hangyo sa user, ie prod. Gipakita namo kini sa prayoridad sa pagbutang — usa ka numero nga mahimong ma-assign sa pila. Kung ang usa ka pila adunay mas taas nga prayoridad, ang mga serbisyo niini ibutang una.

Sa prod kita naghatag ug mas taas nga mga prayoridad, 0; sa batch - gamay nga ubos, 100; sa idle - bisan sa ubos, 200. Ang mga prayoridad gipadapat sa hierarchically. Ang tanan nga mga buluhaton nga ubos sa hierarchy adunay katugbang nga prayoridad. Kung gusto namon ang mga cache sa sulod sa prod nga ilunsad sa wala pa ang mga frontends, nan among gi-assign ang mga prayoridad sa cache = 0 ug sa front subqueues = 1. Kon, pananglitan, gusto namo nga ang main portal nga ilunsad gikan sa atubangan una, ug ang atubangan sa musika lamang unya, mahimo natong i-assign ang usa ka ubos nga prayoridad sa naulahi - 10.

Ang sunod nga problema mao ang kakulang sa mga kapanguhaan. Busa, ang usa ka dako nga kantidad sa mga ekipo, tibuok nga mga hawanan sa data center, napakyas, ug kami naglunsad pag-usab sa daghan nga mga serbisyo nga karon walay igo nga mga kapanguhaan alang sa tanan. Kinahanglan ka nga magdesisyon kung unsang mga buluhaton ang isakripisyo aron mapadayon ang nag-unang kritikal nga serbisyo.

One-cloud - data center level OS sa Odnoklassniki

Dili sama sa prayoridad sa pagbutang, dili nato mahimo nga isakripisyo ang tanan nga mga buluhaton sa batch; ang uban niini importante alang sa operasyon sa portal. Busa, gipasiugda namo nga gilain prayoridad sa preemption mga buluhaton. Kung ibutang, ang usa ka mas taas nga prayoridad nga buluhaton mahimong mag-una, i.e. paghunong, usa ka ubos nga prayoridad nga buluhaton kung wala nay libre nga mga minions. Sa kini nga kaso, ang usa ka buluhaton nga adunay gamay nga prayoridad mahimo’g magpabilin nga wala ibutang, i.e. wala na usa ka angay nga minion alang niini nga adunay igo nga libre nga mga kapanguhaan.

Sa among hierarchy, yano ra kaayo ang pagpiho sa usa ka preemption nga prayoridad sa ingon nga ang prod ug batch nga mga buluhaton mag-una o mohunong sa mga walay pulos nga buluhaton, apan dili sa usag usa, pinaagi sa pagtino sa usa ka prayoridad alang sa walay pulos nga katumbas sa 200. Sama sa kaso sa placement priority, kami makagamit sa atong hierarchy aron ihulagway ang mas komplikado nga mga lagda. Pananglitan, atong ipakita nga atong isakripisyo ang musika function kon kita walay igo nga mga kapanguhaan alang sa mga nag-unang web portal, gibutang ang prayoridad alang sa katugbang nga mga node ubos: 10.

Tibuok nga mga aksidente sa DC

Ngano kaha nga mapakyas ang tibuok data center? elemento. Usa ka maayo nga post ang bagyo nakaapekto sa trabaho sa data center. Ang mga elemento mahimong giisip nga walay puy-anan nga mga tawo nga sa makausa gisunog ang mga optika sa lain-laing mga, ug ang data center bug-os nga nawad-an sa kontak uban sa ubang mga site. Ang hinungdan sa kapakyasan mahimo usab nga usa ka hinungdan sa tawo: ang operator mag-isyu sa ingon nga usa ka mando nga ang tibuuk nga sentro sa datos mahulog. Kini mahimong mahitabo tungod sa usa ka dako nga bug. Sa kinatibuk-an, ang mga sentro sa datos nahugno dili kasagaran. Kini mahitabo kanato kausa sa matag pipila ka bulan.

Ug kini ang among gibuhat aron mapugngan ang bisan kinsa nga mag-tweet nga #buhi.

Ang una nga estratehiya mao ang pag-inusara. Ang matag usa ka panganod nga instance nahimulag ug makadumala sa mga makina sa usa ra ka sentro sa datos. Sa ato pa, ang pagkawala sa usa ka panganod tungod sa mga bug o dili husto nga mga mando sa operator mao ang pagkawala sa usa ra ka sentro sa datos. Andam na kami niini: aduna kamiy redundancy policy diin ang mga replika sa aplikasyon ug data nahimutang sa tanang data centers. Gigamit namo ang fault-tolerant nga mga database ug matag karon ug unya nga pagsulay alang sa mga kapakyasan.
Tungod kay karon kami adunay upat ka mga sentro sa datos, kana nagpasabut nga upat nga bulag, hingpit nga nahimulag nga mga higayon sa usa ka panganod.

Kini nga pamaagi dili lamang makapanalipod batok sa pisikal nga kapakyasan, apan makapanalipod usab batok sa sayup sa operator.

Unsa pa ang mahimo sa hinungdan sa tawo? Sa diha nga ang usa ka operator mohatag sa panganod og pipila ka katingad-an o posibleng peligroso nga sugo, mahimo siyang kalit nga hangyoon sa pagsulbad sa usa ka gamay nga problema aron makita kung unsa ka maayo ang iyang gihunahuna. Pananglitan, kung kini usa ka matang sa paghunong sa masa sa daghang mga replika o usa ka katingad-an nga mando - pagkunhod sa gidaghanon sa mga replika o pagbag-o sa ngalan sa imahe, ug dili lamang ang numero sa bersyon sa bag-ong manifest.

One-cloud - data center level OS sa Odnoklassniki

Mga resulta

Mga lahi nga bahin sa usa ka panganod:

  • Hierarchical ug visual nga pamaagi sa pagngalan alang sa mga serbisyo ug mga sudlanan, nga nagtugot kanimo nga dali nga mahibal-an kung unsa ang buluhaton, kung unsa ang kalabutan niini ug kung giunsa kini molihok ug kinsa ang responsable niini.
  • Atong i-apply ang atong teknik sa paghiusa sa prod- ug batch-mga buluhaton sa mga minions aron mapauswag ang kahusayan sa pagpaambit sa makina. Imbis sa cpuset gigamit namon ang mga quota sa CPU, bahin, mga palisiya sa scheduler sa CPU ug Linux QoS.
  • Dili mahimo nga hingpit nga ihimulag ang mga sudlanan nga nagdagan sa parehas nga makina, apan ang ilang impluwensya sa usag usa nagpabilin sa sulod sa 20%.
  • Ang pag-organisar sa mga serbisyo ngadto sa usa ka hierarchy makatabang sa paggamit sa awtomatik nga pagbawi sa katalagman placement ug preemption priorities.

FAQ

Ngano nga wala kami magkuha usa ka andam nga solusyon?

  • Ang lainlaing mga klase sa pag-inusara sa buluhaton nanginahanglan lainlaing lohika kung ibutang sa mga minions. Kung ang mga buluhaton sa prod mahimong ibutang pinaagi lamang sa pagreserba sa mga kahinguhaan, nan ang mga batch ug idle nga mga buluhaton kinahanglan ibutang, pagsubay sa aktwal nga paggamit sa mga kapanguhaan sa minion nga mga makina.
  • Ang panginahanglan nga tagdon ang mga kapanguhaan nga gigamit sa mga buluhaton, sama sa:
    • bandwidth sa network;
    • mga tipo ug "mga spindle" sa mga disk.
  • Ang panginahanglan sa pagpakita sa mga prayoridad sa mga serbisyo sa panahon sa emerhensya nga tubag, ang mga katungod ug mga quota sa mga sugo alang sa mga kapanguhaan, nga masulbad gamit ang hierarchical queues sa usa ka panganod.
  • Ang panginahanglan nga adunay tawo nga pagngalan sa mga sudlanan aron makunhuran ang oras sa pagtubag sa mga aksidente ug insidente
  • Ang imposibilidad sa usa ka higayon nga kaylap nga pagpatuman sa Service Discovery; ang panginahanglan nga mag-uban sa dugay nga panahon sa mga buluhaton nga gi-host sa mga host sa hardware - usa ka butang nga masulbad pinaagi sa "static" nga mga IP address nga nagsunod sa mga sulud, ug, ingon sangputanan, ang panginahanglan alang sa talagsaon nga panagsama sa usa ka dako nga imprastraktura sa network.

Kining tanan nga mga gimbuhaton magkinahanglan ug mahinungdanong mga kausaban sa kasamtangan nga mga solusyon nga mohaum kanamo, ug, sa pag-assess sa gidaghanon sa trabaho, among naamgohan nga kami makahimo sa among kaugalingong solusyon nga adunay halos parehas nga gasto sa pagtrabaho. Apan ang imong solusyon mahimong labi ka dali sa pag-operate ug pag-uswag - kini wala maglangkob sa dili kinahanglan nga mga abstraction nga nagsuporta sa pag-andar nga wala namo kinahanglana.

Sa mga nagbasa sa katapusang mga linya, salamat sa imong pasensya ug pagtagad!

Source: www.habr.com

Idugang sa usa ka comment