{"id":84114,"date":"2020-06-05T07:42:55","date_gmt":"2020-06-05T05:42:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/one-cloud-os-urovnya-data-czentra-v-odnoklassnikah"},"modified":"2020-06-05T07:42:55","modified_gmt":"2020-06-05T05:42:55","slug":"one-cloud-os-urovnya-data-czentra-v-odnoklassnikah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/one-cloud-os-urovnya-data-czentra-v-odnoklassnikah","title":{"rendered":"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/fa983acacec59ff2d4ed098f87223971.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aloha, njer\u00ebz! Quhem Oleg Anastasyev, punoj n\u00eb Odnoklassniki n\u00eb ekipin e Platform\u00ebs. P\u00ebrve\u00e7 meje, n\u00eb Odnoklassniki ka shum\u00eb pajisje. Ne kemi kat\u00ebr Qendrat e t\u00eb Dh\u00ebnave, me rreth 500 stenda dhe m\u00eb shum\u00eb se 8,000 server\u00eb. N\u00eb nj\u00eb moment t\u00eb caktuar, e kuptuam se implementimi i nj\u00eb sistemi t\u00eb ri menaxhimi do t\u00eb na ndihmonte t\u00eb ngarkonim m\u00eb efikasisht pajisjet, t\u00eb leht\u00ebsoshim menaxhimin e aksesit, t\u00eb automatizonim (rishp\u00ebrndanim) burimet kompjuterike, t\u00eb shpejtonim lan\u00e7imin e sh\u00ebrbimeve t\u00eb reja dhe t\u00eb p\u00ebrshpejtonim reagimet ndaj incidenteve t\u00eb m\u00ebdha. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb doli prej k\u00ebsaj? <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>P\u00ebrve\u00e7 meje dhe shum\u00eb pajisjeve, ka dhe njer\u00ebz q\u00eb punojn\u00eb me k\u00ebto pajisje: inxhinier\u00eb q\u00eb ndodhen direkt n\u00eb qendrat e t\u00eb dh\u00ebnave; specialist\u00eb rrjetesh q\u00eb konfiguroni infrastruktur\u00ebn rrjet; administrator\u00eb, ose SRE, q\u00eb sigurojn\u00eb q\u00eb infrastruktura t\u00eb jet\u00eb e besueshme; dhe ekipe zhvilluesish, secili prej t\u00eb cil\u00ebve p\u00ebrgjigjet p\u00ebr nj\u00eb pjes\u00eb t\u00eb funksioneve t\u00eb portalit. Software-i q\u00eb ata krijojn\u00eb funksionon si\u00e7 vijon:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/592fd0acfa7322eb80fbb85601a92918.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebrkesat e p\u00ebrdoruesve vijn\u00eb si n\u00eb frontet e portalit kryesor <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ok.ru\/\">www.ok.ru<\/a><\/noindex>, ashtu edhe n\u00eb t\u00eb tjera, si n\u00eb frontet e API-s\u00eb s\u00eb muzik\u00ebs. P\u00ebr t\u00eb p\u00ebrpunuar logjik\u00ebn biznesore th\u00ebrrasin serverin e aplikacioneve, i cili gjat\u00eb p\u00ebrpunimit t\u00eb k\u00ebrkes\u00ebs th\u00ebrret mikrosh\u00ebrbimet e specializuara t\u00eb nevojshme - one-graph (grafi i lidhjeve sociale), user-cache (cache e profileve t\u00eb p\u00ebrdoruesve) dhe t\u00eb tjer\u00eb.<\/p>\n<p><\/p>\n<p>Secili prej k\u00ebtyre sh\u00ebrbimeve \u00ebsht\u00eb i implementuar n\u00eb shum\u00eb makina, dhe secili prej tyre ka zhvillues t\u00eb p\u00ebrgjegjsh\u00ebm q\u00eb p\u00ebrgjigjen p\u00ebr funksionimin e moduleve, operimin e tyre dhe zhvillimin teknologjik. T\u00eb gjith\u00eb k\u00ebto sh\u00ebrbime ekzekutohen n\u00eb server\u00eb fizik\u00eb, dhe deri para nj\u00eb kohe, ne ekzekutonim sakt\u00ebsisht nj\u00eb detyr\u00eb n\u00eb nj\u00eb server, pra ai ishte i specializuar p\u00ebr nj\u00eb detyr\u00eb t\u00eb caktuar.<\/p>\n<p><\/p>\n<p>Pse ndodhte kjo? Ky qasje kishte disa p\u00ebrpar\u00ebsi:<\/p>\n<p><\/p>\n<ul>\n<li>Leht\u00ebsohet <strong>menaxhimi masiv<\/strong>. Supozoni, detyra k\u00ebrkon disa biblioteka, disa konfigurime. At\u00ebher\u00eb serveri i p\u00ebrkushtohet sakt\u00ebsisht nj\u00eb grupi t\u00eb caktuar, politikat e cfengine p\u00ebr k\u00ebt\u00eb grup p\u00ebrshkruhen (ose jan\u00eb p\u00ebrshkruar tashm\u00eb), dhe kjo konfigurim p\u00ebrhapen n\u00eb m\u00ebnyr\u00eb qendrore dhe automatike n\u00eb t\u00eb gjitha server\u00ebt e k\u00ebtij grupi.<\/li>\n<li>Thjeshtohet <strong>diagnoza<\/strong>. Supozoni, shikoni ngarkes\u00ebn e rritur t\u00eb procesorit qendror dhe kuptoni q\u00eb vet\u00ebm ajo detyr\u00eb q\u00eb funksionon n\u00eb k\u00ebt\u00eb procesor fizik mund t\u00eb gjeneroj\u00eb k\u00ebt\u00eb ngarkes\u00eb. K\u00ebrkimi p\u00ebr fajtorin p\u00ebrfundon shum\u00eb shpejt.<\/li>\n<li>Thjeshtohet <strong>monitorimi<\/strong>. N\u00ebse ka di\u00e7ka q\u00eb nuk shkon me serverin, monitori e raporton k\u00ebt\u00eb dhe ju e dini sakt\u00ebsisht se kush \u00ebsht\u00eb fajtori.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nj\u00eb sh\u00ebrbim, i p\u00ebrb\u00ebr\u00eb nga disa replika, i dedikohet disa server\u00ebve - nga nj\u00eb p\u00ebr secil\u00ebn. At\u00ebher\u00eb burimi kompjuterik p\u00ebr sh\u00ebrbimin jepet shum\u00eb thjesht\u00eb: sa server\u00eb ka sh\u00ebrbimi, aq shum\u00eb burime maksimale mund t\u00eb konsumoj\u00eb. \"Thjesht\" k\u00ebtu nuk n\u00ebnkupton q\u00eb \u00ebsht\u00eb e leht\u00eb p\u00ebr t'u p\u00ebrdorur, por se ndarja e burimeve ndodh manualisht.<\/p>\n<p><\/p>\n<p>Ky qasje gjithashtu na lejonte t\u00eb krijonim <strong>konfigurime t\u00eb specializuara t\u00eb pajisjeve<\/strong> p\u00ebr detyr\u00ebn q\u00eb ekzekutohet n\u00eb k\u00ebt\u00eb server. N\u00ebse detyra ruan sasi t\u00eb m\u00ebdha t\u00eb dh\u00ebnash, at\u00ebher\u00eb ne p\u00ebrdorim nj\u00eb server 4U me shasi p\u00ebr 38 disqe. N\u00ebse detyra \u00ebsht\u00eb krejt\u00ebsisht kompjuterike, mund t\u00eb blejm\u00eb nj\u00eb server m\u00eb t\u00eb lir\u00eb 1U. Kjo \u00ebsht\u00eb efikase n\u00eb aspektin e burimeve kompjuterike. Ky qasje gjithashtu na lejon t\u00eb p\u00ebrdorim kat\u00ebr her\u00eb m\u00eb pak makina me ngarkes\u00eb t\u00eb ngjashme me nj\u00eb rrjet shoq\u00ebror q\u00eb na \u00ebsht\u00eb i njohur. <\/p>\n<p><\/p>\n<p>Kjo efikasitet e p\u00ebrdorimit t\u00eb burimeve kompjuterike duhet t\u00eb siguroj\u00eb gjithashtu efikasitet ekonomik, n\u00ebse supozojm\u00eb se ajo q\u00eb \u00ebsht\u00eb m\u00eb e shtrenjt\u00eb - jan\u00eb server\u00ebt. P\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, m\u00eb e shtrenjta ishte pik\u00ebrisht pajisja, dhe ne kemi investuar shum\u00eb energji n\u00eb uljen e kostos s\u00eb pajisjeve, duke shpikur algoritme p\u00ebr t\u00eb siguruar q\u00ebndrueshm\u00ebrin\u00eb p\u00ebr t\u00eb ulur k\u00ebrkesat p\u00ebr besueshm\u00ebrin\u00eb e pajisjeve. Dhe sot kemi arritur n\u00eb nj\u00eb faz\u00eb, ku kostoja e serverit ka pushuar s\u00eb qeni p\u00ebrcaktues. N\u00ebse nuk shqyrtojm\u00eb ekzotikat m\u00eb t\u00eb reja, konfigurimi konkret i server\u00ebve n\u00eb stend\u00eb nuk ka r\u00ebnd\u00ebsi. Tani na ka dal\u00eb nj\u00eb problem tjet\u00ebr - kostoja e vendit q\u00eb z\u00eb nj\u00eb server n\u00eb qendr\u00ebn e t\u00eb dh\u00ebnave, pra vendi n\u00eb stend\u00eb.<\/p>\n<p><\/p>\n<p>Duke e kuptuar se k\u00ebshtu \u00ebsht\u00eb, ne vendos\u00ebm t\u00eb llogarisim se sa efikas \u00ebsht\u00eb p\u00ebrdorimi i stendave.<br \/>\nMora me \u00e7mimi i serverit m\u00eb t\u00eb fuqish\u00ebm nga pik\u00ebpamja ekonomike, llogarit\u00ebm sa t\u00eb till\u00eb server\u00eb mund t\u00eb vendosim n\u00eb raftet, sa detyra do t\u2019i drejtonim n\u00eb p\u00ebrputhje me modelin e vjet\u00ebr \"nj\u00eb server = nj\u00eb detyr\u00eb\" dhe sa efikas do t\u00eb ishin k\u00ebta server\u00eb. Llogarit\u00ebm - dhe u emocionuam. Doli se efikasiteti i p\u00ebrdorimit t\u00eb rafteve ishte rreth 11%. Konkluzioni \u00ebsht\u00eb i qart\u00eb: duhet t\u00eb rritet efikasiteti i p\u00ebrdorimit t\u00eb qendrave t\u00eb t\u00eb dh\u00ebnave. Duke u dukur, zgjidhja \u00ebsht\u00eb e qart\u00eb: duhet t\u00eb drejtojm\u00eb disa detyra n\u00eb nj\u00eb server t\u00eb vet\u00ebm. Por k\u00ebtu fillojn\u00eb v\u00ebshtir\u00ebsit\u00eb. <\/p>\n<p><\/p>\n<p>Konfigurimi masiv komplikon ndjesh\u00ebm - tani \u00ebsht\u00eb e pamundur t\u00eb em\u00ebrtohet nj\u00eb grup i vet\u00ebm p\u00ebr serverin. Sepse tani n\u00eb nj\u00eb server mund t\u00eb drejtohen disa detyra nga ekipe t\u00eb ndryshme. P\u00ebr m\u00eb tep\u00ebr, konfigurimi mund t\u00eb jet\u00eb kontradiktor p\u00ebr aplikacione t\u00eb ndryshme. Diagnostikimi gjithashtu komplikohet: n\u00ebse shihni nj\u00eb konsum n\u00eb rritje t\u00eb procesor\u00ebve ose disqeve n\u00eb server, nuk e dini se cila detyr\u00eb po shkakton probleme.<\/p>\n<p><\/p>\n<p>Por m\u00eb e r\u00ebnd\u00ebsishmja - \u00ebsht\u00eb se nuk ka izolim midis detyrave t\u00eb drejtuara n\u00eb t\u00eb nj\u00ebjtin server. Ja, p\u00ebr shembull, grafiku i mesatarit t\u00eb koh\u00ebs s\u00eb p\u00ebrgjigjes s\u00eb detyr\u00ebs serveri para dhe pas startimit t\u00eb nj\u00eb aplikacioni tjet\u00ebr llogarit\u00ebs, q\u00eb nuk ka lidhje me detyr\u00ebn e par\u00eb - koha e p\u00ebrgjigjes p\u00ebr detyr\u00ebn kryesore u rrit ndjesh\u00ebm.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/c7c07359ae572ca8c84a4c63559e4083.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb m\u00ebnyr\u00eb t\u00eb qart\u00eb, duhet t\u00eb drejtojm\u00eb detyrat ose n\u00eb kontejner\u00eb, ose n\u00eb makina virtuale. Duke q\u00ebn\u00eb se pothuajse t\u00eb gjitha detyrat tona drejtohen n\u00ebn menaxhimin e nj\u00eb sistemi operativ (Linux) ose jan\u00eb p\u00ebrshtatur p\u00ebr t\u00eb, nuk na nevojitet mb\u00ebshtetje p\u00ebr shum\u00eb sisteme t\u00eb ndryshme operativ\u00eb. Nd\u00ebrkoh\u00eb, virtualizimi nuk \u00ebsht\u00eb i nevojsh\u00ebm, p\u00ebr shkak t\u00eb kostove shtes\u00eb do t\u00eb jet\u00eb m\u00eb pak efikas se kontejnerizimi.<\/p>\n<p><\/p>\n<p>Si implementim t\u00eb kontejner\u00ebve p\u00ebr t\u00eb drejtuar detyrat drejtp\u00ebrdrejt n\u00eb servera, Docker \u00ebsht\u00eb nj\u00eb kandidat i shk\u00eblqyer: imazhet e sistemeve t\u00eb skedareve zgjidhin mir\u00eb problemet me konfigurime kontradiktore. Fakti q\u00eb imazhet mund t\u00eb p\u00ebrb\u00ebhen nga disa nivele na lejon t\u00eb reduktojm\u00eb ndjesh\u00ebm volumin e t\u00eb dh\u00ebnave t\u00eb nevojshme p\u00ebr shp\u00ebrndarjen e tyre n\u00eb infrastruktur\u00eb, duke ndar\u00eb pjes\u00ebt e zakonshme n\u00eb nivele t\u00eb ve\u00e7anta bazike. K\u00ebshtu, nivelet bazike (dhe m\u00eb t\u00eb m\u00ebdha) do t\u00eb keqen shpejt n\u00eb t\u00eb gjith\u00eb infrastruktur\u00ebn, dhe p\u00ebr t\u00eb transportuar shum\u00eb lloje t\u00eb ndryshme aplikacionesh dhe versione, do t\u00eb nevojitet t\u00eb kalojm\u00eb vet\u00ebm nivele m\u00eb t\u00eb vogla. <\/p>\n<p><\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, regjistri i gatsh\u00ebm dhe etiketimi i imazheve n\u00eb Docker na japin primitive t\u00eb gatshme p\u00ebr versionimin dhe shp\u00ebrndarjen e kodit n\u00eb prodhim.<\/p>\n<p><\/p>\n<p>Docker, ashtu si \u00e7do teknologji tjet\u00ebr e ngjashme, na ofron nj\u00eb nivel t\u00eb caktuar izolimi t\u00eb kontejner\u00ebve nga fabrika. P\u00ebr shembull, izolimi i memories - \u00e7do kontejner merr nj\u00eb limit t\u00eb p\u00ebrdorimit t\u00eb memories s\u00eb makin\u00ebs, mbi t\u00eb cilin nuk mund t\u00eb konsumoj\u00eb. Gjithashtu, mund t\u00eb izolojm\u00eb kontejner\u00ebt n\u00eb baz\u00eb t\u00eb p\u00ebrdorimit t\u00eb CPU. P\u00ebr ne, megjithat\u00eb, izolimi standard ishte i pamjaftuesh\u00ebm. Por p\u00ebr k\u00ebt\u00eb do flasim m\u00eb posht\u00eb.<\/p>\n<p><\/p>\n<p>Drejtimi i drejtp\u00ebrdrejt\u00eb i kontejner\u00ebve n\u00eb servera \u00ebsht\u00eb vet\u00ebm pjesa e problemeve. Nj\u00eb pjes\u00eb tjet\u00ebr lidhet me vendosjen e kontejner\u00ebve n\u00eb servera. Duhet t\u00eb kuptojm\u00eb se cili kontejner mund t\u00eb vendoset n\u00eb cilin server. Kjo nuk \u00ebsht\u00eb nj\u00eb detyr\u00eb e thjesht\u00eb, sepse kontejner\u00ebt duhet t\u00eb vendosen n\u00eb servera sa m\u00eb ngusht\u00ebsisht, pa ulur shpejt\u00ebsin\u00eb e pun\u00ebs s\u00eb tyre. Kjo vendosje mund t\u00eb jet\u00eb e komplikuar edhe nga pika e pamjaftueshm\u00ebris\u00eb. Shpesh, d\u00ebshirojm\u00eb t\u00eb vendosim replika t\u00eb t\u00eb nj\u00ebjtit sh\u00ebrbim n\u00eb raftet e ndryshme ose madje n\u00eb sallat e ndryshme t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave, n\u00eb m\u00ebnyr\u00eb q\u00eb n\u00eb rast t\u00eb nj\u00eb mosfunksionimi t\u00eb raftit ose sall\u00ebs, t\u00eb mos humbasim menj\u00ebher\u00eb t\u00eb gjitha replikat e sh\u00ebrbimit. <\/p>\n<p><\/p>\n<p>Ndarja manuale e kontejner\u00ebve nuk \u00ebsht\u00eb opsion, kur ke 8000 servera dhe 8-16 mij\u00eb kontejner\u00eb. <\/p>\n<p><\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, d\u00ebshironim t'u jepnim zhvilluesve m\u00eb shum\u00eb autonomi n\u00eb shp\u00ebrndarjen e burimeve, n\u00eb m\u00ebnyr\u00eb q\u00eb ata t\u00eb mund t\u00eb vendosin vet\u00eb sh\u00ebrbimet e tyre n\u00eb prodhim, pa ndihm\u00ebn e administratorit. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, d\u00ebshironim t\u00eb ruanim kontrollin, n\u00eb m\u00ebnyr\u00eb q\u00eb ndonj\u00eb sh\u00ebrbim dyt\u00ebsor t\u00eb mos konsumonte t\u00eb gjitha burimet e qendrave tona t\u00eb t\u00eb dh\u00ebnave. <\/p>\n<p><\/p>\n<p>Sigurisht, na nevojitet nj\u00eb nivel menaxhimi q\u00eb t\u00eb merret me k\u00ebt\u00eb automatikisht.<\/p>\n<p><\/p>\n<p>K\u00ebshtu arrit\u00ebm n\u00eb nj\u00eb pamje t\u00eb thjesht\u00eb dhe t\u00eb qart\u00eb, q\u00eb t\u00eb gjith\u00eb arkitekt\u00ebt e duan: tre katror\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/079df6e79874ef55b0d967fde3d5feca.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>one-cloud masters \u2014 nj\u00eb klas\u00ebr i q\u00ebndruesh\u00ebm q\u00eb menaxhon orkestrimin e cloud-it. Zhvilluesi d\u00ebrgon nj\u00eb manifest tek masteri, q\u00eb p\u00ebrmban t\u00eb gjith\u00eb informacionin e nevojsh\u00ebm p\u00ebr vendosjen e sh\u00ebrbimit. Masteri, n\u00eb baz\u00eb t\u00eb tij, jep urdhra minion\u00ebve t\u00eb zgjedhur (makinat e destinuara p\u00ebr t\u00eb nisur kontejner\u00ebt). Tek minion\u00ebt ka agenin ton\u00eb, i cili merr urdhrin, jep urdhra p\u00ebr Docker, nd\u00ebrsa Docker konfiguronte kernel-in linux p\u00ebr t\u00eb nisur kontejnerin p\u00ebrkat\u00ebs. P\u00ebrve\u00e7 ekzekutimit t\u00eb urdhrave, ageni vazhdimisht informon masterin p\u00ebr ndryshimet e gjendjes si t\u00eb makin\u00ebs minion ashtu edhe t\u00eb kontejner\u00ebve t\u00eb nisur mbi t\u00eb.<\/p>\n<p><\/p>\n<h2 id=\"raspredelenie-resursov\">Shp\u00ebrndarja e burimeve<\/h2>\n<p><\/p>\n<p>Tani le t\u00eb merremi me nj\u00eb detyr\u00eb m\u00eb t\u00eb komplikuar t\u00eb shp\u00ebrndarjes s\u00eb burimeve p\u00ebr shum\u00eb minion\u00eb.<\/p>\n<p><\/p>\n<p>Burimi llogarit\u00ebs n\u00eb one-cloud \u00ebsht\u00eb:<\/p>\n<p><\/p>\n<ul>\n<li>Kapaciteti llogaritar i procesorit, i konsumuar nga nj\u00eb detyr\u00eb e caktuar. <\/li>\n<li>Sasia e memories, e cila \u00ebsht\u00eb e aksesueshme p\u00ebr detyr\u00ebn. <\/li>\n<li>Traffiku n\u00eb rrjet. Secili nga minion\u00ebt ka nj\u00eb nd\u00ebrfaqe rrjeti specifike me nj\u00eb band\u00eb t\u00eb kufizuar, prandaj nuk mund t\u00eb shp\u00ebrndahen detyrat pa marr\u00eb parasysh sasin\u00eb e t\u00eb dh\u00ebnave q\u00eb po transmetohen p\u00ebrmes rrjetit. <\/li>\n<li>Disk\u00ebt. P\u00ebrve\u00e7, natyrisht, hap\u00ebsir\u00ebs p\u00ebr t\u00eb dh\u00ebnat e detyr\u00ebs, ne gjithashtu ndajn\u00eb tipin e diskut: HDD ose SSD. Disk\u00ebt mund t\u00eb sh\u00ebrbejn\u00eb nj\u00eb num\u00ebr t\u00eb caktuar k\u00ebrkesash n\u00eb sekond\u00eb \u2014 IOPS. Prandaj, p\u00ebr detyrat q\u00eb generojn\u00eb m\u00eb shum\u00eb IOPS se sa mund t\u00eb sh\u00ebrbej\u00eb nj\u00eb disk, ne gjithashtu ndajm\u00eb \"spindles\" \u2014 dmth. pajisje diskesh q\u00eb duhet t\u00eb rezervohen ekskluzivisht p\u00ebr detyr\u00ebn.<\/li>\n<\/ul>\n<p><\/p>\n<p>At\u00ebher\u00eb p\u00ebr ndonj\u00eb sh\u00ebrbim, p\u00ebr shembull p\u00ebr user-cache, ne mund t\u00eb regjistruam burimet e konsumuar n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb: 400 b\u00ebrthama procesori, 2.5 TB memory, 50 Gbit\/s trafik n\u00eb t\u00eb dyja drejtimet, 6 TB hap\u00ebsir\u00eb n\u00eb HDD, e vendosur n\u00eb 100 spindles. Ose n\u00eb nj\u00eb form\u00eb m\u00eb t\u00eb njohur p\u00ebr ne k\u00ebshtu:<\/p>\n<p><\/p>\n<pre><code>alloc:\n    cpu: 400\n    mem: 2500\n    lan_in: 50g\n    lan_out: 50g\n    hdd:100x6T<\/code><\/pre>\n<p><\/p>\n<p>Burimet e sh\u00ebrbimit user-cache konsumojn\u00eb vet\u00ebm nj\u00eb pjes\u00eb t\u00eb t\u00eb gjith\u00eb burimeve t\u00eb disponueshme n\u00eb infrastruktur\u00ebn e prodhimit. Prandaj duam t\u00eb sigurohemi q\u00eb papritur, p\u00ebr shkak t\u00eb nj\u00eb gabimi t\u00eb operatorit ose jo, user-cache nuk konsumon m\u00eb shum\u00eb burime sesa i jan\u00eb caktuar. Kjo do t\u00eb thot\u00eb se duhet t\u00eb limitojm\u00eb burimet. Por p\u00ebr \u00e7far\u00eb mund t'ia lidhim kuot\u00ebn?<\/p>\n<p><\/p>\n<p>Le t\u00eb kthehemi n\u00eb skem\u00ebn ton\u00eb shum\u00eb t\u00eb thjeshtuar t\u00eb nd\u00ebrveprimit t\u00eb komponent\u00ebve dhe ta riparametrojm\u00eb me m\u00eb shum\u00eb detaje \u2014 k\u00ebshtu: <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/27e5bfbffadd3d4b9fdc6bf138d135ed.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb bien n\u00eb sy:<\/p>\n<p><\/p>\n<ul>\n<li>Frontend-i web dhe muzika p\u00ebrdorin klastere t\u00eb izoluara nga i nj\u00ebjti server aplikacionesh.<\/li>\n<li>Mund t\u00eb identifikohen nivelet logjike, t\u00eb cilat p\u00ebrfshijn\u00eb k\u00ebto klastere: frontet, cache-at, shtresa e ruajtjes dhe menaxhimit t\u00eb t\u00eb dh\u00ebnave.<\/li>\n<li>Frontend-i \u00ebsht\u00eb heterogjen, jan\u00eb n\u00ebn-sistemet funksionale t\u00eb ndryshme. <\/li>\n<li>Cache-at gjithashtu mund t\u00eb shp\u00ebrndahen sipas n\u00ebn-sistemave, t\u00eb dh\u00ebnat t\u00eb cilat ata i cache-ojn\u00eb.<\/li>\n<\/ul>\n<p><\/p>\n<p>Le ta riparametrojm\u00eb edhe nj\u00eb her\u00eb figur\u00ebn:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/905dacc0aca859e65bd33ef751a557cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oo! Ne shohim nj\u00eb hierarki! Kjo do t\u00eb thot\u00eb se mund t\u00eb shp\u00ebrndahen burimet n\u00eb m\u00ebnyr\u00eb m\u00eb t\u00eb madhe: t'i caktojm\u00eb nj\u00eb zhvillues t\u00eb p\u00ebrgjegjsh\u00ebm n\u00eb nyj\u00ebn e k\u00ebsaj hierarkie, e cila i p\u00ebrkon n\u00ebn-sistemit funksional (si \"muzika\" n\u00eb figur\u00eb), dhe lidhim kuot\u00ebn me k\u00ebt\u00eb nivel t\u00eb hierarkis\u00eb. Nj\u00eb hierarki e till\u00eb gjithashtu na lejon t\u00eb organizojm\u00eb sh\u00ebrbimet me m\u00eb shum\u00eb fleksibilitet p\u00ebr qellime menaxhimi. P\u00ebr shembull, t\u00eb gjith\u00eb web-in, pasi \u00ebsht\u00eb nj\u00eb grup shum\u00eb i madh server\u00ebsh, ne e ndarim n\u00eb disa grupe t\u00eb vogla, t\u00eb paraqitura n\u00eb figur\u00eb si group1, group2.<\/p>\n<p><\/p>\n<p>Duke hequr linjat e tep\u00ebrta, mund t\u00eb regjistrojm\u00eb \u00e7do nyj\u00eb t\u00eb figur\u00ebs son\u00eb n\u00eb nj\u00eb form\u00eb m\u00eb t\u00eb shesht\u00eb: <strong>group1.web.front<\/strong>, <strong>api.music.front<\/strong>, <strong>user-cache.cache<\/strong>.<\/p>\n<p><\/p>\n<p>K\u00ebshtu arrijm\u00eb n\u00eb nocionin e \"rendezh\u00ebs hierarkike\". Ajo ka emrin, si \"group1.web.front\". I caktohet kuota e burimeve dhe t\u00eb drejtat e p\u00ebrdoruesve. Njer\u00ebzve nga DevOps do t'u japim t\u00eb drejtat p\u00ebr t\u00eb d\u00ebrguar sh\u00ebrbimin n\u00eb renditje, dhe ky punonj\u00ebs mund t\u00eb niste di\u00e7ka n\u00eb renditje, nd\u00ebrsa nj\u00eb person nga OpsDev do t\u00eb ket\u00eb t\u00eb drejtat administruese, dhe tani ai mund t\u00eb menaxhoj\u00eb renditjen, t'u caktoj\u00eb atyre njer\u00ebzve t\u00eb drejta etj. Sh\u00ebrbimet e nisura n\u00eb k\u00ebt\u00eb renditje do t\u00eb ekzekutohen brenda kuot\u00ebs s\u00eb renditjes. N\u00ebse kuota llogaritative e renditjes nuk \u00ebsht\u00eb e mjaftueshme p\u00ebr t\u00eb ekzekutuar t\u00eb gjitha sh\u00ebrbimet nj\u00ebkoh\u00ebsisht, ato do t\u00eb ekzekutohen nj\u00eb nga nj\u00eb, duke formuar k\u00ebshtu vet\u00eb renditjen. <\/p>\n<p><\/p>\n<p>Le t\u00eb shqyrtojm\u00eb sh\u00ebrbimet m\u00eb holl\u00ebsisht. Nj\u00eb sh\u00ebrbim ka nj\u00eb em\u00ebr t\u00eb plot\u00eb, q\u00eb gjithmon\u00eb p\u00ebrfshin emrin e renditjes. At\u00ebher\u00eb sh\u00ebrbimi web front do t\u00eb ket\u00eb emrin <strong>ok-web.group1.web.front<\/strong>. Nd\u00ebrsa sh\u00ebrbimi i serverit t\u00eb aplikacionit, t\u00eb cilit iu drejtohet, do t\u00eb quhet <strong>ok-app.group1.web.front<\/strong>. \u00c7do sh\u00ebrbim ka nj\u00eb manifest ku tregohet t\u00eb gjitha informacionet e nevojshme p\u00ebr vendosjen n\u00eb makinat p\u00ebrkat\u00ebse: sa burime konsumon ky proces, cila konfigurim i nevojitet, sa replikat duhet t\u00eb ket\u00eb, dhe cil\u00ebsit\u00eb p\u00ebr trajtimin e d\u00ebshtimeve t\u00eb k\u00ebtij sh\u00ebrbimi. Pas vendosjes s\u00eb sh\u00ebrbimit n\u00eb makinat, shfaqen ekzemplar\u00ebt e tij. Ata gjithashtu p\u00ebrmenden qart\u00eb \u2014 si numri i ekzemplar\u00ebve dhe emri i sh\u00ebrbimit: <strong>1.ok-web.group1.web.front, 2.ok-web.group1.web.front, \u2026<\/strong><\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb shum\u00eb e dobishme: duke par\u00eb vet\u00ebm emrin e kontejnerit t\u00eb nisur, ne mund t\u00eb zbulojm\u00eb shum\u00eb.<\/p>\n<p><\/p>\n<p>Tani le t\u00eb njohim m\u00eb af\u00ebr se \u00e7far\u00eb b\u00ebjn\u00eb k\u00ebta ekzemplar\u00eb: me detyrat.<\/p>\n<p><\/p>\n<h2 id=\"klassy-izolyacii-zadach\">Klasa e izolimit t\u00eb detyrave<\/h2>\n<p><\/p>\n<p>T\u00eb gjitha detyrat n\u00eb OK (dhe ndoshta kudo) mund t\u00eb ndahen n\u00eb grupe:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Detyrat me vones\u00eb t\u00eb shkurt\u00ebr \u2014 prodhim<\/strong>. P\u00ebr k\u00ebto detyra dhe sh\u00ebrbime, \u00ebsht\u00eb shum\u00eb e r\u00ebnd\u00ebsishme vonesa e p\u00ebrgjigjes (latency), se sa shpejt do t\u00eb p\u00ebrpunohen secili nga k\u00ebrkesat nga sistemi. Shembuj t\u00eb detyrave: frontet web, cache, serverat e aplikacioneve, depozitimet OLTP, etj.<\/li>\n<li><strong>Detyrat llogarit\u00ebse \u2014 grumbull<\/strong>. K\u00ebtu, shpejt\u00ebsia e p\u00ebrpunimit t\u00eb \u00e7do k\u00ebrkese konkrete nuk \u00ebsht\u00eb e r\u00ebnd\u00ebsishme. Ajo q\u00eb ka r\u00ebnd\u00ebsi \u00ebsht\u00eb se sa t\u00eb gjitha llogarit\u00eb n\u00eb nj\u00eb periudh\u00eb t\u00eb caktuar (t\u00eb madhe) kohe do t\u00eb b\u00ebj\u00eb kjo detyr\u00eb (throughput). K\u00ebto do t\u00eb jen\u00eb \u00e7do detyr\u00eb MapReduce, Hadoop, m\u00ebsim makinerik, statistika.<\/li>\n<li><strong>Detyrat n\u00eb prapavij\u00eb \u2014 t\u00eb lir\u00eb<\/strong>. P\u00ebr k\u00ebto detyra nuk jan\u00eb shum\u00eb t\u00eb r\u00ebnd\u00ebsishme as latency, as throughput. K\u00ebtu p\u00ebrfshihen teste t\u00eb ndryshme, migrime, rilogaritje, konvertim t\u00eb t\u00eb dh\u00ebnave nga nj\u00eb format n\u00eb tjetrin. Nga nj\u00ebra an\u00eb, ato jan\u00eb t\u00eb ngjashme me llogarit\u00ebse, nga ana tjet\u00ebr \u2014 nuk \u00ebsht\u00eb shum\u00eb e r\u00ebnd\u00ebsishme se sa shpejt p\u00ebrfundojn\u00eb. <\/li>\n<\/ul>\n<p><\/p>\n<p>Le t\u00eb shohim se si k\u00ebto detyra konsumojn\u00eb burime, p\u00ebr shembull, at\u00eb t\u00eb procesorit qendror.<\/p>\n<p><\/p>\n<p><strong>Detyrat me vones\u00eb t\u00eb shkurt\u00ebr.<\/strong> Nj\u00eb detyr\u00eb e till\u00eb do t\u00eb ket\u00eb nj\u00eb model konsumimi t\u00eb CPU q\u00eb duket k\u00ebshtu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/1ed82c0df76325eb30056ad9af86e86e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb k\u00ebrkes\u00eb nga p\u00ebrdoruesi p\u00ebrpunohen, detyra fillon t\u00eb p\u00ebrdor\u00eb t\u00eb gjitha b\u00ebrthamat e disponueshme t\u00eb CPU, p\u00ebrpunon, kthen p\u00ebrgjigjen, pret k\u00ebrkes\u00ebn tjet\u00ebr dhe q\u00ebndron. Nj\u00eb k\u00ebrkes\u00eb tjet\u00ebr erdhi \u2014 p\u00ebrs\u00ebri zgjodhi gjith\u00e7ka q\u00eb kishte, p\u00ebrfundoi p\u00ebrpunimin, pret k\u00ebrkes\u00ebn tjet\u00ebr.<\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb garantuar minimumin e vones\u00ebs p\u00ebr nj\u00eb detyr\u00eb t\u00eb till\u00eb, ne duhet t\u00eb marrim maksimumin e burimeve q\u00eb ajo konsumon dhe t\u00eb rezervojm\u00eb numrin e nevojsh\u00ebm t\u00eb b\u00ebrthamave n\u00eb minion (makin\u00ebn q\u00eb do t\u00eb realizoj\u00eb detyr\u00ebn). At\u00ebher\u00eb formula e rezervimit p\u00ebr detyr\u00ebn ton\u00eb do t\u00eb duket si m\u00eb posht\u00eb:<\/p>\n<p><\/p>\n<pre><code>alloc: cpu = 4 (maks)<\/code><\/pre>\n<p><\/p>\n<p>dhe n\u00ebse kemi nj\u00eb makin\u00eb-minion me 16 b\u00ebrthama, at\u00ebher\u00eb mund t\u00eb vendosim sakt\u00ebsisht kat\u00ebr nga k\u00ebto detyra. Ve\u00e7an\u00ebrisht t\u00eb theksojm\u00eb se konsumimi mesatar i procesorit p\u00ebr k\u00ebto detyra shpesh \u00ebsht\u00eb shum\u00eb i ul\u00ebt \u2014 \u00e7\u2019\u00ebsht\u00eb e v\u00ebrteta, pasi nj\u00eb pjes\u00eb t\u00eb madhe t\u00eb koh\u00ebs detyra \u00ebsht\u00eb n\u00eb pritje t\u00eb nj\u00eb k\u00ebrkese dhe nuk b\u00ebn asgj\u00eb.<\/p>\n<p><\/p>\n<p><strong>Detyrat llogarit\u00ebse.<\/strong> Forma e tyre \u00ebsht\u00eb pak m\u00eb ndryshe:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/35b37fa1d70a137287cafdbfe3bcfc2e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Konsumimi mesatar i burimeve t\u00eb procesorit p\u00ebr k\u00ebto detyra \u00ebsht\u00eb mjaft i lart\u00eb. Shpesh ne duam q\u00eb nj\u00eb detyr\u00eb llogarit\u00ebse t\u00eb p\u00ebrfundoj\u00eb brenda nj\u00eb kohe t\u00eb caktuar, prandaj \u00ebsht\u00eb e nevojshme t\u00eb rezervojm\u00eb numrin minimal t\u00eb procesor\u00ebve q\u00eb i nevojiten p\u00ebr t\u00eb p\u00ebrfunduar t\u00eb gjith\u00eb llogaritjen brenda nj\u00eb kohe t\u00eb pranueshme. Formula e saj e rezervimit do t\u00eb duket k\u00ebshtu:<\/p>\n<p><\/p>\n<pre><code>alloc: cpu = [1,*)<\/code><\/pre>\n<p><\/p>\n<p><em>\u00abT\u00eb lutem, vendos n\u00eb minion, ku ka t\u00eb pakt\u00ebn nj\u00eb b\u00ebrtham\u00eb t\u00eb lir\u00eb, dhe m\u00eb pas sa m\u00eb shum\u00eb q\u00eb ka \u2014 do ta konsumoj\u00eb gjith\u00eb at\u00eb\u00bb.<\/em><\/p>\n<p><\/p>\n<p>K\u00ebtu efektiviteti i p\u00ebrdorimit tashm\u00eb \u00ebsht\u00eb shum\u00eb m\u00eb i mir\u00eb se n\u00eb detyrat me vones\u00eb t\u00eb shkurt\u00ebr. Por p\u00ebrfitimi do t\u00eb jet\u00eb shum\u00eb m\u00eb i madh n\u00ebse kombinoni t\u00eb dyja llojet e detyrave n\u00eb nj\u00eb makin\u00eb-minion dhe t\u00eb shp\u00ebrndani burimet e saj n\u00eb fluks. Kur nj\u00eb detyr\u00eb me vones\u00eb t\u00eb shkurt\u00ebr k\u00ebrkon procesor \u2014 ajo e merr menj\u00ebher\u00eb, dhe kur burimet nuk nevojiten m\u00eb \u2014 ato i kalohen detyr\u00ebs llogarit\u00ebse, ose ndryshe k\u00ebshtu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/875ad8d3f6a01e4fd0a89d0931e986c1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por si ta b\u00ebjm\u00eb k\u00ebt\u00eb?<\/p>\n<p><\/p>\n<p>Fillimisht le t\u00eb shpjegojm\u00eb me prodhimin dhe alloc: cpu = 4. Na nevojitet t\u00eb rezervojm\u00eb kat\u00ebr b\u00ebrthama. N\u00eb Docker run, kjo mund t\u00eb b\u00ebhet n\u00eb dy m\u00ebnyra: <\/p>\n<p><\/p>\n<ul>\n<li>Me opsionin <code>--cpuset=1-4<\/code>, dmth. t\u00eb mir\u00ebpresim kat\u00ebr b\u00ebrthama t\u00eb caktuar n\u00eb makin\u00eb p\u00ebr detyr\u00ebn.<\/li>\n<li>P\u00ebrdorni <code>--cpuquota=400_000 --cpuperiod=100_000<\/code>, t\u00eb caktuar nj\u00eb kuot\u00eb p\u00ebr koh\u00ebn e procesorit, dmth. t\u00eb tregojm\u00eb se \u00e7do 100 ms t\u00eb koh\u00ebs reale, detyra konsumon jo m\u00eb shum\u00eb se 400 ms t\u00eb koh\u00ebs s\u00eb procesorit. Rezulton po ato kat\u00ebr b\u00ebrthama. <\/li>\n<\/ul>\n<p><\/p>\n<p>Por cili nga k\u00ebto metoda do t\u2019i p\u00ebrshtatet?<\/p>\n<p><\/p>\n<p>Duket mjaft atraktive cpuset. Nj\u00eb proces ka kat\u00ebr b\u00ebrthama t\u00eb dedikuara, q\u00eb do t\u00eb thot\u00eb se memoret e procesorit do t\u00eb funksionojn\u00eb sa m\u00eb efektivisht. Ka edhe nj\u00eb an\u00eb negative: do t\u00eb na duhej t\u00eb merreshim me shp\u00ebrndarjen e ngarkesave p\u00ebr b\u00ebrthamat e pap\u00ebrcaktuara t\u00eb makin\u00ebs n\u00eb vend t\u00eb OS, dhe kjo \u00ebsht\u00eb nj\u00eb detyr\u00eb e nd\u00ebrlikuar, ve\u00e7an\u00ebrisht n\u00ebse p\u00ebrpiqemi t\u00eb vendosim p\u00ebr detyra batch. Testet treguan se varianti me kuota \u00ebsht\u00eb m\u00eb i p\u00ebrshtatsh\u00ebm: k\u00ebshtu sistemi operativ ka m\u00eb shum\u00eb liri p\u00ebr t\u00eb zgjedhur b\u00ebrtham\u00ebn p\u00ebr t\u00eb p\u00ebrfunduar detyr\u00ebn n\u00eb at\u00eb moment dhe koha e procesorit shp\u00ebrndahet m\u00eb efektivisht.<\/p>\n<p><\/p>\n<p>Le t\u00eb shqyrtojm\u00eb se si n\u00eb docker t\u00eb b\u00ebjm\u00eb rezervimin me numrin minimal t\u00eb b\u00ebrthamave. Kuota p\u00ebr detyrat batch tashm\u00eb nuk \u00ebsht\u00eb e aplikueshme, sepse nuk \u00ebsht\u00eb e nevojshme t\u00eb kufizohet maksimumi, \u00ebsht\u00eb mjaft vet\u00ebm t\u00eb sigurohet minimumi. K\u00ebtu p\u00ebrshtatet mir\u00eb opsioni <code>docker run --cpushares<\/code>.<\/p>\n<p><\/p>\n<p>Ne u dakorduam se n\u00ebse batch k\u00ebrkon nj\u00eb garanci minimale p\u00ebr nj\u00eb b\u00ebrtham\u00eb, at\u00ebher\u00eb e specifikojm\u00eb <code>--cpushares=1024<\/code>, n\u00ebse minimumi \u00ebsht\u00eb p\u00ebr dy b\u00ebrthama, at\u00ebher\u00eb e specifikojm\u00eb <code>--cpushares=2048<\/code>. Cpu shares nuk ndikojn\u00eb n\u00eb shp\u00ebrndarjen e koh\u00ebs s\u00eb procesorit p\u00ebrderisa \u00ebsht\u00eb mjaftuesh\u00ebm. K\u00ebshtu, n\u00ebse prodhimi nuk po p\u00ebrdor t\u00eb kat\u00ebr b\u00ebrthamat e tij n\u00eb at\u00eb moment \u2014 asgj\u00eb nuk e kufizon detyrat batch, dhe ato mund t\u00eb p\u00ebrdorin koh\u00ebn e shtes\u00eb t\u00eb procesorit. Por n\u00eb situat\u00ebn e munges\u00ebs s\u00eb procesorit, n\u00ebse prodhimi ka konsumuar t\u00eb kat\u00ebr b\u00ebrthamat e tij dhe \u00ebsht\u00eb bllokuar n\u00eb kuot\u00eb \u2014 koha e mbetur e procesorit do t\u00eb ndaj\u00eb proporcionalisht sipas cpushares, dmth. n\u00eb situat\u00ebn e tre b\u00ebrthamave t\u00eb lira, nj\u00ebr\u00ebn do ta marr\u00eb detyra me 1024 cpushares, nd\u00ebrsa dy t\u00eb tjerat \u2014 detyra me 2048 cpushares.<\/p>\n<p><\/p>\n<p>Por p\u00ebrdorimi i kuotave dhe shares nuk \u00ebsht\u00eb i mjaftuesh\u00ebm. Na nevojitet t\u00eb sigurojm\u00eb q\u00eb detyra me vones\u00eb t\u00eb shkurt\u00ebr t\u00eb ket\u00eb prioritet mbi detyr\u00ebn batch n\u00eb shp\u00ebrndarjen e koh\u00ebs s\u00eb procesorit. Pa nj\u00eb prioritet t\u00eb till\u00eb, detyra batch do t\u00eb marr\u00eb t\u00eb gjitha koh\u00ebn e procesorit kur ajo \u00ebsht\u00eb e nevojshme p\u00ebr prodhimin. N\u00eb Docker run nuk ka opsione p\u00ebr prioritetizimin e kontejner\u00ebve, por ndihmojn\u00eb politikat e planifikuesit t\u00eb procesorit n\u00eb Linux. M\u00eb shum\u00eb rreth tyre mund t\u00eb lexoni <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man2\/sched_setscheduler.2.html\">k\u00ebtu<\/a><\/noindex>, nd\u00ebrsa n\u00eb k\u00ebt\u00eb artikull ne do t\u00eb kalojm\u00eb shpejt p\u00ebrmes tyre:<\/p>\n<p><\/p>\n<ul>\n<li><strong>SCHED_OTHER<\/strong><br \/>\nMarrin automatikisht t\u00eb gjitha proceset e zakonshme t\u00eb p\u00ebrdoruesve n\u00eb makin\u00ebn Linux.<\/li>\n<li><strong>SCHED_BATCH<\/strong><br \/>\nE caktuar p\u00ebr proceset q\u00eb k\u00ebrkojn\u00eb shum\u00eb resurse. Kur vendosni nj\u00eb detyr\u00eb n\u00eb procesor, vendoset nj\u00eb nd\u00ebshkim p\u00ebr aktivizimin: nj\u00eb detyr\u00eb e till\u00eb ka m\u00eb pak mund\u00ebsi t\u00eb marr\u00eb resurset e procesorit, n\u00ebse po p\u00ebrdoret aktualisht nga nj\u00eb detyr\u00eb me SCHED_OTHER.<\/li>\n<li><strong>SCHED_IDLE<\/strong><br \/>\nNj\u00eb proces n\u00eb prapavij\u00eb me nj\u00eb prioritet shum\u00eb t\u00eb ul\u00ebt, madje m\u00eb t\u00eb ul\u00ebt se nice \u201319. Ne p\u00ebrdorim bibliotek\u00ebn ton\u00eb me burim t\u00eb hapur <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/odnoklassniki\/one-nio\">one-nio<\/a><\/noindex>, p\u00ebr t\u00eb vendosur politik\u00ebn e nevojshme gjat\u00eb nisjes s\u00eb kontejnerit me thirrjen<\/li>\n<\/ul>\n<p><\/p>\n<pre><code class=\"java\">one.nio.os.Proc.sched_setscheduler( pid, Proc.SCHED_IDLE )<\/code><\/pre>\n<p><\/p>\n<p>Por edhe n\u00ebse nuk po programoni n\u00eb Java, e nj\u00ebjta gj\u00eb mund t\u00eb b\u00ebhet duke p\u00ebrdorur komand\u00ebn chrt:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">chrt -i 0 $pid<\/code><\/pre>\n<p><\/p>\n<p>Le t\u00eb p\u00ebrmbledhim t\u00eb gjitha nivelet tona t\u00eb izolimit n\u00eb nj\u00eb tabel\u00eb p\u00ebr qart\u00ebsi:<\/p>\n<p><\/p>\n<p>Klassi i izolimit<br \/>\nShembulli alloc<br \/>\nOpsionet Docker run<br \/>\nsched_setscheduler chrt*<\/p>\n<p>Prod<br \/>\ncpu = 4<br \/>\n<code>--cpuquota=400000<\/code> <code>--cpuperiod=100000<\/code><br \/>\nSCHED_OTHER<\/p>\n<p>Batch<br \/>\nCpu = [1, * )<br \/>\n<code>--cpushares=1024<\/code><br \/>\nSCHED_BATCH<\/p>\n<p>Idle<br \/>\nCpu= [2, *)<br \/>\n<code>--cpushares=2048<\/code><br \/>\nSCHED_IDLE<\/p>\n<p><\/p>\n<p>*N\u00ebse e b\u00ebni chrt nga brenda kontejnerit, mund t\u00eb jet\u00eb e nevojshme capabilities sys_nice, sepse n\u00eb m\u00ebnyr\u00eb t\u00eb paracaktuar Docker e heq k\u00ebt\u00eb capability gjat\u00eb nisjes s\u00eb kontejnerit.<\/p>\n<p><\/p>\n<p>Por detyrat konsumojn\u00eb jo vet\u00ebm procesor, por edhe trafik, i cili ndikon n\u00eb vones\u00ebn e detyr\u00ebs n\u00eb rrjet m\u00eb shum\u00eb se shp\u00ebrndarja e gabuar e resurseve t\u00eb procesorit. Prandaj, natyrisht duam t\u00eb kemi imazhin e nj\u00ebjt\u00eb edhe p\u00ebr trafik. Do t\u00eb thot\u00eb, kur detyra prodhuese d\u00ebrgon disa paketa n\u00eb rrjet, ne kufizojm\u00eb shpejt\u00ebsin\u00eb maksimale (formula <em>alloc: lan=[*,500mbps)<\/em> ), me t\u00eb cil\u00ebn prodhimi mund ta b\u00ebj\u00eb k\u00ebt\u00eb. P\u00ebr detyrat batch garantojm\u00eb vet\u00ebm kapacitetin minimal t\u00eb kalimit, por nuk e kufizojm\u00eb maksimumin (formula <em>alloc: lan=[10Mbps,*)<\/em> ) N\u00eb k\u00ebt\u00eb rast, trafiku prodhues duhet t\u00eb marr\u00eb prioritet ndaj detyrave batch.<br \/>\nK\u00ebtu Docker nuk ka asnj\u00eb primitiv q\u00eb mund ta p\u00ebrdornim. Por na ndihmon <noindex><a rel=\"nofollow\" href=\"http:\/\/lartc.org\/\">Kontrolli i Trafikut Linux<\/a><\/noindex>. Ne arrit\u00ebm rezultatet e nevojshme me ndihm\u00ebn e disiplin\u00ebs <noindex><a rel=\"nofollow\" href=\"http:\/\/linux-ip.net\/articles\/hfsc.en\/\">Hierarchical Fair Service Curve<\/a><\/noindex>. Me t\u00eb, ne ndajm\u00eb dy klasa trafiku: prodhimi me prioritet t\u00eb lart\u00eb dhe batch\/idle me prioritet t\u00eb ul\u00ebt. \u00c7far\u00eb rezulton \u00ebsht\u00eb konfigurimi p\u00ebr trafikun e dal\u00ebs:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/gh\/5k\/kf\/gh5kkfwkhwv0ilmbdmdbo83dp6k.png\"><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/3f52a968118b6021bd0c920af17a00c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>k\u00ebtu 1:0 \u2014 &#171;qdisc-r\u00ebnj\u00eb&#187; i disiplin\u00ebs hsfc; 1:1 \u2014 klasa f\u00ebmij\u00eb hsfc me nj\u00eb kufi t\u00eb p\u00ebrbashk\u00ebt t\u00eb band\u00ebs prej 8 Gbit\/s, n\u00ebn t\u00eb cilin p\u00ebrfshihen klasat f\u00ebmij\u00eb t\u00eb gjith\u00eb kontejner\u00ebve; 1:2 \u2014 klasa f\u00ebmij\u00eb hsfc e p\u00ebrbashk\u00ebt p\u00ebr t\u00eb gjitha detyrat batch dhe idle me nj\u00eb kufi &#171;dinamik&#187; q\u00eb do t\u00eb diskutohet m\u00eb posht\u00eb. Klasa t\u00eb tjera f\u00ebmij\u00eb hsfc jan\u00eb klasa t\u00eb dedikuara p\u00ebr kontejner\u00ebt prodhuese q\u00eb punojn\u00eb aktualisht, me kufij q\u00eb p\u00ebrkojn\u00eb me manifestet e tyre, \u2014 450 dhe 400 Mbit\/s. \u00c7do klase hsfc i \u00ebsht\u00eb caktuar nj\u00eb kuad\u00ebr fq ose fq_codel, n\u00eb var\u00ebsi t\u00eb versionit t\u00eb b\u00ebrtham\u00ebs linux, p\u00ebr t\u00eb shmangur humbjet e paketeve gjat\u00eb shp\u00ebrthimeve t\u00eb trafikut. <\/p>\n<p><\/p>\n<p>Zakonisht disiplinat tc sh\u00ebrbejn\u00eb p\u00ebr t\u00eb prioritarizuar vet\u00ebm trafikun dal\u00ebs. Por ne duam t\u00eb prioritarizojm\u00eb edhe trafikun hyr\u00ebs \u2014 sepse ndonj\u00eb detyr\u00eb batch mund t\u00eb marr\u00eb t\u00eb gjith\u00eb kanalin hyr\u00ebs, duke marr\u00eb, p\u00ebr shembull, nj\u00eb paket\u00eb t\u00eb madhe t\u00eb dh\u00ebnash hyr\u00ebse p\u00ebr map&amp;reduce. P\u00ebr k\u00ebt\u00eb, ne p\u00ebrdorim modul <noindex><a rel=\"nofollow\" href=\"https:\/\/serverfault.com\/questions\/350023\/tc-ingress-policing-and-ifb-mirroring\">ifb<\/a><\/noindex>, i cili krijon nj\u00eb nd\u00ebrfaqe virtuale ifbX p\u00ebr secil\u00ebn nd\u00ebrfaqe rrjeti dhe ridrejton trafikun hyr\u00ebs nga nd\u00ebrfaqja n\u00eb dal\u00ebsin n\u00eb ifbX. M\u00eb pas p\u00ebr ifbX punojn\u00eb t\u00eb nj\u00ebjtat disiplinat p\u00ebr kontrollin e trafikut dal\u00ebs, p\u00ebr t\u00eb cilin konfigurimi hsfc do t\u00eb jet\u00eb shum\u00eb i ngjash\u00ebm:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/iz\/ao\/-k\/izao-kgthgu_ptgyq9cjb1il0wm.png\"><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/967da9c0637cc70ba195af781db18adf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Gjat\u00eb eksperimentimeve, ne zbuluam se rezultatet m\u00eb t\u00eb mira hsfc tregohen kur klasa 1:2 e trafikut t\u00eb pas prioriteteve batch\/idle kufizohet n\u00eb makinat minion\u00eb jo m\u00eb shum\u00eb se nj\u00eb g\u00ebrshet t\u00eb lir\u00eb. N\u00eb t\u00eb kund\u00ebrt, trafiku i pas prioriteteve ndikon shum\u00eb n\u00eb vones\u00ebn e detyrave prodhuese. Vlera aktuale e g\u00ebrshetit t\u00eb lir\u00eb p\u00ebrcaktohet nga miniond \u00e7do sekond\u00eb, duke matur konsumimin mesatar t\u00eb trafikut nga t\u00eb gjitha detyrat prodhuese t\u00eb k\u00ebtij minioni <img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/9d6f38110d3b1693afe222b01430b9bb.jpg\" style=\"display:block;margin: 0 auto;\" \/> dhe duke e zbritur at\u00eb nga kapaciteti i nd\u00ebrfaqes rrjeti <img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/d5608ec4c58e44b8571ab0b1d0cc7701.jpg\" style=\"display:block;margin: 0 auto;\" \/> me nj\u00eb rezerv\u00eb t\u00eb vog\u00ebl, dmth.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/fb01347c2224bd5bbd82169861eeb7e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>G\u00ebrshetet p\u00ebrcaktohen p\u00ebr trafikun hyr\u00ebs dhe dal\u00ebs pavar\u00ebsisht. Dhe n\u00eb p\u00ebrputhje me vlerat e reja, miniond ri-konfiguron kufizimin e klas\u00ebs s\u00eb pas prioriteteve 1:2.<\/p>\n<p><\/p>\n<p>K\u00ebshtu, ne realizuam t\u00eb tri klasat e izolimit: prod, batch dhe idle. K\u00ebto klasa ndihen fort n\u00eb karakteristikat e ekzekutimit t\u00eb detyrave. Prandaj ne vendos\u00ebm t\u00eb vendosim k\u00ebt\u00eb ve\u00e7ori n\u00eb krye t\u00eb hierarkis\u00eb, q\u00eb kur shohim emrin e radh\u00ebs hierarkike, t\u00eb kuptojm\u00eb menj\u00ebher\u00eb se \u00e7far\u00eb kemi p\u00ebrpara: <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/34dc89c461db711b19a0f4eccc50efce.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00eb gjith\u00eb frontet tona t\u00eb njohura <strong>web<\/strong> dhe <strong>music<\/strong> vendosen n\u00eb hierarki n\u00ebn prod. P\u00ebr shembull, n\u00ebn batch le t\u00eb vendosim sh\u00ebrbimin <strong>catalog music<\/strong>, i cili periodikisht krijon nj\u00eb katalog k\u00ebng\u00ebsh nga nj\u00eb grup mp3-fajllesh t\u00eb ngarkuara n\u00eb \u00abOdnoklassniki\u00bb. Dhe nj\u00eb shembull sh\u00ebrbimi n\u00ebn idle mund t\u00eb jet\u00eb <strong>transformer music<\/strong>, q\u00eb normalizon nivelin e z\u00ebrit t\u00eb muzik\u00ebs.<\/p>\n<p><\/p>\n<p>Duke hequr p\u00ebrs\u00ebri linjat e tep\u00ebrta, ne mund ta shkruajm\u00eb emrin e sh\u00ebrbimeve tona m\u00eb n\u00eb m\u00ebnyr\u00eb m\u00eb t\u00eb shesht\u00eb, duke shtuar klas\u00ebn e izolimit t\u00eb detyr\u00ebs n\u00eb fund t\u00eb emrit t\u00eb plot\u00eb t\u00eb sh\u00ebrbimit: <strong>web.front.prod<\/strong>, <strong>catalog.music.batch<\/strong>, <strong>transformer.music.idle<\/strong>.<\/p>\n<p><\/p>\n<p>Dhe tani, duke par\u00eb emrin e sh\u00ebrbimit, ne kuptojm\u00eb jo vet\u00ebm se \u00e7far\u00eb funksioni kryen, por edhe klas\u00ebn e tij t\u00eb izolimit, dhe p\u00ebr pasoj\u00eb, kritik\u00ebn e tij etj.<\/p>\n<p><\/p>\n<p>T\u00eb gjitha k\u00ebto jan\u00eb t\u00eb shk\u00eblqyera, por ekziston nj\u00eb e v\u00ebrtet\u00eb e hidhur. \u00cbsht\u00eb e pamundur t\u00eb izolosh plot\u00ebsisht detyrat q\u00eb punojn\u00eb n\u00eb nj\u00eb makin\u00eb.<\/p>\n<p><\/p>\n<p>\u00c7far\u00eb arrit\u00ebm t\u00eb fitojm\u00eb: n\u00ebse batch konsumon intensivisht <strong>vet\u00ebm<\/strong> burimet e procesorit, at\u00ebher\u00eb planifikuesi i integruar i CP-s\u00eb t\u00eb Linux e b\u00ebn shum\u00eb mir\u00eb pun\u00ebn e tij, dhe ndikimi n\u00eb detyr\u00ebn prodhuese \u00ebsht\u00eb pothuajse i pav\u00ebrejtsh\u00ebm. Por n\u00ebse kjo detyr\u00eb batch fillon t\u00eb punoj\u00eb aktivisht me memorien, ndikimi i nd\u00ebrsjell\u00eb tashm\u00eb shfaqet. Kjo ndodh sepse p\u00ebr detyr\u00ebn prodhuese, cache-t e procesorit t\u00eb memories \u00abshkarkohen\u00bb \u2014 si rezultat, rriten goditjet n\u00eb cache dhe procesori e p\u00ebrpunon detyr\u00ebn prodhuese m\u00eb ngadal\u00eb. Nj\u00eb detyr\u00eb e till\u00eb batch mund t\u00eb rris\u00eb vonesat e kontejnerit tipik prodhuese me 10%.<\/p>\n<p><\/p>\n<p>T\u00eb izolohesh trafikun \u00ebsht\u00eb edhe m\u00eb e v\u00ebshtir\u00eb p\u00ebr shkak se kartat e reja rrjeti moderne kan\u00eb nj\u00eb radh\u00eb t\u00eb brendshme paketash. N\u00ebse nj\u00eb paket\u00eb nga detyra batch arriti e para atje, at\u00ebher\u00eb ajo do t\u00eb d\u00ebrgohet e para p\u00ebrmes kabllit, dhe nuk ka \u00e7far\u00eb t\u00eb b\u00ebsh.<\/p>\n<p><\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, deri tani kemi arritur t\u00eb zgjidhim vet\u00ebm problemin e prioritarizimit t\u00eb trafik t\u00eb TCP-s\u00eb: qasja me hsfc nuk funksionon p\u00ebr UDP. Dhe madje n\u00eb rastin e trafikut TCP, n\u00ebse detyra batch gjeneron shum\u00eb trafik, kjo gjithashtu jep rreth 10% rritje t\u00eb vones\u00ebs s\u00eb detyr\u00ebs prodhuese.<\/p>\n<p><\/p>\n<h2 id=\"otkazoustoychivost\">Q\u00ebndrueshm\u00ebria<\/h2>\n<p><\/p>\n<p>Nj\u00eb nga synimet gjat\u00eb zhvillimit t\u00eb one-cloud ishte p\u00ebrmir\u00ebsimi i disponueshm\u00ebris\u00eb s\u00eb Odnoklassniki. Prandaj, m\u00eb pas do t\u00eb doja t\u00eb shqyrtoj skenar\u00ebt e mundsh\u00ebm t\u00eb d\u00ebshtimeve dhe aksidenteve m\u00eb n\u00eb detaje. Le t\u00eb fillojm\u00eb me nj\u00eb skenar t\u00eb thjesht\u00eb \u2014 me d\u00ebshtimin e kontejnerit. <\/p>\n<p><\/p>\n<p>Konteineri mund t\u00eb d\u00ebshton n\u00eb disa m\u00ebnyra. Mund t\u00eb jet\u00eb ndonj\u00eb eksperiment, nj\u00eb defekt ose nj\u00eb gabim n\u00eb manifest, q\u00eb b\u00ebhet shkak q\u00eb detyra prodhuese t\u00eb konsumoj\u00eb m\u00eb shum\u00eb burime se sa \u00ebsht\u00eb especificuar n\u00eb manifest. Ne kishim nj\u00eb rast: zhvilluesi realizoi nj\u00eb algorit\u00ebm t\u00eb komplikuar, e rip\u00ebrpunoi disa her\u00eb, u zgjat me t\u00eb dhe u ngat\u00ebrrua deri sa detyra filloi t\u00eb p\u00ebrfundoj\u00eb n\u00eb m\u00ebnyr\u00eb shum\u00eb t\u00eb nd\u00ebrlikuar. Dhe pasi detyra prodhuese ka p\u00ebrpar\u00ebsi ndaj t\u00eb tjerave n\u00eb minion\u00ebt e nj\u00ebjt\u00eb, ajo filloi t\u00eb konsumonte t\u00eb gjitha burimet e disponueshme t\u00eb procesorit. N\u00eb k\u00ebt\u00eb situat\u00eb, izolimi e shp\u00ebtoi situat\u00ebn, p\u00ebrkat\u00ebsisht kuota p\u00ebr koh\u00ebn e p\u00ebrdorimit t\u00eb procesorit. N\u00ebse detyr\u00ebs i \u00ebsht\u00eb caktuar nj\u00eb kuot\u00eb, ajo nuk do t\u00eb konsumoj\u00eb m\u00eb shum\u00eb. Prandaj, detyrat batch dhe t\u00eb tjera prodhuese q\u00eb punonin n\u00eb t\u00eb nj\u00ebjt\u00ebn makin\u00eb nuk e v\u00ebrejt\u00ebn asgj\u00eb. <\/p>\n<p><\/p>\n<p>Nj\u00eb tjet\u00ebr problem i mundsh\u00ebm \u00ebsht\u00eb r\u00ebnia e konteinerit. Dhe k\u00ebtu na ndihmojn\u00eb politikat e rikthimit, t\u00eb cilat t\u00eb gjith\u00eb i din\u00eb, Docker i sheh ato mjaft mir\u00eb. Praktikisht t\u00eb gjitha detyrat prodhuese kan\u00eb politik\u00ebn e rikthimit gjithmon\u00eb. Ndonj\u00ebher\u00eb p\u00ebrdorim on_failure p\u00ebr detyra batch ose p\u00ebr debugging t\u00eb konteiner\u00ebve prodhuese.<\/p>\n<p><\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebhet n\u00ebse i gjith\u00eb nj\u00eb minion \u00ebsht\u00eb i paaksesuesh\u00ebm?<\/p>\n<p><\/p>\n<p>Sigurisht, t\u00eb nisim konteinerin n\u00eb nj\u00eb makin\u00eb tjet\u00ebr. T\u00eb b\u00ebsh k\u00ebt\u00eb - motivi m\u00eb interesant \u00ebsht\u00eb \u00e7far\u00eb ndodh me adres\u00ebn IP (adresat), t\u00eb caktuara p\u00ebr konteinerin. <\/p>\n<p><\/p>\n<p>Ne mund t\u00eb caktojm\u00eb konteiner\u00ebve t\u00eb nj\u00ebjtat adresa IP si makinat-minion, ku ato konteiner\u00eb nisin. K\u00ebshtu, kur nj\u00eb konteiner fillon n\u00eb nj\u00eb makin\u00eb tjet\u00ebr, adresa e tij IP ndryshon, dhe t\u00eb gjitha klient\u00ebt duhet t\u00eb kuptojn\u00eb se konteineri \u00ebsht\u00eb l\u00ebvizur, tani duhet t\u00eb shkojn\u00eb n\u00eb nj\u00eb adres\u00eb tjet\u00ebr, e cila k\u00ebrkon nj\u00eb sh\u00ebrbim t\u00eb ve\u00e7ant\u00eb t\u00eb Zbulimit t\u00eb Sh\u00ebrbimeve. <\/p>\n<p><\/p>\n<p>Zbulimi i Sh\u00ebrbimeve \u00ebsht\u00eb mjaft i dobish\u00ebm. N\u00eb treg ka shum\u00eb zgjidhje t\u00eb ndryshme p\u00ebr organizimin e regjistrit t\u00eb sh\u00ebrbimeve, me shkall\u00eb t\u00eb ndryshme besueshm\u00ebrie. Shpesh, n\u00eb zgjidhje t\u00eb tilla, realizohet logjika e balancuesit t\u00eb ngarkesave, ruhet konfigurimi shtes\u00eb n\u00eb form\u00ebn e nj\u00eb ruajtjeje KV etj.<br \/>\nMegjithat\u00eb, na p\u00eblqen t\u00eb kalojm\u00eb pa nevoj\u00ebn e integrimit t\u00eb nj\u00eb regjistri t\u00eb ve\u00e7ant\u00eb, sepse do t\u00eb thoshte t\u00eb futnim nj\u00eb sistem kritik, i cili p\u00ebrdoret nga t\u00eb gjitha sh\u00ebrbimet n\u00eb prodhim. K\u00ebshtu, kjo do t\u00eb ishte nj\u00eb pik\u00eb e mundshme d\u00ebshtimi dhe duhet t\u00eb zgjidhni ose t\u00eb zhvilloni nj\u00eb zgjidhje t\u00eb shum\u00eb besueshme, e cila, pa dyshim, \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb, e gjat\u00eb dhe e shtrenjt\u00eb. <\/p>\n<p><\/p>\n<p>Dhe nj\u00eb tjet\u00ebr disavantazh i madh: q\u00eb infrastruktura jon\u00eb e vjet\u00ebr t\u00eb funksiononte me t\u00eb re, do t\u00eb duhej t\u00eb ri-shkruanim absolutisht t\u00eb gjitha detyrat p\u00ebr t\u00eb p\u00ebrdorur nj\u00eb sistem t\u00eb Zbulimit t\u00eb Sh\u00ebrbimeve. Ka shum\u00eb pun\u00eb, dhe disa her\u00eb, pa mund\u00ebsi, kur flasim p\u00ebr pajisje t\u00eb ul\u00ebta q\u00eb punojn\u00eb n\u00eb nivelin e kernelit t\u00eb OS ose drejtp\u00ebrdrejt me harduerin. Implementimi i k\u00ebsaj funksionaliteti me an\u00eb t\u00eb modeleve t\u00eb pranuara t\u00eb zgjidhjeve, si p\u00ebr shembull <noindex><a rel=\"nofollow\" href=\"https:\/\/linkerd.io\">side-car<\/a><\/noindex> do t\u00eb n\u00ebnkuptonte ngarkes\u00eb shtes\u00eb n\u00eb disa raste, dhe ndonj\u00ebher\u00eb do ta komplikonte ekspluatimin dhe do t\u00eb sillte skenar\u00eb t\u00eb tjer\u00eb d\u00ebshtimi. Nuk donim ta b\u00ebnim m\u00eb t\u00eb komplikuar, prandaj vendos\u00ebm t\u00eb b\u00ebjm\u00eb p\u00ebrdorimin e Zbulimit t\u00eb Sh\u00ebrbimeve opsional. <\/p>\n<p><\/p>\n<p>N\u00eb one-cloud IP pason pas konteinerit, dmth. \u00e7do ekzemplar i detyr\u00ebs ka adres\u00ebn e tij IP. Kjo adres\u00eb \u00ebsht\u00eb \"statike\": ajo caktohet p\u00ebr \u00e7do ekzemplar n\u00eb momentin e par\u00eb t\u00eb d\u00ebrgimit t\u00eb sh\u00ebrbimit n\u00eb re. N\u00ebse gjat\u00eb jet\u00ebs s\u00eb sh\u00ebrbimit ka pasur numra t\u00eb ndrysh\u00ebm ekzempla - at\u00ebher\u00eb p\u00ebrfundimisht do t\u00eb ket\u00eb sa m\u00eb shum\u00eb adresa IP sa numri maksimal i ekzemplar\u00ebve.<\/p>\n<p><\/p>\n<p>M\u00eb pas, k\u00ebto adresa nuk ndryshojn\u00eb: ato caktohen nj\u00ebher\u00eb dhe vazhdojn\u00eb t\u00eb ekzistojn\u00eb gjat\u00eb gjith\u00eb jet\u00ebs s\u00eb sh\u00ebrbimit n\u00eb prodhim. Adresat IP pasojn\u00eb konteiner\u00ebt n\u00ebp\u00ebr rrjet. N\u00ebse konteineri zhvendoset n\u00eb nj\u00eb minion tjet\u00ebr, at\u00ebher\u00eb adresa do t\u00eb kaloj\u00eb po ashtu me t\u00eb. <\/p>\n<p><\/p>\n<p>K\u00ebshtu, lidhja mes emrit t\u00eb sh\u00ebrbimit dhe list\u00ebs s\u00eb adresave t\u00eb tij IP ndryshon shum\u00eb rrall\u00eb. Po ashtu, n\u00ebse e shikojm\u00eb p\u00ebrs\u00ebri emrat e ekzemplar\u00ebve t\u00eb sh\u00ebrbimit, q\u00eb p\u00ebrmend\u00ebm n\u00eb fillim t\u00eb artikullit (<strong>1.ok-web.group1.web.front.prod, 2.ok-web.group1.web.front.prod, \u2026<\/strong>), ne do t\u00eb v\u00ebm\u00eb re se ato i ngjajn\u00eb FQDN, q\u00eb p\u00ebrdoren n\u00eb DNS. Ashtu \u00ebsht\u00eb, p\u00ebr t\u00eb shfaqur emrat e instancave t\u00eb sh\u00ebrbimeve n\u00eb adresat e tyre IP, p\u00ebrdorim protokollin DNS. P\u00ebr m\u00eb tep\u00ebr, ky DNS kthen t\u00eb gjitha adresat IP t\u00eb rezervuara t\u00eb t\u00eb gjitha kontejner\u00ebve \u2014 si ato q\u00eb punojn\u00eb, ashtu edhe ato t\u00eb ndaluara (le t\u00eb themi, n\u00ebse p\u00ebrdoren tre replika, dhe ne kemi pes\u00eb adresat e rezervuara \u2014 t\u00eb gjitha pes\u00eb do t\u00eb kthehen). Klient\u00ebt, pasi marrin k\u00ebt\u00eb informacion, do t\u00eb p\u00ebrpiqen t\u00eb krijojn\u00eb lidhje me t\u00eb gjitha pes\u00eb replikat \u2014 dhe k\u00ebshtu do t\u00eb p\u00ebrcaktojn\u00eb ato q\u00eb punojn\u00eb. Ky variant i p\u00ebrcaktimit t\u00eb disponueshm\u00ebris\u00eb \u00ebsht\u00eb ndjesh\u00ebm m\u00eb i besuesh\u00ebm, pasi nuk p\u00ebrfshin as DNS, as Zbulimin e Sh\u00ebrbimeve, q\u00eb do t\u00eb thot\u00eb se nuk ka as probleme t\u00eb v\u00ebshtira p\u00ebr t\u00eb siguruar aktualitetin e informacionit dhe q\u00ebndrueshm\u00ebrin\u00eb e k\u00ebtyre sistemeve. M\u00eb shum\u00eb se kaq, n\u00eb sh\u00ebrbimet kritike, t\u00eb cilat varen nga funksionimi i t\u00ebr\u00eb portalit, mund edhe t\u00eb mos p\u00ebrdorim DNS, por thjesht t\u00eb regjistrojm\u00eb adresat IP n\u00eb konfigurim.<\/p>\n<p><\/p>\n<p>Implementimi i k\u00ebsaj transferimi t\u00eb IP-s\u00eb pas kontejner\u00ebve mund t\u00eb jet\u00eb i nd\u00ebrlikuar \u2014 dhe ne do t\u00eb ndalemi n\u00eb at\u00eb se si funksionon, n\u00eb shembullin e m\u00ebposht\u00ebm:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/faf99c2609a57daa1bdc193cb0f4cb31.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Supozoni se master one-cloud i jep urdh\u00ebr minionit M1 t\u00eb filloj\u00eb <strong>1.ok-web.group1.web.front.prod<\/strong> me adres\u00ebn 1.1.1.1. N\u00eb minion punon <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bird_Internet_routing_daemon\">BIRD<\/a><\/noindex>, i cili shpall k\u00ebt\u00eb adres\u00eb n\u00eb servera t\u00eb ve\u00e7ant\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Route_reflector\">route reflector<\/a><\/noindex>. K\u00ebta t\u00eb fundit kan\u00eb nj\u00eb seanc\u00eb BGP me pajisjen rrjet, n\u00eb t\u00eb cil\u00ebn transmetohet ruta e adres\u00ebs 1.1.1.1 p\u00ebr M1. M1 nd\u00ebrton paketat n\u00eb brend\u00ebsi t\u00eb kontejnerit me mjete Linux. Ka tre server\u00eb route reflector, pasi kjo \u00ebsht\u00eb nj\u00eb pjes\u00eb shum\u00eb kritike e infrastruktures one-cloud \u2014 pa to, rrjeti n\u00eb one-cloud nuk do t\u00eb funksionoj\u00eb. Ne i vendosim ato n\u00eb raft\u00eb t\u00eb ndrysh\u00ebm, sa m\u00eb larg q\u00eb t\u00eb jet\u00eb e mundur n\u00eb sallat e ndryshme t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave, p\u00ebr t\u00eb reduktuar probabilitetin e d\u00ebshtimit t\u00eb t\u00eb treve n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb.<\/p>\n<p><\/p>\n<p>Tani le t'i supozojm\u00eb se lidhja midis masterit one-cloud dhe minionit M1 \u00ebsht\u00eb nd\u00ebrprer\u00eb. Master one-cloud tani do t\u00eb veproj\u00eb duke supozuar se M1 ka d\u00ebshtuar plot\u00ebsisht. K\u00ebshtu, do t\u00eb jap\u00eb urdh\u00ebr minionit M2 t\u00eb filloj\u00eb <strong>web.group1.web.front.prod<\/strong> me t\u00eb nj\u00ebjt\u00ebn adres\u00eb 1.1.1.1. Tani kemi dy rrug\u00eb konfliktuese n\u00eb rrjet p\u00ebr 1.1.1.1: n\u00eb M1 dhe n\u00eb M2. P\u00ebr t\u00eb zgjidhur k\u00ebto konflikte, ne p\u00ebrdorim Multi Exit Discriminator, q\u00eb p\u00ebrcaktohet n\u00eb shpalljen BGP. Ky \u00ebsht\u00eb nj\u00eb num\u00ebr q\u00eb tregon pesh\u00ebn e rrug\u00ebs s\u00eb shpallur. Nga konfliktuese, do t\u00eb p\u00ebrzgjidhet rruga me vler\u00ebn m\u00eb t\u00eb vog\u00ebl MED. Master one-cloud mb\u00ebshtet MED si nj\u00eb pjes\u00eb integrale t\u00eb adresave IP t\u00eb kontejner\u00ebve. P\u00ebr her\u00eb t\u00eb par\u00eb, adresa sh\u00ebnohet me nj\u00eb MED t\u00eb mjaftuesh\u00ebm t\u00eb madh = 1 000 000. N\u00eb rastin e nj\u00eb transferimi emergjent t\u00eb kontejnerit, masteri zvog\u00eblon MED-n\u00eb, dhe M2 do t\u00eb marr\u00eb urdh\u00ebr t\u00eb shpall\u00eb adres\u00ebn 1.1.1.1 me MED = 999 999. Nd\u00ebrsa instanca q\u00eb punon n\u00eb M1 do t\u00eb mbetet pa lidhje, dhe fatet e saj na interesojn\u00eb pak derisa t\u00eb rikthehet lidhja me masterin, kur ajo do t\u00eb ndalet si nj\u00eb kopje e vjet\u00ebr.<\/p>\n<p><\/p>\n<h2 id=\"avarii\">D\u00ebshtimet<\/h2>\n<p><\/p>\n<p>T\u00eb gjitha sistemet e menaxhimit t\u00eb qendrave t\u00eb t\u00eb dh\u00ebnave gjithmon\u00eb p\u00ebrballen me d\u00ebshtime t\u00eb vogla. Rr\u00ebzimi i nj\u00eb kontejneri \u00ebsht\u00eb norma n\u00eb pothuajse \u00e7do vend.<\/p>\n<p><\/p>\n<p>Le t\u00eb shohim se si p\u00ebrballojm\u00eb nj\u00eb d\u00ebshtim, p\u00ebr shembull d\u00ebshtimin e energjis\u00eb n\u00eb nj\u00eb ose m\u00eb shum\u00eb sallat e qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave.<\/p>\n<p><\/p>\n<p>\u00c7far\u00eb do t\u00eb thot\u00eb d\u00ebshtim p\u00ebr sistemin e menaxhimit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave? S\u00eb pari, kjo do t\u00eb thot\u00eb nj\u00eb d\u00ebshtim masiv i shum\u00eb makinave, dhe sistemi i menaxhimit duhet t\u00eb migroj\u00eb menj\u00ebher\u00eb shum\u00eb kontejner\u00eb. Por n\u00ebse d\u00ebshtimi \u00ebsht\u00eb shum\u00eb masiv, mund t\u00eb ndodhi q\u00eb t\u00eb gjitha detyrat t\u00eb mos mund t\u00eb ri-shp\u00ebrndahen n\u00eb minion\u00eb t\u00eb tjer\u00eb, sepse kapaciteti burimor i qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave bie n\u00ebn 100% ngarkes\u00eb. <\/p>\n<p><\/p>\n<p>Shpesh, d\u00ebshtimet shoq\u00ebrohen me d\u00ebshtimin e edhe shtres\u00ebs menaxhuese. Kjo mund t\u00eb ndodh\u00eb p\u00ebr shkak t\u00eb d\u00ebshtimit t\u00eb pajisjeve t\u00eb saj, por m\u00eb shpesh p\u00ebr shkak se d\u00ebshtimet nuk testohen, dhe shtresa menaxhuese vet\u00eb bie nga ngarkesa e rritur. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebjm\u00eb me t\u00eb gjith\u00eb k\u00ebt\u00eb?<\/p>\n<p><\/p>\n<p>Migrimet masive do t\u00eb thot\u00eb se n\u00eb infrastruktur\u00eb krijohen nj\u00eb num\u00ebr i madh veprimesh, migrimesh dhe vendosjesh. \u00c7do migrim mund t\u00eb marr\u00eb nj\u00eb koh\u00eb t\u00eb caktuar, e nevojshme p\u00ebr d\u00ebrgimin dhe shp\u00ebrb\u00ebrjen e imazheve t\u00eb kontejner\u00ebve n\u00eb minion\u00eb, fillimin dhe inicializimin e konteiner\u00ebve etj. Prandaj, \u00ebsht\u00eb e preferueshme q\u00eb detyrat m\u00eb t\u00eb r\u00ebnd\u00ebsishme t\u00eb fillojn\u00eb para atyre m\u00eb pak t\u00eb r\u00ebnd\u00ebsishme.<\/p>\n<p><\/p>\n<p>Le t\u00eb shikojm\u00eb p\u00ebrs\u00ebri hierarkin\u00eb e njohur t\u00eb sh\u00ebrbimeve dhe t\u00eb tentojm\u00eb t\u00eb vendosim se cilat detyra duam t\u00eb fillojm\u00eb s\u00eb pari.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/2e827271adb8d3ff3d385e53553aaacf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Natyrisht, k\u00ebto jan\u00eb proceset q\u00eb marrin pjes\u00eb drejtp\u00ebrdrejt n\u00eb p\u00ebrpunimin e k\u00ebrkesave t\u00eb p\u00ebrdoruesve, dmth. prod. Ne e sh\u00ebnojm\u00eb k\u00ebt\u00eb me <strong>prioritet t\u00eb vendosjes<\/strong> \u2014 nj\u00eb num\u00ebr q\u00eb mund t'i caktohet nj\u00eb rradhe. N\u00ebse nj\u00eb rradhe ka prioritet m\u00eb t\u00eb lart\u00eb, sh\u00ebrbimet e saj vendosen s\u00eb pari.<\/p>\n<p><\/p>\n<p>N\u00eb prod, ne caktojm\u00eb prioritetet m\u00eb t\u00eb larta, 0; p\u00ebr batch\u2014pak m\u00eb t\u00eb ulta, 100; p\u00ebr idle\u2014ende m\u00eb t\u00eb ulta, 200. Prioritetet aplikohen n\u00eb m\u00ebnyr\u00eb hierarkike. T\u00eb gjitha detyrat m\u00eb posht\u00eb n\u00eb hierarki do t\u00eb ken\u00eb prioritetin p\u00ebrkat\u00ebs. N\u00ebse duam q\u00eb brenda prod, caching t\u00eb filloj\u00eb para frontend-\u00ebve, at\u00ebher\u00eb caktojm\u00eb prioritetet p\u00ebr cache = 0 dhe p\u00ebr front q\u00eb shkon pas = 1. N\u00ebse, p\u00ebr shembull, duam q\u00eb brenda frontend-\u00ebve t\u00eb filloj\u00eb portalin kryesor, dhe pastaj fronti muzikor, at\u00ebher\u00eb p\u00ebr t\u00eb fundit mund t\u00eb caktojm\u00eb nj\u00eb prioritet m\u00eb t\u00eb ul\u00ebt\u201410.<\/p>\n<p><\/p>\n<p>Problemi tjet\u00ebr \u00ebsht\u00eb mungesa e burimeve. Pra, na ka d\u00ebshtuar nj\u00eb num\u00ebr i madh pajisjesh, t\u00eb t\u00ebra sallat e qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave, dhe ne kemi hapur kaq shum\u00eb sh\u00ebrbime sa tani nuk ka mjaft burime p\u00ebr t\u00eb gjith\u00eb. Duhet t\u00eb vendosim se cilat detyra do t\u00eb sakrifikojm\u00eb, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb funksionojn\u00eb sh\u00ebrbimet kryesore q\u00eb jan\u00eb kritike. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/1b1ad3da16df6677dd0ba4b038cdd7d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ndryshe nga prioriteti i vendosjes, ne nuk mund t\u00eb sakrifikojm\u00eb t\u00eb gjitha detyrat batch si nj\u00eb t\u00ebr\u00ebsi, disa prej tyre jan\u00eb t\u00eb r\u00ebnd\u00ebsishme p\u00ebr funksionimin e portalit. Prandaj, ne e kemi ndar\u00eb ve\u00e7mas <strong>prioritetin e z\u00ebvend\u00ebsimit<\/strong> t\u00eb detyrave. Kur vendoset nj\u00eb detyr\u00eb me prioritet m\u00eb t\u00eb lart\u00eb, ajo mund t\u00eb z\u00ebvend\u00ebsoj\u00eb, pra, t\u00eb ndaloj\u00eb nj\u00eb detyr\u00eb me prioritet m\u00eb t\u00eb ul\u00ebt, n\u00ebse nuk ka minj t\u00eb lir\u00eb. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, detyra me prioritet t\u00eb ul\u00ebt, ndoshta do t\u00eb mbetet e pavendosur, dmth, p\u00ebr t\u00eb nuk do t\u00eb ket\u00eb m\u00eb nj\u00eb minj t\u00eb p\u00ebrshtatsh\u00ebm me nj\u00eb sasi t\u00eb mjaftueshme burimesh t\u00eb lira.<\/p>\n<p><\/p>\n<p>N\u00eb hierarkin\u00eb ton\u00eb, \u00ebsht\u00eb shum\u00eb e thjesht\u00eb t\u00eb caktohet nj\u00eb prioritet i till\u00eb z\u00ebvend\u00ebsimi, n\u00eb m\u00ebnyr\u00eb q\u00eb detyrat prod- dhe batch t\u00eb z\u00ebvend\u00ebsojn\u00eb ose ndalojn\u00eb detyrat idle, por jo nj\u00ebra-tjetr\u00ebn, duke caktuar p\u00ebr idle nj\u00eb prioritet t\u00eb barabart\u00eb me 200. Ashtu si\u00e7 \u00ebsht\u00eb rasti me prioritetin e vendosjes, mund t\u00eb p\u00ebrdorim hierarkin\u00eb ton\u00eb p\u00ebr t\u00eb p\u00ebrshkruar rregulla m\u00eb komplekse. P\u00ebr shembull, do t\u00eb njoftojm\u00eb se do t\u00eb sakrifikojm\u00eb funksionin e muzik\u00ebs, n\u00ebse na mungojn\u00eb burimet p\u00ebr portalin kryesor, duke vendosur p\u00ebr nodet p\u00ebrkat\u00ebse nj\u00eb prioritet m\u00eb t\u00eb ul\u00ebt: 10.<\/p>\n<p><\/p>\n<h2 id=\"avarii-dc-celikom\">Aksidentet n\u00eb qendrat e t\u00eb dh\u00ebnave n\u00eb t\u00ebr\u00ebsi<\/h2>\n<p><\/p>\n<p>Pse mund t\u00eb d\u00ebshtoj\u00eb e gjith\u00eb qendra e t\u00eb dh\u00ebnave? Fatkeq\u00ebsi natyrore. Kishte nj\u00eb post t\u00eb mir\u00eb, si <noindex><a rel=\"nofollow\" href=\"https:\/\/habrahabr.ru\/company\/dataline\/blog\/333578\/\">uria e ka ndikuar pun\u00ebn e qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave<\/a><\/noindex>. Fatkeq\u00ebsit\u00eb natyrore mund t\u00eb konsiderohen edhe ata t\u00eb paq\u00ebndruesh\u00ebm q\u00eb nj\u00eb her\u00eb kan\u00eb djegur fibrat optike ndonj\u00ebher\u00eb, dhe qendra e t\u00eb dh\u00ebnave ka humbur plot\u00ebsisht lidhjen me vendet e tjera. Shkaku i d\u00ebshtimit \u00ebsht\u00eb gjithashtu faktor njer\u00ebzor: operatori mund t\u00eb jap\u00eb nj\u00eb komand\u00eb t\u00eb till\u00eb, q\u00eb e gjith\u00eb qendra e t\u00eb dh\u00ebnave do t\u00eb bjer\u00eb. Kjo mund t\u00eb ndodh\u00eb p\u00ebr shkak t\u00eb nj\u00eb gabimi t\u00eb madh. N\u00eb p\u00ebrgjith\u00ebsi, qendrat e t\u00eb dh\u00ebnave bien\u2014kjo nuk \u00ebsht\u00eb di\u00e7ka e pazakont\u00eb. Kjo ndodhi nj\u00eb her\u00eb n\u00eb disa muaj. <\/p>\n<p><\/p>\n<p>Dhe ja \u00e7far\u00eb b\u00ebjm\u00eb, q\u00eb askush #okzhivi t\u00eb mos postoj\u00eb n\u00eb Twitter.<\/p>\n<p><\/p>\n<p>Strategjia e par\u00eb\u2014izolimi. \u00c7do instanc\u00eb one-cloud \u00ebsht\u00eb e izoluar dhe mund t\u00eb menaxhoj\u00eb makinat vet\u00ebm nga nj\u00eb qend\u00ebr t\u00eb dh\u00ebnash. Pra, humbja e nj\u00eb cloud p\u00ebr shkak t\u00eb gabimeve ose komandave t\u00eb gabuara t\u00eb operatorit \u00ebsht\u00eb humbja vet\u00ebm e nj\u00eb qendre t\u00eb dh\u00ebnash. Ne jemi gati p\u00ebr k\u00ebt\u00eb: ekziston nj\u00eb politik\u00eb rezervimi, ku replikat e aplikacionit dhe t\u00eb dh\u00ebnave vendosen n\u00eb t\u00eb gjitha qendrat e t\u00eb dh\u00ebnave. Ne p\u00ebrdorim baza t\u00eb dh\u00ebnash q\u00eb q\u00ebndrojn\u00eb t\u00eb q\u00ebndrueshme dhe hera-her\u00ebs testojm\u00eb d\u00ebshtimet.<br \/>\nDuke pasur sot kat\u00ebr qendra t\u00eb t\u00eb dh\u00ebnave, ne kemi edhe kat\u00ebr instance t\u00eb ve\u00e7anta, plot\u00ebsisht t\u00eb izoluara one-cloud.<\/p>\n<p><\/p>\n<p>Ky qasja jo vet\u00ebm q\u00eb mbron nga d\u00ebshtimi fizik, por gjithashtu mund t\u00eb mbroj\u00eb nga gabimet e operator\u00ebve.<\/p>\n<p><\/p>\n<p>\u00c7far\u00eb tjet\u00ebr mund t\u00eb b\u00ebjm\u00eb me faktor\u00ebt njer\u00ebzor\u00eb? Kur operatori i jep cloud nj\u00eb komand\u00eb t\u00eb \u00e7uditshme ose potencialisht t\u00eb rrezikshme, ai mund ta ket\u00eb t\u00eb papritur t\u00eb k\u00ebrkohet t\u00eb zgjidh\u00eb nj\u00eb detyr\u00eb t\u00eb vog\u00ebl, p\u00ebr t\u00eb provuar se sa mir\u00eb e ka menduar. P\u00ebr shembull, n\u00ebse \u00ebsht\u00eb nj\u00eb ndales\u00eb masive e shum\u00eb replike, ose thjesht nj\u00eb komand\u00eb e \u00e7uditshme\u2014reduktimi i numrit t\u00eb replikave ose ndryshimi i emrit t\u00eb imazhit, jo vet\u00ebm numri i versionit n\u00eb manifestin e ri.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/vh\/vw\/0d\/vhvw0dzobo9sd4x7zih_cnfnlu8.png\"><img decoding=\"async\" alt=\"Nj\u00eb cloud \u2014 OS e nivelit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki\" src=\"\/wp-content\/uploads\/2020\/06\/f7ee44a77e30612a3cd99a6f7aee3820.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<h2 id=\"itogi\">P\u00ebrfundimet<\/h2>\n<p><\/p>\n<p>Karakteristikat dalluese t\u00eb one-cloud: <\/p>\n<p><\/p>\n<ul>\n<li><strong>Nj\u00eb skem\u00eb hierarkike dhe t\u00eb qart\u00eb em\u00ebrtimi t\u00eb sh\u00ebrbimeve dhe kontejner\u00ebve<\/strong>, q\u00eb lejon shum\u00eb shpejt t\u00eb kuptohet se \u00e7far\u00eb detyre \u00ebsht\u00eb, p\u00ebr \u00e7far\u00eb i referohet dhe si funksionon dhe kush \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr t\u00eb. <\/li>\n<li>Ne aplikojm\u00eb teknik\u00ebn ton\u00eb <strong>t\u00eb kombinimit t\u00eb detyrave prod- dhe batch-<\/strong>n\u00eb minj, p\u00ebr t\u00eb rritur efikasitetin e p\u00ebrdorimit t\u00eb p\u00ebrbashk\u00ebt t\u00eb makinave. N\u00eb vend t\u00eb cpuset p\u00ebrdorim quota CPU, ndarjen e burimeve, politikat e planifikuesit t\u00eb CPU dhe QoS t\u00eb Linux.<\/li>\n<li>Nuk e kemi mundur t\u00eb izolojm\u00eb plot\u00ebsisht kontejner\u00ebt q\u00eb punojn\u00eb mbi nj\u00eb makin\u00eb, por ndikimi i tyre mbetet brenda 20%.<\/li>\n<li>Organizimi i sh\u00ebrbimeve n\u00eb nj\u00eb hierarki ndihmon n\u00eb likuidimin automatik t\u00eb aksidenteve p\u00ebrmes <strong>prioriteteve t\u00eb vendosjes dhe z\u00ebvend\u00ebsimit.<\/strong>.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"chavo\">FAQ<\/h2>\n<p><\/p>\n<p>Pse nuk mor\u00ebm nj\u00eb zgjidhje t\u00eb gatshme.<\/p>\n<p><\/p>\n<ul>\n<li>Klasat e ndryshme t\u00eb izolimit t\u00eb detyrave k\u00ebrkojn\u00eb logjik\u00eb t\u00eb ndryshme gjat\u00eb vendosjes n\u00eb minj. N\u00ebse detyrat prod mund t\u00eb vendosen me rezervimin e thjesht\u00eb t\u00eb burimeve, at\u00ebher\u00eb batch dhe idle duhet t\u00eb vendosen duke monitoruar shfryt\u00ebzimin real t\u00eb burimeve n\u00eb minj. <\/li>\n<li>Nevoja p\u00ebr t\u00eb marr\u00eb parasysh burimet e konsumuar nga detyrat t\u00eb tilla si: \n<ul>\n<li>kapaciteti i rrjetit;<\/li>\n<li>llojet dhe \u00abspindlet\u00bb e disqeve.<\/li>\n<\/ul>\n<\/li>\n<li>Nevoja p\u00ebr t\u00eb caktuar prioritetet e sh\u00ebrbimeve gjat\u00eb eliminimit t\u00eb avarive, t\u00eb drejtat dhe kuotat e ekipeve p\u00ebr burimet, q\u00eb zgjidhet p\u00ebrmes radh\u00ebve hierarkike n\u00eb one-cloud.<\/li>\n<li>Nevoja p\u00ebr t\u00eb pasur emra njer\u00ebzor\u00eb p\u00ebr kontejner\u00ebt p\u00ebr t\u00eb reduktuar koh\u00ebn e reagimeve ndaj avarive dhe incidenteve.<\/li>\n<li>Pamund\u00ebsia e implementimit t\u00eb menj\u00ebhersh\u00ebm t\u00eb gjith\u00ebp\u00ebrfshir\u00ebs Service Discovery; nevoja p\u00ebr t\u00eb bashk\u00ebjetuar p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb me detyra t\u00eb vendosura n\u00eb hoste fizike - e cila zgjidhet me adresat IP \u00abstatike\u00bb q\u00eb ndjekin kontejner\u00ebt, k\u00ebshtu q\u00eb ka nj\u00eb nevoj\u00eb p\u00ebr integrim unik me nj\u00eb infrastruktur\u00eb t\u00eb madhe rrjetore.<\/li>\n<\/ul>\n<p><\/p>\n<p>T\u00eb gjitha k\u00ebto funksione do t\u00eb k\u00ebrkonin p\u00ebrmir\u00ebsime t\u00eb konsiderueshme t\u00eb zgjidhjeve ekzistuese p\u00ebr vet\u00eb, dhe, duke vler\u00ebsuar sasin\u00eb e pun\u00ebs, ne kuptuam se mund t\u00eb zhvillonim zgjidhjen ton\u00eb me kushte af\u00ebrsisht t\u00eb nj\u00ebjta punuese. Por zgjidhja jon\u00eb do t\u00eb ishte shum\u00eb m\u00eb e leht\u00eb p\u00ebr t'u operuar dhe zhvilluar - nuk ka abstraksione t\u00eb panevojshme q\u00eb mb\u00ebshtesin funksionalitete q\u00eb nuk na nevojiten. <\/p>\n<p><\/p>\n<p>Atyre q\u00eb po lexojn\u00eb rreshtat e fundit - faleminderit p\u00ebr durimin dhe v\u00ebmendjen!<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/odnoklassniki\/blog\/346868\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0410\u043b\u043e\u0445\u0430, \u043f\u0438\u043f\u043b! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u044c\u0435\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0430\u0445 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0410 \u043a\u0440\u043e\u043c\u0435 \u043c\u0435\u043d\u044f, \u0432 \u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0443\u0447\u0430 \u0436\u0435\u043b\u0435\u0437\u0430. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0426\u041e\u0414\u0430, \u0432 \u043d\u0438\u0445 \u043e\u043a\u043e\u043b\u043e 500 \u0441\u0442\u043e\u0435\u043a \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0441 8 \u0442\u044b\u0441\u044f\u0447\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u043a\u0443, \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":84115,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-84114","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0410\u043b\u043e\u0445\u0430, \u043f\u0438\u043f\u043b!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/one-cloud-os-urovnya-data-czentra-v-odnoklassnikah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47One-cloud \u2014 \u041e\u0421 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430 \u0432 \u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0410\u043b\u043e\u0445\u0430, \u043f\u0438\u043f\u043b!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/one-cloud-os-urovnya-data-czentra-v-odnoklassnikah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-05T05:42:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-05T05:42:55+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47One-cloud \u2014 OS-niveli t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki | ProHoster","description":"P\u00ebrsh\u00ebndetje, njer\u00ebz!","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/one-cloud-os-urovnya-data-czentra-v-odnoklassnikah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47One-cloud \u2014 \u041e\u0421 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430 \u0432 \u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0430\u0445 | ProHoster","og:description":"\u0410\u043b\u043e\u0445\u0430, \u043f\u0438\u043f\u043b!","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/one-cloud-os-urovnya-data-czentra-v-odnoklassnikah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-05T05:42:55+00:00","article:modified_time":"2020-06-05T05:42:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"84114","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:04:42","updated":"2022-10-02 14:53:14","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/84114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=84114"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/84114\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/84115"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=84114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=84114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=84114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}