{"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":"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\u00eb dh\u00ebnave n\u00eb Odnoklassniki","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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, everyone! My name is Oleg Anastasyev, and I work at Odnoklassniki in the Platform team. Besides me, there is a lot of hardware at Odnoklassniki. We have four data centers, which house about 500 racks with over 8 thousand servers. At some point, we realized that implementing a new management system would allow us to utilize the equipment more efficiently, simplify access management, automate the (re)distribution of computing resources, speed up the launch of new services, and accelerate responses to large-scale failures. <\/p>\n<p><\/p>\n<p>So, what did we achieve from this? <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>In addition to myself and the hardware, there are also people who work with this hardware: engineers who are directly in the data centers; network specialists who configure the networking equipment; admins, or SREs, who ensure the reliability of the infrastructure; and development teams, each responsible for part of the portal's functionalities. The software they create operates somewhat like this:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>User requests come to both the frontend of the main portal <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ok.ru\/\">www.ok.ru<\/a><\/noindex>, as well as to others, for example, the music API frontends. They call an application server to handle the business logic, which, during the processing of the request, invokes the necessary specialized microservices \u2014 one-graph (graph of social connections), user-cache (cache of user profiles), and so on.<\/p>\n<p><\/p>\n<p>Each of these services is deployed on multiple machines, and each has responsible developers who oversee the functioning of the modules, their operation, and technological development. All these services run on physical servers, and until recently, we would launch exactly one task per server, meaning it was specialized for a specific task.<\/p>\n<p><\/p>\n<p>Why is that? This approach had several advantages:<\/p>\n<p><\/p>\n<ul>\n<li>It simplifies <strong>mass management<\/strong>. Suppose a task requires certain libraries and configurations. Then the server is assigned to a specific group, and a cfengine policy for this group is described (or it is already described), and this configuration is centrally and automatically deployed across all servers in that group.<\/li>\n<li>It simplifies <strong>diagnostics<\/strong>. Le t\u00eb supozojm\u00eb se po shikoni nj\u00eb ngarkes\u00eb t\u00eb rritur t\u00eb procesorit qendror dhe e kuptoni se kjo ngarkes\u00eb mund t\u00eb jet\u00eb gjeneruar vet\u00ebm nga ajo detyr\u00eb q\u00eb po punon n\u00eb k\u00ebt\u00eb procesor hardware. K\u00ebrkimi i fajtor\u00ebve p\u00ebrfundon shum\u00eb shpejt.<\/li>\n<li>It simplifies <strong>monitorimi<\/strong>. N\u00ebse ka di\u00e7ka q\u00eb nuk shkon me serverin, monitori njofton p\u00ebr k\u00ebt\u00eb, dhe ju e dini sakt\u00ebsisht se kush \u00ebsht\u00eb fajtor.<\/li>\n<\/ul>\n<p><\/p>\n<p>Sh\u00ebrbimi i p\u00ebrb\u00ebr\u00eb nga disa replica, i cakton disa servera \u2014 nj\u00eb p\u00ebr secil\u00ebn. At\u00ebher\u00eb burimi llogarit\u00ebs p\u00ebr sh\u00ebrbimin ndahen shum\u00eb thjesht\u00eb: sa m\u00eb shum\u00eb servera ka sh\u00ebrbimi, aq m\u00eb shum\u00eb burime ai mund t\u00eb konsumoj\u00eb maksimalisht. \"Thjesht\u00eb\" k\u00ebtu nuk \u00ebsht\u00eb n\u00eb kuptimin se \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 lejon t\u00eb krijojm\u00eb <strong>konfiguracione t\u00eb specializuara t\u00eb hardware<\/strong> p\u00ebr detyrat q\u00eb ekzekutohen n\u00eb k\u00ebt\u00eb server. N\u00ebse detyra mban volumes 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 thjesht llogarit\u00ebse, mund t\u00eb blejm\u00eb nj\u00eb server 1U m\u00eb t\u00eb lir\u00eb. Kjo \u00ebsht\u00eb efikase n\u00eb raport me burimet llogarit\u00ebse. K\u00ebshtu, ky qasje na lejon t\u00eb p\u00ebrdorim kat\u00ebr her\u00eb m\u00eb pak makina p\u00ebr ngarkes\u00eb q\u00eb \u00ebsht\u00eb e ngjashme me nj\u00eb rrjet social q\u00eb na \u00ebsht\u00eb miq\u00ebsor. <\/p>\n<p><\/p>\n<p>Kjo efikasitet n\u00eb p\u00ebrdorimin e burimeve llogarit\u00ebse duhet t\u00eb siguroj\u00eb gjithashtu efikasitet ekonomik, n\u00ebse e marrim parasysh premis\u00ebn se m\u00eb e shtrenjta jan\u00eb serverat. P\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, m\u00eb e shtrenjt\u00eb ka qen\u00eb pik\u00ebrisht hardware-i, dhe ne kemi investuar shum\u00eb n\u00eb uljen e kostos s\u00eb hardware-it, duke krijuar algoritmo p\u00ebr sigurimin e q\u00ebndrueshm\u00ebris\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 nuk \u00ebsht\u00eb m\u00eb p\u00ebrcaktuese. N\u00ebse nuk e marrim parasysh eksotikun m\u00eb t\u00eb fundit, konfigurimi specifik i server\u00ebve n\u00eb raft nuk ka r\u00ebnd\u00ebsi. Tani na ka lindur nj\u00eb problem tjet\u00ebr - \u00e7mimi i hap\u00ebsir\u00ebs s\u00eb mbajtur nga serveri n\u00eb qendr\u00ebn e t\u00eb dh\u00ebnave, pra, hap\u00ebsira n\u00eb raft.<\/p>\n<p><\/p>\n<p>Duke kuptuar se kjo \u00ebsht\u00eb k\u00ebshtu, ne vendos\u00ebm t\u00eb llogarisim se sa efikasisht po p\u00ebrdorim raftet.<br \/>\nKemi marr\u00eb \u00e7mimin e serverit m\u00eb t\u00eb fuqish\u00ebm nga nj\u00eb k\u00ebndv\u00ebshtrim ekonomik, llogarit\u00ebm se sa nga k\u00ebta server\u00eb mund t\u00eb vendosnim n\u00eb raftet e server\u00ebve, sa detyra do t\u00eb nisnim n\u00eb baz\u00eb t\u00eb modelit t\u00eb vjet\u00ebr \"nj\u00eb server = nj\u00eb detyr\u00eb\" dhe sa detyra do t\u00eb ishin n\u00eb gjendje t\u00eb p\u00ebrdornin pajisjet. Llogarit\u00ebm dhe u emocionuam. Doli se efikasiteti i p\u00ebrdorimit t\u00eb raftit 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. Mund t\u00eb duket si nj\u00eb zgjidhje e qart\u00eb: duhet t\u00eb fillojm\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 komplikohet ndjesh\u00ebm \u2014 tani \u00ebsht\u00eb e pamundur t\u00eb caktohet nj\u00eb grup i vet\u00ebm serverit. Sepse tani n\u00eb nj\u00eb server mund t\u00eb jen\u00eb t\u00eb nisura disa detyra nga skuadra t\u00eb ndryshme. P\u00ebr m\u00eb tep\u00ebr, konfigurimi mund t\u00eb jet\u00eb n\u00eb konflikt p\u00ebr aplikacione t\u00eb ndryshme. Diagnostikimi gjithashtu komplikohet: n\u00ebse shihni nj\u00eb rritje t\u00eb konsumit t\u00eb procesor\u00ebve ose disqeve n\u00eb server, nuk e dini se cila nga detyrat po shkakton probleme.<\/p>\n<p><\/p>\n<p>Por e r\u00ebnd\u00ebsishmja \u00ebsht\u00eb se mes detyrave, t\u00eb nisura n\u00eb nj\u00eb makin\u00eb, nuk ka izolim. P\u00ebr shembull, grafiku i mesatarit t\u00eb koh\u00ebs s\u00eb p\u00ebrgjigjes p\u00ebr nj\u00eb detyr\u00eb n\u00eb server para dhe pas nisjes s\u00eb nj\u00eb aplikacioni tjet\u00ebr, t\u00eb pa lidhur me t\u00eb parin \u2014 koha e marrjes s\u00eb p\u00ebrgjigjes p\u00ebr detyr\u00ebn kryesore \u00ebsht\u00eb rritur ndjesh\u00ebm.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>Qart\u00eb, duhet t\u00eb nisnim detyrat ose n\u00eb kontejner\u00eb, ose n\u00eb makina virtuale. Duke qen\u00eb se pothuajse t\u00eb gjitha detyrat tona nisin n\u00ebn menaxhimin e nj\u00eb sistemi operativ (Linux) ose jan\u00eb p\u00ebrshtatur p\u00ebr t\u00eb, mbajtja e shum\u00eb sistemeve operative t\u00eb ndryshme nuk \u00ebsht\u00eb e nevojshme. Prandaj, virtualizimi nuk \u00ebsht\u00eb i nevojsh\u00ebm, p\u00ebr shkak t\u00eb shpenzimeve shtes\u00eb ai do t\u00eb jet\u00eb m\u00eb pak efikas se kontejnerizimi.<\/p>\n<p><\/p>\n<p>Si nj\u00eb realizim i konteiner\u00ebve p\u00ebr t\u00eb ekzekutuar detyra drejtp\u00ebrdrejt n\u00eb server\u00ebt Docker \u2014 \u00ebsht\u00eb nj\u00eb kandidat i mir\u00eb: imazhet e sistemeve t\u00eb skedar\u00ebve zgjidhin mir\u00eb problemet me konfigurimet n\u00eb konflikt. Ajo q\u00eb imazhet mund t\u00eb p\u00ebrb\u00ebhen nga disa nivele na lejon t\u00eb zvog\u00eblojm\u00eb ndjesh\u00ebm volumet e t\u00eb dh\u00ebnave q\u00eb nevojiten p\u00ebr vendosjen e tyre n\u00eb infrastruktur\u00eb, duke ndar\u00eb pjes\u00ebt e p\u00ebrbashk\u00ebta n\u00eb nivele themelore t\u00eb ve\u00e7anta. At\u00ebher\u00eb nivelet themelore (dhe m\u00eb t\u00eb m\u00ebdhat\u00eb) do t\u00eb cache-ohen mjaft shpejt n\u00eb t\u00eb gjith\u00eb infrastruktur\u00ebn, dhe p\u00ebr t\u00eb dor\u00ebzuar nj\u00eb shum\u00ebllojshm\u00ebri aplikacionesh dhe versionesh, do t\u00eb jet\u00eb e nevojshme t\u00eb d\u00ebrgohen vet\u00ebm nivele t\u00eb vogla. <\/p>\n<p><\/p>\n<p>Plus, regjistri i gatsh\u00ebm dhe etiketimi i imazheve n\u00eb Docker na japin primitiv\u00eb t\u00eb gatsh\u00ebm p\u00ebr versionim dhe dor\u00ebzim t\u00eb kodit n\u00eb production.<\/p>\n<p><\/p>\n<p>Docker, si \u00e7do teknologji tjet\u00ebr e ngjashme, na ofron nj\u00eb nivel t\u00eb caktuar izolimi t\u00eb konteiner\u00ebve nga kuti. P\u00ebr shembull, izolimi i memories \u2014 \u00e7do kontejner merr nj\u00eb kufi p\u00ebr p\u00ebrdorimin e memories s\u00eb makin\u00ebs, p\u00ebrtej t\u00eb cilit nuk do ta konsumoj\u00eb. Gjithashtu, mund t\u00eb izoloheshin konteiner\u00ebt p\u00ebr p\u00ebrdorimin e CPU-s\u00eb. Sidoqoft\u00eb, p\u00ebr ne, izolimi standard ishte i pamjaftuesh\u00ebm. Por p\u00ebr k\u00ebt\u00eb \u2014 m\u00eb posht\u00eb.<\/p>\n<p><\/p>\n<p>Ekzekutimi i drejtp\u00ebrdrejt\u00eb i konteiner\u00ebve n\u00eb server\u00eb \u00ebsht\u00eb vet\u00ebm nj\u00eb pjes\u00eb e problemeve. Nj\u00eb pjes\u00eb tjet\u00ebr lidhet me vendosjen e konteiner\u00ebve n\u00eb server\u00eb. 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 konteiner\u00ebt duhet t\u00eb vendosen n\u00eb server\u00eb sa m\u00eb ngusht\u00eb t\u00eb jet\u00eb e mundur, pa ulur shpejt\u00ebsin\u00eb e pun\u00ebs s\u00eb tyre. Kjo vendosje mund t\u00eb jet\u00eb e komplikuar dhe n\u00eb aspektin e disponueshm\u00ebris\u00eb. Shpesh ne duam t\u00eb vendosim replika 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 disfat\u00ebs s\u00eb raftit ose sall\u00ebs, t\u00eb mos humbasim t\u00eb gjitha replikat e sh\u00ebrbimit menj\u00ebher\u00eb. <\/p>\n<p><\/p>\n<p>Derdhja e konteiner\u00ebve me dor\u00eb \u2014 nuk \u00ebsht\u00eb nj\u00eb opsion, kur ke 8 mij\u00eb server\u00eb dhe 8\u201416 mij\u00eb konteiner\u00eb. <\/p>\n<p><\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj, ne donim t'u japim zhvilluesve m\u00eb shum\u00eb autonomi n\u00eb shp\u00ebrndarjen e burimeve, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mund t\u00eb vendosnin sh\u00ebrbimet e tyre n\u00eb production, pa ndihm\u00ebn e administratorit. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, donim t\u00eb ruanim kontrollin, n\u00eb m\u00ebnyr\u00eb q\u00eb ndonj\u00eb sh\u00ebrbim dyt\u00ebsor t\u00eb mos konsumonte t\u00eb gjith\u00eb burimet e qendrave tona t\u00eb t\u00eb dh\u00ebnave. <\/p>\n<p><\/p>\n<p>Qart\u00eb \u00ebsht\u00eb se na nevojitet nj\u00eb shtres\u00eb menaxhuese, e cila do merret automatikisht me k\u00ebto.<\/p>\n<p><\/p>\n<p>Ja kemi n\u00eb nj\u00eb imazh t\u00eb thjesht\u00eb dhe t\u00eb qart\u00eb, t\u00eb cilin e adhurojn\u00eb t\u00eb gjith\u00eb arkitekt\u00ebt: tre katror\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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 klaster i besuesh\u00ebm q\u00eb \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr orkestrimin e cloud-it. Zhvilluesi d\u00ebrgon n\u00eb master nj\u00eb manifest, n\u00eb t\u00eb cilin p\u00ebrmban t\u00eb gjitha informacionet e nevojshme p\u00ebr vendosjen e sh\u00ebrbimit. Masteri, mbi k\u00ebt\u00eb baz\u00eb, jep komanda minjoneve t\u00eb zgjedhura (makinave t\u00eb destinuara p\u00ebr t\u00eb drejtuar kontejner\u00ebt). N\u00eb minjone ka agjentin ton\u00eb, i cili merr komand\u00ebn, i jep komandat e tij Docker-it dhe Docker-i konfiguron kernelin linux p\u00ebr t\u00eb ndezur kontejnerin p\u00ebrkat\u00ebs. P\u00ebrve\u00e7 ekzekutimit t\u00eb komandave, agjenti vazhdimisht i raporton masterit p\u00ebr ndryshimet n\u00eb gjendjen e minjoneve dhe kontejner\u00ebve t\u00eb ndezur mbi to.<\/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 detyr\u00ebn e shp\u00ebrndarjes m\u00eb t\u00eb nd\u00ebrlikuar t\u00eb burimeve p\u00ebr shum\u00eb minjone.<\/p>\n<p><\/p>\n<p>Burimi llogarit\u00ebs n\u00eb one-cloud \u00ebsht\u00eb:<\/p>\n<p><\/p>\n<ul>\n<li>Kapaciteti llogarit\u00ebs i procesorit, i konsumuar nga nj\u00eb detyr\u00eb specifike. <\/li>\n<li>Sasia e memories, e disponueshme p\u00ebr detyr\u00ebn. <\/li>\n<li>Trafiku i rrjetit. \u00c7do minjon ka nj\u00eb interfaks t\u00eb caktuar rrjeti me nj\u00eb kapacitet t\u00eb kufizuar, k\u00ebshtu q\u00eb nuk mund t\u00eb shp\u00ebrndahen detyra pa marr\u00eb parasysh sasin\u00eb e t\u00eb dh\u00ebnave q\u00eb kalohen p\u00ebrmes rrjetit. <\/li>\n<li>Disk\u00ebt. P\u00ebrve\u00e7, natyrisht, vendit p\u00ebr t\u00eb dh\u00ebnat e detyr\u00ebs, ne gjithashtu caktuam llojin e diskut: HDD ose SSD. Disk\u00ebt mund t\u00eb sh\u00ebrbejn\u00eb nj\u00eb numri t\u00eb caktuar k\u00ebrkesash n\u00eb sekond\u00eb \u2014 IOPS. Prandaj, p\u00ebr detyrat q\u00eb gjenerojn\u00eb m\u00eb shum\u00eb IOPS sesa mund t\u00eb sh\u00ebrbej\u00eb nj\u00eb disk, ne gjithashtu caktuam \"spindles\" \u2014 dmth. disa pajisje disku 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 ta shkruajm\u00eb konsumin e burimeve n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb: 400 b\u00ebrthama procesori, 2.5 TByte memorie, 50 Gbit\/s trafik n\u00eb t\u00eb dy drejtimet, 6 TByte 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 gjitha burimeve t\u00eb disponueshme n\u00eb infrastruktur\u00ebn e prodhimit. Prandaj, d\u00ebshirojm\u00eb t\u00eb b\u00ebjm\u00eb n\u00eb m\u00ebnyr\u00eb q\u00eb, papritur, p\u00ebr shkak t\u00eb nj\u00eb gabimi nga operatori ose jo, user-cache t\u00eb mos konsumoj\u00eb m\u00eb shum\u00eb burime se sa i jan\u00eb caktuar. K\u00ebshtu, ne duhet t\u00eb limitojm\u00eb burimet. Por \u00e7far\u00eb mund t\u00eb lidhim me kuot\u00ebn?<\/p>\n<p><\/p>\n<p>Le t\u00eb kthehemi n\u00eb skem\u00ebn ton\u00eb t\u00eb thjeshtuar t\u00eb bashk\u00ebpunimit t\u00eb komponent\u00ebve dhe ta rrisim at\u00eb me m\u00eb shum\u00eb detaje \u2014 k\u00ebshtu: <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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 bie n\u00eb sy:<\/p>\n<p><\/p>\n<ul>\n<li>Frontend-i i uebit dhe muzika p\u00ebrdorin klastere izoluese t\u00eb s\u00eb nj\u00ebjt\u00ebs server aplikacionesh.<\/li>\n<li>Mund t\u00eb dallojm\u00eb nivele logjike, t\u00eb cilat p\u00ebrfshijn\u00eb k\u00ebto klastere: frontet, cache-t, niveli i ruajtjes dhe menaxhimit t\u00eb t\u00eb dh\u00ebnave.<\/li>\n<li>Frontend-i \u00ebsht\u00eb i ndrysh\u00ebm, jan\u00eb n\u00eb sistemet funksionale t\u00eb ndryshme. <\/li>\n<li>Cache-t gjithashtu mund t\u00eb shp\u00ebrndahen n\u00ebp\u00ebr n\u00ebn-sistemin, t\u00eb dh\u00ebnat t\u00eb cilat ato i ruajn\u00eb.<\/li>\n<\/ul>\n<p><\/p>\n<p>Le t\u00eb rrisim p\u00ebrs\u00ebri figur\u00ebn:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>Ooo! Ne shohim nj\u00eb hierarki! Kjo do t\u00eb thot\u00eb se mund t\u00eb ndajm\u00eb burimet m\u00eb shpesh: t\u00eb caktojm\u00eb nj\u00eb zhvillues p\u00ebrgjegj\u00ebs p\u00ebr nj\u00eb nyje t\u00eb k\u00ebsaj hierarkie, p\u00ebrkat\u00ebsisht p\u00ebr n\u00ebn-sistemin funksional (si \u2018music\u2019 n\u00eb figur\u00eb), dhe ky nivel hierarkie do t\u00eb lidhet me kuot\u00ebn. Kjo hierarki gjithashtu na lejon t\u00eb organizojm\u00eb sh\u00ebrbime m\u00eb fleksib\u00ebl p\u00ebr nj\u00eb menaxhim m\u00eb t\u00eb leht\u00eb. P\u00ebr shembull, t\u00eb gjith\u00eb web, pasi \u00ebsht\u00eb nj\u00eb grumbull shum\u00eb i madh server\u00ebsh, e ndajm\u00eb n\u00eb disa grupe m\u00eb t\u00eb vogla, t\u00eb cilat paraqiten n\u00eb figur\u00eb si group1, group2.<\/p>\n<p><\/p>\n<p>Duke hequr vijat e tep\u00ebrta, mund t\u00eb shkruajm\u00eb \u00e7do nyje 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 te koncepti i \u2018radh\u00ebs hierarkike\u2019. Ajo ka emrin, si \u2018group1.web.front\u2019. P\u00ebr t\u00eb caktohet nj\u00eb kuot\u00eb p\u00ebr burimet dhe t\u00eb drejtat e p\u00ebrdoruesve. Nj\u00eb person nga DevOps do t'i jap\u00eb t\u00eb drejtat p\u00ebr t\u00eb d\u00ebrguar sh\u00ebrbimin n\u00eb radh\u00eb, dhe ky punonj\u00ebs mund t\u00eb filloj\u00eb di\u00e7ka n\u00eb radh\u00eb, nd\u00ebrsa nj\u00eb person nga OpsDev do t\u00eb ket\u00eb t\u00eb drejta administrimi, dhe tani ai mund t\u00eb menaxhoj\u00eb radh\u00ebn, t'u caktoj\u00eb njer\u00ebz, t'u jap\u00eb k\u00ebtyre njer\u00ebzve t\u00eb drejta etj. Sh\u00ebrbimet e filluara n\u00eb k\u00ebt\u00eb radh\u00eb do t\u00eb ekzekutohen brenda kuot\u00ebs s\u00eb radh\u00ebs. N\u00ebse kuota kompjuterike e radh\u00ebs 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 pik\u00ebrisht radh\u00ebn. <\/p>\n<p><\/p>\n<p>T\u00eb shqyrtojm\u00eb sh\u00ebrbimet m\u00eb n\u00eb detaje. Nj\u00eb sh\u00ebrbim ka nj\u00eb em\u00ebr t\u00eb plot\u00eb, i cili gjithmon\u00eb p\u00ebrfshin emrin e radh\u00ebs. At\u00ebher\u00eb sh\u00ebrbimi i frontend-it t\u00eb web do t\u00eb ket\u00eb emrin <strong>ok-web.group1.web.front<\/strong>. Nd\u00ebrsa sh\u00ebrbimi i serverit t\u00eb aplikacioneve, me t\u00eb cilin ai lidhet, do t\u00eb em\u00ebrohet <strong>ok-app.group1.web.front<\/strong>\u00c7do sh\u00ebrbim ka nj\u00eb manifest, n\u00eb t\u00eb cilin p\u00ebrcaktohen t\u00eb gjitha informacionet e nevojshme p\u00ebr vendosjen n\u00eb makinat p\u00ebrkat\u00ebse: sa burime konsumon kjo detyr\u00eb, \u00e7far\u00eb konfigure i nevojitet, sa kopje duhet t\u00eb jen\u00eb, vetit\u00eb p\u00ebr p\u00ebrballimin e d\u00ebshtimeve t\u00eb k\u00ebtij sh\u00ebrbimi. Dhe pas vendosjes s\u00eb sh\u00ebrbimit n\u00eb makinat, shfaqen instancat e tij. Ato em\u00ebrtohen gjithashtu n\u00eb m\u00ebnyr\u00eb unike \u2014 si numri i instanc\u00ebs 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 enjt\u00ebs s\u00eb nisur, ne mund t\u00eb zbulojm\u00eb shum\u00eb.<\/p>\n<p><\/p>\n<p>Tani le t\u00eb njiheni m\u00eb af\u00ebr me at\u00eb q\u00eb k\u00ebto instanca, n\u00eb t\u00eb v\u00ebrtet\u00eb, b\u00ebjn\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 prodhimi<\/strong>. P\u00ebr k\u00ebto detyra dhe sh\u00ebrbime, vonesa e p\u00ebrgjigjes (latencija) \u00ebsht\u00eb shum\u00eb e r\u00ebnd\u00ebsishme, sa shpejt \u00e7do k\u00ebrkes\u00eb do t\u00eb p\u00ebrpunoj\u00eb sistemi. Shembuj t\u00eb detyrave: frontet web, cache, server\u00ebt e aplikacioneve, depozitat OLTP dhe k\u00ebshtu me radh\u00eb.<\/li>\n<li><strong>Detyrat e llogaritjes \u2014 grumbuj<\/strong>. K\u00ebtu shpejt\u00ebsia e p\u00ebrpunimit t\u00eb \u00e7do k\u00ebrkese t\u00eb ve\u00e7ant\u00eb nuk \u00ebsht\u00eb e r\u00ebnd\u00ebsishme. E r\u00ebnd\u00ebsishme \u00ebsht\u00eb sa llogaritje gjithsej p\u00ebr nj\u00eb (t\u00eb madh) interval kohor kjo detyr\u00eb do t\u00eb b\u00ebj\u00eb (shpejt\u00ebsia). K\u00ebto do t\u00eb jen\u00eb \u00e7do detyr\u00eb MapReduce, Hadoop, m\u00ebsimi i makineris\u00eb, statistika.<\/li>\n<li><strong>Detyrat an\u00ebsore \u2014 papun\u00eb<\/strong>. P\u00ebr k\u00ebto detyra as latency as shpejt\u00ebsia nuk jan\u00eb shum\u00eb t\u00eb r\u00ebnd\u00ebsishme. K\u00ebtu p\u00ebrfshihen teste t\u00eb ndryshme, migrime, llogaritje, konvertime t\u00eb t\u00eb dh\u00ebnave nga nj\u00eb format n\u00eb at\u00eb tjet\u00ebr. Nga nj\u00ebra an\u00eb, ato duken si detyrat e llogaritjes, nga ana tjet\u00ebr \u2014 nuk \u00ebsht\u00eb shum\u00eb e r\u00ebnd\u00ebsishme se sa shpejt do t\u00eb p\u00ebrfundojn\u00eb. <\/li>\n<\/ul>\n<p><\/p>\n<p>Le t\u00eb shikojm\u00eb si konsumojn\u00eb k\u00ebto detyra burime, p\u00ebr shembull, 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 konsumi t\u00eb CPU-s\u00eb si ky:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>K\u00ebrkesa vije nga p\u00ebrdoruesi, detyra fillon t\u00eb p\u00ebrdor\u00eb t\u00eb gjitha b\u00ebrthamat e disponueshme t\u00eb CPU-s\u00eb, p\u00ebrfundon, kthen nj\u00eb p\u00ebrgjigje, pret k\u00ebrkes\u00ebn tjet\u00ebr dhe q\u00ebndron. Vjen k\u00ebrkesa tjet\u00ebr \u2014 p\u00ebrs\u00ebri d\u00ebgjohen t\u00eb gjitha ato q\u00eb ishin, p\u00ebrpunohen, presim k\u00ebrkes\u00ebn tjet\u00ebr.<\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb garantuar vones\u00ebn minimale p\u00ebr nj\u00eb detyr\u00eb t\u00eb till\u00eb, ne duhet t\u00eb marrim maksimumin e burimeve t\u00eb konsumuar prej saj dhe t\u00eb rezervojm\u00eb numrin e nevojsh\u00ebm t\u00eb b\u00ebrthamave n\u00eb minjon (makina q\u00eb do t\u00eb kryej\u00eb detyr\u00ebn). At\u00ebher\u00eb formula e rezervimit p\u00ebr detyr\u00ebn ton\u00eb do t\u00eb jet\u00eb si kjo:<\/p>\n<p><\/p>\n<pre><code>alloc: cpu = 4 (maks)<\/code><\/pre>\n<p><\/p>\n<p>Dhe n\u00ebse kemi nj\u00eb server mini me 16 b\u00ebrthama, at\u00ebher\u00eb mund t\u00eb vendosim pik\u00ebrisht kat\u00ebr nga k\u00ebto detyra. Sh\u00ebnoni se konsumi mesatar i procesorit p\u00ebr k\u00ebto detyra shpesh \u00ebsht\u00eb shum\u00eb i ul\u00ebt \u2014 \u00e7ka \u00ebsht\u00eb e qart\u00eb, 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 e llogaritjes.<\/strong> Ato do t\u00eb ken\u00eb nj\u00eb model paksa ndryshe:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>Konsumi mesatar i burimeve t\u00eb procesorit p\u00ebr k\u00ebto detyra \u00ebsht\u00eb mjaft i lart\u00eb. Shpesh ne duam q\u00eb detyra e llogaritjes t\u00eb p\u00ebrfundoj\u00eb brenda nj\u00eb kohe t\u00eb caktuar, prandaj duhen rezervuar numrin minimal t\u00eb procesor\u00ebve q\u00eb i nevojiten asaj, n\u00eb m\u00ebnyr\u00eb q\u00eb llogaritja t\u00eb p\u00ebrfundoj\u00eb brenda nj\u00eb kohe t\u00eb pranueshme. Formula e saj p\u00ebr rezervimin 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, vendose n\u00eb mini, ku ka t\u00eb pakt\u00ebn nj\u00eb b\u00ebrtham\u00eb t\u00eb lir\u00eb, dhe pastaj gjith\u00e7ka q\u00eb ka mbetur \u2014 do ta konsumoj\u00eb\u00bb.<\/em><\/p>\n<p><\/p>\n<p>K\u00ebtu efikasiteti i p\u00ebrdorimit \u00ebsht\u00eb tashm\u00eb ndjesh\u00ebm m\u00eb i mir\u00eb se p\u00ebr detyrat me vones\u00eb t\u00eb shkurt\u00ebr. Por fitimi do t\u00eb jet\u00eb shum\u00eb m\u00eb i madh n\u00ebse kombinojm\u00eb t\u00eb dyja llojet e detyrave n\u00eb nj\u00eb server mini dhe shp\u00ebrndajm\u00eb burimet e saj n\u00eb l\u00ebvizje. Kur detyra me vones\u00eb t\u00eb shkurt\u00ebr k\u00ebrkon procesorin \u2014 ajo e merr at\u00eb menj\u00ebher\u00eb, dhe kur burimet nuk jan\u00eb m\u00eb t\u00eb nevojshme \u2014 ato i kalohen detyr\u00ebs s\u00eb llogaritjes, pra, di\u00e7ka si kjo:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>S\u00eb pari, le t\u00eb kuptojm\u00eb prodhimin dhe alloc: cpu = 4. Na duhen kat\u00ebr b\u00ebrthama t\u00eb rezervuara. 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 alokosh kat\u00ebr b\u00ebrthama t\u00eb caktuara p\u00ebr detyr\u00ebn n\u00eb server.<\/li>\n<li>P\u00ebrdorni <code>--cpuquota=400_000 --cpuperiod=100_000<\/code>, t\u00eb caktosh nj\u00eb kuot\u00eb p\u00ebr koh\u00ebn e procesorit, dmth. t\u00eb tregosh se p\u00ebr \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. K\u00ebshtu, arrijm\u00eb t\u00eb nj\u00ebjtat kat\u00ebr b\u00ebrthama. <\/li>\n<\/ul>\n<p><\/p>\n<p>Por cili nga k\u00ebto m\u00ebnyra i p\u00ebrshtatet?<\/p>\n<p><\/p>\n<p>Duket mjaft t\u00ebrheq\u00ebse cpuset. Detyra ka kat\u00ebr b\u00ebrthama t\u00eb dedikuara, k\u00ebshtu q\u00eb caches e procesor\u00ebve do t\u00eb punojn\u00eb sa m\u00eb efikasht\u00eb. Kjo ka dhe an\u00ebn e saj t\u00eb err\u00ebt: do t\u00eb na duhej t\u00eb merrnim p\u00ebrsip\u00ebr shp\u00ebrndarjen e llogaritjeve p\u00ebr b\u00ebrthamat e papopulluara t\u00eb makin\u00ebs n\u00eb vend t\u00eb OS-s\u00eb, gj\u00eb q\u00eb \u00ebsht\u00eb nj\u00eb detyr\u00eb mjaft e nd\u00ebrlikuar, ve\u00e7an\u00ebrisht n\u00ebse p\u00ebrpiqemi t\u00eb vendosim detyrat batch n\u00eb nj\u00eb makin\u00eb t\u00eb till\u00eb. Testet treguan se opsioni me kuot\u00eb p\u00ebrshtatet m\u00eb mir\u00eb k\u00ebtu: k\u00ebshtu q\u00eb sistemi operativ ka m\u00eb shum\u00eb liri n\u00eb zgjedhjen e b\u00ebrtham\u00ebs p\u00ebr ekzekutimin e detyr\u00ebs n\u00eb momentin aktual dhe koha e procesorit shp\u00ebrndahet m\u00eb efikasht.<\/p>\n<p><\/p>\n<p>Le t\u00eb shohim si t\u00eb b\u00ebjm\u00eb rezerv\u00eb n\u00eb docker me numrin minimal t\u00eb b\u00ebrthamave. Kuota p\u00ebr detyrat batch tashm\u00eb nuk \u00ebsht\u00eb e p\u00ebrdorshme, sepse nuk \u00ebsht\u00eb e nevojshme t\u00eb kufizohet maksimumi, mjafton t\u00eb garantohet minimumi. Dhe k\u00ebtu p\u00ebrshtatet mir\u00eb opsioni <code>docker run --cpushares<\/code>.<\/p>\n<p><\/p>\n<p>Kemi r\u00ebn\u00eb dakord q\u00eb n\u00ebse batch k\u00ebrkon garanci minimale p\u00ebr nj\u00eb b\u00ebrtham\u00eb, at\u00ebher\u00eb ne tregojm\u00eb <code>--cpushares=1024<\/code>, dhe n\u00ebse minimumi \u00ebsht\u00eb p\u00ebr dy b\u00ebrthama, at\u00ebher\u00eb tregojm\u00eb <code>--cpushares=2048<\/code>. Cpu shares nuk ndihmojn\u00eb n\u00eb shp\u00ebrndarjen e koh\u00ebs s\u00eb procesorit deri sa ajo t\u00eb mjaftoj\u00eb. K\u00ebshtu, n\u00ebse prodhimi nuk p\u00ebrdor t\u00eb katra b\u00ebrtham\u00ebn e tij, asgj\u00eb nuk e kufizon detyrat batch dhe ato mund t\u00eb p\u00ebrdorin koh\u00eb shtes\u00eb t\u00eb procesorit. Por n\u00eb rastin kur ka munges\u00eb procesori, n\u00ebse prodhimi ka konsumuar t\u00eb kat\u00ebr b\u00ebrthat\u00eb dhe ka arritur kuot\u00ebn, koha e mbetur e procesorit do t\u00eb ndahet proporcionalisht sipas cpushares, dmth. n\u00eb situat\u00ebn me tre b\u00ebrthama t\u00eb lira, nj\u00ebra do ta marr\u00eb detyra me 1024 cpushares, dhe dy t\u00eb tjera do ta marrin detyra me 2048 cpushares.<\/p>\n<p><\/p>\n<p>Por p\u00ebrdorimi i kuot\u00ebs dhe aksioneve nuk \u00ebsht\u00eb mjaft. Na nevojitet q\u00eb detyra me vones\u00eb t\u00eb shkurt\u00ebr t\u00eb ket\u00eb p\u00ebrpar\u00ebsi mbi detyr\u00ebn batch gjat\u00eb shp\u00ebrndarjes s\u00eb koh\u00ebs s\u00eb procesorit. Pa nj\u00eb p\u00ebrprioritizim t\u00eb till\u00eb, detyra batch do t\u00eb marr\u00eb t\u00eb gjitha koh\u00ebn e procesorit n\u00eb momentin kur ajo nevojitet p\u00ebr prodhim. N\u00eb Docker run nuk ka opsione t\u00eb p\u00ebrprioritizimit t\u00eb konteiner\u00ebve, por ndihmohen nga politikashin e planifikuesit t\u00eb procesor\u00ebve n\u00eb Linux. Mund t\u00eb lexoni m\u00eb shum\u00eb p\u00ebr to <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man2\/sched_setscheduler.2.html\">k\u00ebtu<\/a><\/noindex>, dhe n\u00eb k\u00ebt\u00eb artikull ne do t\u00eb kalojm\u00eb p\u00ebr to shkurtimisht:<\/p>\n<p><\/p>\n<ul>\n<li><strong>SCHED_OTHER<\/strong><br \/>\nFillimisht marrin t\u00eb gjith\u00eb proceset normale t\u00eb p\u00ebrdoruesve n\u00eb nj\u00eb makin\u00eb Linux.<\/li>\n<li><strong>SCHED_BATCH<\/strong><br \/>\nE p\u00ebrshtatur p\u00ebr procese k\u00ebrkuese p\u00ebr burime. Kur vendoset nj\u00eb detyr\u00eb n\u00eb procesor, hyn nj\u00eb nd\u00ebshkim i quajtur aktivizim: nj\u00eb detyr\u00eb e till\u00eb me probabilitet t\u00eb vog\u00ebl do t\u00eb marr\u00eb burime nga procesori, n\u00ebse n\u00eb at\u00eb moment po p\u00ebrdoret nga nj\u00eb detyr\u00eb me SCHED_OTHER.<\/li>\n<li><strong>SCHED_IDLE<\/strong><br \/>\nNj\u00eb proces i sfondit me prioritet shum\u00eb t\u00eb ul\u00ebt, edhe m\u00eb t\u00eb ul\u00ebt se nice \u201319. Ne p\u00ebrdorim bibliotek\u00ebn ton\u00eb me kod 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 lan\u00e7imit t\u00eb kontejnerit p\u00ebrmes thirrjes.<\/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 programoni n\u00eb Java, t\u00eb nj\u00ebjt\u00ebn gj\u00eb mund ta b\u00ebni me komand\u00ebn chrt:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">chrt -i 0 $pid<\/code><\/pre>\n<p><\/p>\n<p>Do t'i 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>Klasa e 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>P\u00ebrgjith\u00ebsisht<br \/>\nCpu= [2, *)<br \/>\n<code>--cpushares=2048<\/code><br \/>\nSCHED_IDLE<\/p>\n<p><\/p>\n<p>*N\u00ebse b\u00ebni chrt nga brenda kontejnerit, mund t\u00eb nevojitet kapaciteti sys_nice, sepse n\u00eb m\u00ebnyr\u00eb t\u00eb paracaktuar Docker e heq k\u00ebt\u00eb kapacitet gjat\u00eb lan\u00e7imit t\u00eb kontejnerit.<\/p>\n<p><\/p>\n<p>Por detyrat nuk konsumojn\u00eb vet\u00ebm procesorin, por gjithashtu trafikun, i cili ndikon n\u00eb vones\u00ebn e detyrave rrjet\u00ebrore edhe m\u00eb shum\u00eb se shp\u00ebrndarja e gabuar e burimeve t\u00eb procesorit. Prandaj, natyrisht, duam t\u00eb kemi nj\u00eb pamje t\u00eb nj\u00ebjt\u00eb edhe p\u00ebr trafikun. Kjo do t\u00eb thot\u00eb, kur detyra prodhimi d\u00ebrgon disa paketa n\u00eb rrjet, ne caktuar shpejt\u00ebsin\u00eb maksimale (formula <em>alloc: lan=[*,500mbps)<\/em> ), me t\u00eb cil\u00ebn prodhimi mund ta b\u00ebj\u00eb k\u00ebt\u00eb. Dhe p\u00ebr batch ne garantojm\u00eb vet\u00ebm kapacitetin minimal, por nuk e kufizojm\u00eb maksimalin (formula <em>alloc: lan=[10Mbps,*)<\/em> ) N\u00eb k\u00ebt\u00eb rast, trafiku prodhim duhet t\u00eb ket\u00eb prioritet mbi detyrat batch.<br \/>\nK\u00ebtu Docker nuk ka asnj\u00eb primitiv q\u00eb mund t\u00eb p\u00ebrdorim. Por na vjen n\u00eb ndihm\u00eb <noindex><a rel=\"nofollow\" href=\"http:\/\/lartc.org\/\">Kontrolli i Trafikut n\u00eb Linux<\/a><\/noindex>. Ne arrit\u00ebm rezultatet e d\u00ebshiruara p\u00ebrmes disiplin\u00ebs <noindex><a rel=\"nofollow\" href=\"http:\/\/linux-ip.net\/articles\/hfsc.en\/\">Hierarchical Fair Service Curve<\/a><\/noindex>. Me ndihm\u00ebn e saj, ne ndajm\u00eb dy klasa trafiku: prodhimi me prioritet t\u00eb lart\u00eb dhe batch\/i papun\u00eb me prioritet t\u00eb ul\u00ebt. Si rezultat, konfigurimi p\u00ebr trafikun e daljes \u00ebsht\u00eb kjo:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/gh\/5k\/kf\/gh5kkfwkhwv0ilmbdmdbo83dp6k.png\"><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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 \u00abdisiplina rr\u00ebnjore qdisc\u00bb e hsfc; 1:1 \u2014 klasa n\u00ebnshtruese hsfc me nj\u00eb limit t\u00eb p\u00ebrbashk\u00ebt kalimi prej 8 Gbit\/s, n\u00ebn t\u00eb cilin jan\u00eb vendosur klasat n\u00ebnshtruese t\u00eb t\u00eb gjith\u00eb konteiner\u00ebve; 1:2 \u2014 klasa n\u00ebnshtruese hsfc e p\u00ebrbashk\u00ebt p\u00ebr t\u00eb gjith\u00eb detyrat batch dhe idle me nj\u00eb limit \u00abdinamik\u00bb, p\u00ebr t\u00eb cilin do t\u00eb flasim m\u00eb posht\u00eb. Klasa t\u00eb tjera n\u00ebnshtruese hsfc jan\u00eb klasat e dedikuara p\u00ebr konteiner\u00ebt prodhuese q\u00eb funksionojn\u00eb p\u00ebr momentin me limite p\u00ebrkat\u00ebse manifestave t\u00eb tyre, \u2014 450 dhe 400 Mbit\/s. Secil\u00ebs klas\u00eb hsfc i \u00ebsht\u00eb caktuar nj\u00eb radh\u00eb qdisc fq ose fq_codel, n\u00eb var\u00ebsi t\u00eb versionit t\u00eb b\u00ebrtham\u00ebs linux, p\u00ebr t\u00eb shmangur humbjet e paketave 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 e daljes. Por ne duam t\u00eb prioritarizojm\u00eb edhe trafik hyr\u00ebs \u2014 sepse ndonj\u00eb detyr\u00eb batch mund t\u00eb zgjedh\u00eb leht\u00ebsisht t\u00eb gjith\u00eb kanalin hyr\u00ebs, duke marr\u00eb, p\u00ebr shembull, nj\u00eb paket\u00eb t\u00eb madhe t\u00eb t\u00eb dh\u00ebnave hyr\u00ebse p\u00ebr map&amp;reduce. P\u00ebr k\u00ebt\u00eb ne p\u00ebrdorim modulin <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 \u00e7do nd\u00ebrfaqe rrjeti dhe ndihmon n\u00eb ridrejktimin e trafikut hyr\u00ebs nga nd\u00ebrfaqja n\u00eb daljen p\u00ebr ifbX. M\u00eb pas p\u00ebr ifbX funksionojn\u00eb t\u00eb gjitha ato disiplinat p\u00ebr kontrollin e trafikut t\u00eb daljes, p\u00ebr t\u00eb cilat 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=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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 eksperimenteve, zbuluam se rezultatet m\u00eb t\u00eb mira hsfc shfaqen kur klasa 1:2 e trafikut batch\/idle pa prioritet kufizohet n\u00eb makinat-minion jo m\u00eb shum\u00eb se deri n\u00eb nj\u00eb band\u00eb t\u00eb lir\u00eb. N\u00eb t\u00eb kund\u00ebrt, trafiku pa prioritet ndikon shum\u00eb n\u00eb vonesat e detyrave prodhuese. Vlera aktuale e band\u00ebs s\u00eb lir\u00eb miniond p\u00ebrcaktohet \u00e7do sekond\u00eb, duke matur mesataren e konsumit t\u00eb trafikut nga t\u00eb gjitha detyrat prodhuese t\u00eb k\u00ebtij minioni <img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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 rrjetit <img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>Banda p\u00ebrcaktohet p\u00ebr trafikun hyr\u00ebs dhe dal\u00ebs n\u00eb m\u00ebnyr\u00eb t\u00eb pavarur. Dhe n\u00eb p\u00ebrputhje me vlerat e reja, miniond rind\u00ebrton limitin e klas\u00ebs pa prioritet 1:2.<\/p>\n<p><\/p>\n<p>K\u00ebshtu kemi realizuar t\u00eb tri klasat e izolimit: prod, batch dhe idle. K\u00ebto klasa ndikon shum\u00eb n\u00eb karakteristikat e ekzekutimit t\u00eb detyrave. Prandaj vendos\u00ebm q\u00eb ta vendosim k\u00ebt\u00eb tipar n\u00eb maj\u00eb t\u00eb hierarkis\u00eb, n\u00eb m\u00ebnyr\u00eb q\u00eb n\u00eb nj\u00eb shikim mbi emrin e radh\u00ebs hierarkike t\u00eb kuptohet menj\u00ebher\u00eb me \u00e7far\u00eb kemi t\u00eb b\u00ebjm\u00eb: <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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 gjitha frontet tona t\u00eb njohura <strong>web<\/strong> dhe <strong>music<\/strong> at\u00ebher\u00eb vendosen n\u00eb hierarki n\u00ebn prod. P\u00ebr shembull, n\u00ebn batch le t\u00eb vendosim sh\u00ebrbimin <strong>music catalog<\/strong>, i cili her pas krijon nj\u00eb katalog k\u00ebng\u00ebsh nga nj\u00eb grup skedash mp3 t\u00eb ngarkuara n\u00eb \u00abOdnoklassniki\u00bb. Nj\u00eb shembull sh\u00ebrbimi n\u00ebn idle mund t\u00eb jet\u00eb <strong>transformuesi muzikor<\/strong>, i cili normalizon nivelin e volumit t\u00eb muzik\u00ebs.<\/p>\n<p><\/p>\n<p>Me heqjen e vijave t\u00eb panevojshme, ne mund ta shkruajm\u00eb emrin e sh\u00ebrbimeve tona m\u00eb t\u00eb sheshta, 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 e 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 k\u00ebt\u00eb arsye, kritik\u00ebsin\u00eb e tij, etj.<\/p>\n<p><\/p>\n<p>Gjith\u00e7ka \u00ebsht\u00eb e shk\u00eblqyer, por ka nj\u00eb t\u00eb v\u00ebrtet\u00eb t\u00eb hidhur. Izolimi i plot\u00eb i detyrave q\u00eb funksionojn\u00eb n\u00eb nj\u00eb makin\u00eb \u00ebsht\u00eb i pamundur.<\/p>\n<p><\/p>\n<p>Ajo \u00e7far\u00eb arrit\u00ebm: n\u00ebse batch konsumon shum\u00eb <strong>t\u00eb<\/strong> burime t\u00eb procesorit, at\u00ebher\u00eb planifikuesi i integruar i CPU Linux e b\u00ebn shum\u00eb mir\u00eb pun\u00ebn e tij, dhe ndikimi n\u00eb detyr\u00ebn prod \u00ebsht\u00eb praktikisht i paduksh\u00ebm. Por n\u00ebse kjo detyr\u00eb batch fillon t\u00eb punoj\u00eb aktivisht me memorien, at\u00ebher\u00eb ndikimi nd\u00ebrmjet tyre fillon t\u00eb shfaqet. Kjo ndodh sepse te detyra prod \u2018hiqen\u2019 cache-t e procesorit nga memoria \u2014 si rezultat, rriten humbjet n\u00eb cache, dhe procesori e p\u00ebrpunon detyr\u00ebn prod m\u00eb ngadal\u00eb. Nj\u00eb detyr\u00eb e till\u00eb batch mund t\u00eb rris\u00eb vonesat e kontejnerit ton\u00eb tipik prod me 10%.<\/p>\n<p><\/p>\n<p>Izolimi i trafikut \u00ebsht\u00eb edhe m\u00eb i komplikuar p\u00ebr shkak se kartat moderne t\u00eb rrjetit kan\u00eb nj\u00eb radh\u00eb t\u00eb brendshme paketash. N\u00ebse nj\u00eb paket\u00eb nga detyra batch arrin aty e para, at\u00ebher\u00eb ajo do t\u00eb d\u00ebrgohet e para n\u00ebp\u00ebr kabllin, dhe k\u00ebtu s\u2019ka \u00e7far\u00eb t\u00eb b\u00ebsh.<\/p>\n<p><\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj, deri tani kemi arritur t\u00eb zgjidhim vet\u00ebm detyr\u00ebn e prioritetizimit t\u00eb trafikut TCP: p\u00ebr UDP, qasja me hsfc nuk funksionon. 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 prod.<\/p>\n<p><\/p>\n<h2 id=\"otkazoustoychivost\">Q\u00ebndrueshm\u00ebri<\/h2>\n<p><\/p>\n<p>Nj\u00eb nga q\u00ebllimet gjat\u00eb zhvillimit t\u00eb one-cloud ishte p\u00ebrmir\u00ebsimi i q\u00ebndrueshm\u00ebris\u00eb s\u00eb Odnoklassniki. Prandaj, m\u00eb pas do t\u00eb doja t\u00eb shqyrtoj skenaret e mundshme t\u00eb d\u00ebshtimeve dhe fatkeq\u00ebsive. 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>Kontejneri mund t\u00eb d\u00ebshtojn\u00eb n\u00eb disa m\u00ebnyra. Kjo mund t\u00eb jet\u00eb nj\u00eb eksperiment, nj\u00eb gabim ose nj\u00eb problem n\u00eb manifest, q\u00eb b\u00ebn q\u00eb detyra prodhuese t\u00eb konsumoj\u00eb m\u00eb shum\u00eb burime se \u00e7'\u00ebsht\u00eb p\u00ebrcaktuar n\u00eb manifest. Kemi pasur nj\u00eb rast: nj\u00eb zhvillues implementoi nj\u00eb algorit\u00ebm t\u00eb komplikuar, e rishikoi at\u00eb shum\u00eb her\u00eb, e komplikoi vetveten dhe u ngat\u00ebrrua deri sa n\u00eb fund detyra filloi t\u00eb humbiste rreth. Dhe p\u00ebr shkak se detyra prodhuese ka p\u00ebrpar\u00ebsi mbi t\u00eb gjitha t\u00eb tjerat n\u00eb k\u00ebto minj, ajo filloi t\u00eb konsumonte t\u00eb gjitha burimet e disponueshme t\u00eb procesorit. N\u00eb k\u00ebt\u00eb situat\u00eb, izolimi ndihmoi, ose m\u00eb sakt\u00eb, kuota e koh\u00ebs s\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 e lotit dhe t\u00eb tjera prodhuese q\u00eb punonin n\u00eb t\u00eb nj\u00ebjt\u00ebn makin\u00eb nuk vun\u00eb re asgj\u00eb. <\/p>\n<p><\/p>\n<p>Nj\u00eb problem tjet\u00ebr i mundsh\u00ebm \u00ebsht\u00eb r\u00ebnia e konteinerit. Dhe k\u00ebtu na shp\u00ebtojn\u00eb politikat e rikthimit, t\u00eb cilat t\u00eb gjith\u00eb i njohin, Docker p\u00ebrballohet shk\u00eblqyesh\u00ebm me k\u00ebt\u00eb. Praktikisht t\u00eb gjitha detyrat prodhuese kan\u00eb nj\u00eb politik\u00eb rikthimi gjithmon\u00eb. Ndonj\u00ebher\u00eb p\u00ebrdorim on_failure p\u00ebr detyrat e lotit ose p\u00ebr rikthimin e konteiner\u00ebve prodhues.<\/p>\n<p><\/p>\n<p>Por \u00e7far\u00eb mund t\u00eb b\u00ebjm\u00eb kur nj\u00eb minj\u00eb e t\u00ebr\u00eb \u00ebsht\u00eb e paq\u00ebndrueshme?<\/p>\n<p><\/p>\n<p>Sigurisht, mund t\u00eb nisim nj\u00eb kontejner n\u00eb nj\u00eb makin\u00eb tjet\u00ebr. Gj\u00ebja m\u00eb interesante k\u00ebtu \u00ebsht\u00eb se \u00e7far\u00eb ndodh me adresat IP (adresat), q\u00eb i jan\u00eb caktuar kontejnerit. <\/p>\n<p><\/p>\n<p>Ne mund t\u00eb caktojm\u00eb kontejner\u00ebve t\u00eb nj\u00ebjtat adresa IP si ato t\u00eb makinave-minj, ku k\u00ebta kontejner\u00eb po nisin. Pastaj, kur kontejneri nis n\u00eb nj\u00eb makin\u00eb tjet\u00ebr, adresa e tij IP ndryshon, dhe t\u00eb gjith\u00eb klient\u00ebt duhet t\u00eb kuptojn\u00eb se kontejneri ka shp\u00ebrngulur, 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 i k\u00ebndsh\u00ebm. N\u00eb treg ka shum\u00eb zgjidhje t\u00eb niveleve t\u00eb ndryshme t\u00eb besueshm\u00ebris\u00eb p\u00ebr organizimin e regjistrit t\u00eb sh\u00ebrbimeve. Shpesh n\u00eb k\u00ebto zgjidhje implementohet logjika e balancuesit t\u00eb ngarkes\u00ebs, ruajtja e konfigurimeve t\u00eb tjera n\u00eb form\u00eb t\u00eb ruajtjes KV etj.<br \/>\nMegjithat\u00eb, ne do t\u00eb preferonim t\u00eb ishim pa nevoj\u00ebn p\u00ebr t\u00eb implementuar nj\u00eb regjist\u00ebr t\u00eb ve\u00e7ant\u00eb, sepse kjo do t\u00eb n\u00ebnkuptonte hyrjen e nj\u00eb sistemi kritik, i cili p\u00ebrdoret nga t\u00eb gjitha sh\u00ebrbimet n\u00eb prodhim. Dhe kjo do t\u00eb thoshte se \u00ebsht\u00eb nj\u00eb pik\u00eb e mundshme d\u00ebshtimi, dhe duhet t\u00eb zgjidhni ose t\u00eb zhvilloni nj\u00eb zgjidhje shum\u00eb t\u00eb besueshme, e cila, \u00ebsht\u00eb e qart\u00eb, \u00ebsht\u00eb shum\u00eb e komplikuar, e gjat\u00eb dhe e shtrenjt\u00eb. <\/p>\n<p><\/p>\n<p>Nj\u00eb tjet\u00ebr mang\u00ebsi e madhe \u00ebsht\u00eb se p\u00ebr ta b\u00ebr\u00eb infrastruktur\u00ebn ton\u00eb t\u00eb vjet\u00ebr t\u00eb funksionoj\u00eb me t\u00eb re, do t\u00eb duhej t\u00eb rishkruanim \u00e7do detyr\u00eb p\u00ebr t'u p\u00ebrshtatur me ndonj\u00eb sistem t\u00eb Zbulimit t\u00eb Sh\u00ebrbimeve. Ka shum\u00eb pun\u00eb, madje n\u00eb disa raste \u00ebsht\u00eb e pamundur, sidomos kur flitet p\u00ebr pajisje t\u00eb nivelit t\u00eb ul\u00ebt q\u00eb funksionojn\u00eb n\u00eb nivelin e b\u00ebrtham\u00ebs s\u00eb sistemit operativ ose direkt me harduerin. Realizimi i k\u00ebsaj funksionaliteti me an\u00eb t\u00eb modeleve t\u00eb njohura t\u00eb zgjidhjeve, si p.sh. <noindex><a rel=\"nofollow\" href=\"https:\/\/linkerd.io\">side-car<\/a><\/noindex> do t\u00eb n\u00ebnkuptonte ndonj\u00ebher\u00eb ngarkes\u00eb shtes\u00eb, ndonj\u00ebher\u00eb - komplikim n\u00eb operacione dhe skenar\u00eb t\u00eb tjer\u00eb d\u00ebshtimi. Ne nuk d\u00ebshironim ta komplikonim k\u00ebt\u00eb, prandaj vendos\u00ebm q\u00eb p\u00ebrdorimi i Zbulimit t\u00eb Sh\u00ebrbimeve t\u00eb ishte opsional. <\/p>\n<p><\/p>\n<p>N\u00eb one-cloud, IP-ja i ndjek kontejnerin, dometh\u00ebn\u00eb \u00e7do instanc\u00eb e detyr\u00ebs ka adres\u00ebn e saj t\u00eb vetme IP. Kjo adres\u00eb \u00ebsht\u00eb \"statike\": ajo p\u00ebrfshihet p\u00ebr \u00e7do instanc\u00eb n\u00eb momentin e par\u00eb t\u00eb aktivizimit t\u00eb sh\u00ebrbimit n\u00eb cloud. N\u00ebse gjat\u00eb jet\u00ebs s\u00eb sh\u00ebrbimit ka pasur nj\u00eb num\u00ebr t\u00eb ndrysh\u00ebm instancash - at\u00ebher\u00eb n\u00eb p\u00ebrfundim do t\u00eb ket\u00eb aq shum\u00eb adresa IP sa instanca maksimale q\u00eb kan\u00eb ekzistuar.<\/p>\n<p><\/p>\n<p>Pas k\u00ebsaj, k\u00ebto adresa nuk ndryshojn\u00eb: ato i jan\u00eb caktuar nj\u00eb her\u00eb dhe vazhdojn\u00eb t\u00eb ekzistojn\u00eb gjat\u00eb gjith\u00eb jet\u00ebs s\u00eb sh\u00ebrbimit n\u00eb prodhim. Adresat IP i ndjekin kontejner\u00ebt p\u00ebrmes rrjetit. N\u00ebse nj\u00eb kontejner transferohet n\u00eb nj\u00eb minion tjet\u00ebr, at\u00ebher\u00eb adresa do t\u00eb kaloj\u00eb gjithashtu pas tij. <\/p>\n<p><\/p>\n<p>K\u00ebshtu, p\u00ebrputhja e emrit t\u00eb sh\u00ebrbimit me list\u00ebn e adresave t\u00eb tij IP ndryshon shum\u00eb rrall\u00eb. N\u00ebse her\u00eb tjet\u00ebr shohim emrat e instancave t\u00eb sh\u00ebrbimit, t\u00eb cilat i 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\u00ebrejm\u00eb se ato i ngjajn\u00eb FQDN-ve q\u00eb p\u00ebrdoren n\u00eb DNS. K\u00ebshtu, p\u00ebr t\u00eb shfaqur emrat e instancave t\u00eb sh\u00ebrbimeve n\u00eb IP-t\u00eb e tyre, ne p\u00ebrdorim protokollin DNS. N\u00eb fakt, ky DNS kthen t\u00eb gjitha adresat IP t\u00eb rezervuara p\u00ebr t\u00eb gjith\u00eb kontenier\u00ebt \u2014 si ata q\u00eb jan\u00eb n\u00eb pun\u00eb, ashtu edhe t\u00eb ndaluarit (p\u00ebr shembull, n\u00ebse p\u00ebrdoren tri replika, nd\u00ebrsa kemi pes\u00eb adresa t\u00eb rezervuara \u2014 t\u00eb pes\u00eb do t\u00eb kthehen). Klient\u00ebt, duke marr\u00eb k\u00ebt\u00eb informacion, do t\u00eb p\u00ebrpiqen t\u00eb lidhin me t\u00eb pes\u00eb replikat \u2014 dhe k\u00ebshtu do t\u00eb identifikojn\u00eb ata q\u00eb jan\u00eb n\u00eb pun\u00eb. Ky variant i p\u00ebrcaktimit t\u00eb disponueshm\u00ebris\u00eb \u00ebsht\u00eb duksh\u00ebm m\u00eb i besuesh\u00ebm, pasi nuk angazhon as DNS-n\u00eb, as Zbulimin e Sh\u00ebrbimeve, duke e b\u00ebr\u00eb k\u00ebshtu t\u00eb pamundur zgjidhjen e problemeve me ruajtjen e informacionit t\u00eb sakt\u00eb dhe q\u00ebndrueshm\u00ebrin\u00eb e k\u00ebtyre sistemeve. P\u00ebr m\u00eb tep\u00ebr, n\u00eb sh\u00ebrbime kritike, nga t\u00eb cilat varet funksionimi i portalit t\u00ebr\u00eb, ne mund t\u00eb mos p\u00ebrdorim fare DNS-n\u00eb, por thjesht t\u00eb shkruajm\u00eb adresat IP n\u00eb konfigurim.<\/p>\n<p><\/p>\n<p>Implementimi i nj\u00eb transferimi t\u00eb till\u00eb t\u00eb IP-ve pas kontenier\u00ebve mund t\u00eb jet\u00eb jo trivial \u2014 dhe do t\u00eb ndalemi n\u00eb at\u00eb se si funksionon, n\u00eb shembullin e ardhsh\u00ebm:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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-i i one-cloud jep komand\u00ebn minion-it M1 t\u00eb niste <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 e njofton k\u00ebt\u00eb adres\u00eb n\u00eb serverat e 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 paisjen rrjet\u00eb, n\u00eb t\u00eb cil\u00ebn transmetohet rruge e adres\u00ebs 1.1.1.1 te M1. M1 pastaj rrugeton paketat brenda kontenierit duke p\u00ebrdorur mjetet Linux. Ka tre server\u00eb route reflector, pasi kjo \u00ebsht\u00eb nj\u00eb pjes\u00eb shum\u00eb kritike e infrastruktur\u00ebs 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 shum\u00eb q\u00eb\u00ebsht\u00eb e mundur, n\u00eb salla t\u00eb ndryshme t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave, p\u00ebr t\u00eb minimizuar mund\u00ebsin\u00eb e d\u00ebshtimit t\u00eb nj\u00ebkohsh\u00ebm t\u00eb t\u00eb treve.<\/p>\n<p><\/p>\n<p>Tani le t\u00eb supozojm\u00eb se lidhja midis master-it one-cloud dhe minion-it M1 ka humbur. Master-i one-cloud tani do t\u00eb veproj\u00eb, duke u nisur nga supozimi se M1 ka d\u00ebshtuar plot\u00ebsisht. Do t\u00eb thot\u00eb se do t\u00eb jap\u00eb urdhrin minion-it M2 t\u00eb niste <strong>web.group1.web.front.prod<\/strong> me t\u00eb nj\u00ebjtin adres\u00eb 1.1.1.1. Tani kemi dy rrug\u00eb konfliktuale n\u00eb rrjet p\u00ebr 1.1.1.1: n\u00eb M1 dhe n\u00eb M2. P\u00ebr t\u00eb zgjidhur konflikte t\u00eb tilla, ne p\u00ebrdorim Multi Exit Discriminator, i cili specifikohet n\u00eb njoftimin BGP. Ky num\u00ebr tregon pesh\u00ebn e rrug\u00ebs s\u00eb njoftuar. Nga konfliktualet do t\u00eb zgjidhet rruga me vler\u00ebn m\u00eb t\u00eb vog\u00ebl MED. Masteri one-cloud mb\u00ebshtet MED si nj\u00eb pjes\u00eb integrale e IP adresave t\u00eb kontejner\u00ebve. N\u00eb her\u00ebn e par\u00eb adresa shp\u00ebrndahet me nj\u00eb MED mjaft t\u00eb madh = 1 000 000. N\u00eb situat\u00ebn e nj\u00eb transferimi t\u00eb till\u00eb emergjent t\u00eb kontejnerit, masteri e ul MED, dhe M2 tashm\u00eb do t\u00eb marr\u00eb komand\u00ebn t\u00eb njoftoj\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 ardhm\u00ebria e saj na intereson pak derisa t\u00eb rikthehet lidhja me masterin, kur do t\u00eb ndalet si nj\u00eb kopje e vjet\u00ebr.<\/p>\n<p><\/p>\n<h2 id=\"avarii\">Aksidentet<\/h2>\n<p><\/p>\n<p>T\u00eb gjitha sistemet e menaxhimit t\u00eb qendrave t\u00eb t\u00eb dh\u00ebnave gjithmon\u00eb e p\u00ebrballojn\u00eb me sukses d\u00ebshtimet e vogla. R\u00ebnia e kontejnerit \u00ebsht\u00eb nj\u00eb norm\u00eb pothuajse n\u00eb \u00e7do vend.<\/p>\n<p><\/p>\n<p>Le t\u00eb shqyrtojm\u00eb se si ne i p\u00ebrballojm\u00eb aksidentet, 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 aksident p\u00ebr sistemin e menaxhimit t\u00eb qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave? N\u00eb radh\u00eb t\u00eb par\u00eb, kjo \u00ebsht\u00eb nj\u00eb d\u00ebshtim masiv dhe nj\u00ebkoh\u00ebsisht i shum\u00eb makinave, dhe sistemi i menaxhimit duhet t\u00eb migroj\u00eb nj\u00eb num\u00ebr t\u00eb madh kontejner\u00ebsh nj\u00ebkoh\u00ebsisht. Por n\u00ebse aksidenti \u00ebsht\u00eb shum\u00eb i gjer\u00eb, ndodh q\u00eb t\u00eb gjitha detyrat nuk mund t\u00eb ricaktohen n\u00eb minibot\u00eb t\u00eb tjer\u00eb, sepse kapaciteti burimor i qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave bie n\u00ebn 100% t\u00eb ngarkes\u00ebs. <\/p>\n<p><\/p>\n<p>Shpesh aksidentet shoq\u00ebrohen me d\u00ebshtimin e nivelit menaxhues. Kjo mund t\u00eb ndodh\u00eb p\u00ebr shkak t\u00eb d\u00ebshtimit t\u00eb pajisjeve t\u00eb tij, por m\u00eb shpesh p\u00ebr shkak se aksidentet nuk testohet, dhe niveli menaxhues vet\u00eb bie nga ngarkesa e rritur. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebjm\u00eb me t\u00eb gjitha k\u00ebto?<\/p>\n<p><\/p>\n<p>Migrazione masive n\u00ebnkuptojn\u00eb se n\u00eb infrastruktur\u00eb krijohet nj\u00eb num\u00ebr i madh veprimesh, migracionesh dhe vendosjesh. \u00c7do migracion mund t\u00eb marr\u00eb nj\u00ebfar\u00eb kohe t\u00eb nevojshme p\u00ebr t\u00eb dor\u00ebzuar dhe paketa imazhet e kontejner\u00ebve deri te minibot\u00ebt, p\u00ebr t\u00eb nisur dhe inicializuar kontejner\u00ebt etj. Prandaj, \u00ebsht\u00eb e preferueshme q\u00eb detyrat m\u00eb t\u00eb r\u00ebnd\u00ebsishme t\u00eb nisin p\u00ebrpara atyre m\u00eb pak t\u00eb r\u00ebnd\u00ebsishme.<\/p>\n<p><\/p>\n<p>Le t\u00eb shohim p\u00ebrs\u00ebri hierarkin\u00eb e njohur t\u00eb sh\u00ebrbimeve dhe t\u00eb p\u00ebrpiqemi t\u00eb vendosim se cilat detyra d\u00ebshirojm\u00eb t\u00eb nisim fillimisht.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>Sigurisht, k\u00ebto jan\u00eb proceset q\u00eb marrin pjes\u00eb drejtp\u00ebrdrejt n\u00eb p\u00ebrpunimin e k\u00ebrkesave t\u00eb p\u00ebrdoruesve, pra, prod. Ne e specifikojm\u00eb k\u00ebt\u00eb me <strong>prioritetin e vendosjes<\/strong> \u2014 nj\u00eb num\u00ebr q\u00eb mund t'i caktohet radh\u00ebs. N\u00ebse ndonj\u00eb radh\u00eb ka nj\u00eb 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; n\u00eb batch \u2014 pak m\u00eb t\u00eb ul\u00ebta, 100; n\u00eb idle \u2014 akoma m\u00eb t\u00eb ul\u00ebta, 200. Prioritetet aplikohen n\u00eb m\u00ebnyr\u00eb hierarkike. T\u00eb gjitha detyrat n\u00ebn hierarkin\u00eb do t\u00eb ken\u00eb prioritetin p\u00ebrkat\u00ebs. N\u00ebse duam q\u00eb brenda prod caching t\u00eb nis\u00eb p\u00ebrpara frontend-eve, at\u00ebher\u00eb caktojm\u00eb prioritetet p\u00ebr cache = 0 dhe p\u00ebr frontin e n\u00ebnradh\u00ebs = 1. N\u00ebse, p\u00ebr shembull, duam q\u00eb nga frontet t\u00eb niset s\u00eb pari portali kryesor, nd\u00ebrsa fronti i muzik\u00ebs m\u00eb pas, mund t'i caktojm\u00eb k\u00ebtij t\u00eb fundit nj\u00eb prioritet m\u00eb t\u00eb ul\u00ebt \u2014 10.<\/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, nd\u00ebrsa kemi nisur kaq shum\u00eb sh\u00ebrbime saq\u00eb tani nuk ka burime t\u00eb mjaftueshme p\u00ebr t\u00eb gjith\u00eb. Duhet t\u00eb vendosim se p\u00ebr cilat detyra do t\u00eb sakrifikojm\u00eb q\u00eb sh\u00ebrbimet kryesore kritike t\u00eb funksionojn\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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>N\u00eb dallim nga prioriteti i vendosjes, nuk mund t\u00eb sakrifikojm\u00eb pa dallim t\u00eb gjitha detyrat batch, disa prej t\u00eb cilave jan\u00eb t\u00eb r\u00ebnd\u00ebsishme p\u00ebr funksionimin e portalit. Prandaj ne kemi ndar\u00eb ve\u00e7mas <strong>prioritetin e d\u00ebbimit<\/strong> t\u00eb detyrave. Kur vendoset, nj\u00eb detyr\u00eb me prioritet m\u00eb t\u00eb lart\u00eb mund t\u00eb d\u00ebboj\u00eb, pra, t\u00eb ndal\u00eb nj\u00eb detyr\u00eb me prioritet m\u00eb t\u00eb ul\u00ebt, n\u00ebse nuk ka m\u00eb minion t\u00eb lir\u00eb. N\u00eb k\u00ebt\u00eb rast, detyra me prioritet m\u00eb t\u00eb ul\u00ebt, me shum\u00eb mund\u00ebsi, do t\u00eb mbetet e pa vendosur, pra, p\u00ebr t\u00eb nuk do t\u00eb ket\u00eb m\u00eb minion t\u00eb p\u00ebrshtatsh\u00ebm me burime t\u00eb mjaftueshme t\u00eb lira.<\/p>\n<p><\/p>\n<p>N\u00eb hierarkin\u00eb ton\u00eb \u00ebsht\u00eb shum\u00eb e thjesht\u00eb t\u00eb specifikohet nj\u00eb prioritet i till\u00eb d\u00ebbimi, q\u00eb detyrat e prod dhe batch t\u00eb d\u00ebbojn\u00eb ose ndalin detyrat idle, por jo nj\u00ebra-tjetr\u00ebn, duke caktuar p\u00ebr idle nj\u00eb prioritet t\u00eb barabart\u00eb me 200. Po ashtu si n\u00eb rastin e prioritetit t\u00eb vendosjes, mund t\u00eb p\u00ebrdorim hierarkin\u00eb ton\u00eb p\u00ebr t\u00eb p\u00ebrshkruar rregulla m\u00eb t\u00eb komplikuara. P\u00ebr shembull, do t\u00eb specifikojm\u00eb se p\u00ebr funksionin e muzik\u00ebs do t\u00eb sakrifikojm\u00eb n\u00ebse na mungojn\u00eb burimet p\u00ebr portalin kryesor t\u00eb uebit, duke vendosur p\u00ebr nodet p\u00ebrkat\u00ebse prioritet m\u00eb t\u00eb ul\u00ebt: 10.<\/p>\n<p><\/p>\n<h2 id=\"avarii-dc-celikom\">Aksidentet e Qendr\u00ebs s\u00eb t\u00eb Dh\u00ebnave t\u00ebr\u00ebsisht<\/h2>\n<p><\/p>\n<p>Pse mund t\u00eb d\u00ebshtoj\u00eb e gjith\u00eb qendra e t\u00eb dh\u00ebnave? Natyror. Kishte nj\u00eb post t\u00eb shk\u00eblqyer se si <noindex><a rel=\"nofollow\" href=\"https:\/\/habrahabr.ru\/company\/dataline\/blog\/333578\/\">uragani ndikoi n\u00eb funksionimin e qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave<\/a><\/noindex>. Elementi i jasht\u00ebm mund t\u00eb p\u00ebrfshijn\u00eb ata q\u00eb me nj\u00eb her\u00eb n\u00eb nj\u00eb kolektor dogj\u00ebn fiber optik\u00eb dhe qendra e t\u00eb dh\u00ebnave humbi plot\u00ebsisht lidhjen me vendet e tjera. Shkaqet e daljes jasht\u00eb funksionit ndodhin gjithashtu p\u00ebr shkak t\u00eb faktor\u00ebve njer\u00ebzor\u00eb: operatori mund t\u00eb jap\u00eb nj\u00eb komand\u00eb t\u00eb till\u00eb q\u00eb e b\u00ebn t\u00ebr\u00ebsisht t\u00eb pamundur qendr\u00ebn e t\u00eb dh\u00ebnave. Kjo mund t\u00eb ndodh\u00eb p\u00ebr shkak t\u00eb nj\u00eb defekti t\u00eb madh. N\u00eb p\u00ebrgjith\u00ebsi, qendrat e t\u00eb dh\u00ebnave bie \u2014 nuk \u00ebsht\u00eb nj\u00eb fenomen i zakont\u00eb. Kjo ndodh nj\u00eb her\u00eb n\u00eb disa muaj. <\/p>\n<p><\/p>\n<p>Dhe ja se \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 \u00ebsht\u00eb izolimi. \u00c7do instanc\u00eb e one-cloud \u00ebsht\u00eb e izoluar dhe mund t\u00eb menaxhoj\u00eb makinat vet\u00ebm e nj\u00eb qend\u00ebr t\u00eb dh\u00ebnash. Pra, humbja e nj\u00eb reje p\u00ebr shkak t\u00eb defekteve ose komandave t\u00eb gabuara t\u00eb operatorit \u2014 \u00ebsht\u00eb humbje vet\u00ebm e nj\u00eb qend\u00ebr t\u00eb dh\u00ebnash. Jemi t\u00eb p\u00ebrgatitur p\u00ebr k\u00ebt\u00eb: ekziston nj\u00eb politik\u00eb rezervimi, ku replika 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 t\u00eb dh\u00ebnave t\u00eb q\u00ebndrueshme dhe rregullisht testojm\u00eb d\u00ebshtimet.<br \/>\nDuke patur parasysh se sot kemi kat\u00ebr qendra t\u00eb t\u00eb dh\u00ebnash, ka edhe kat\u00ebr eksperimentale t\u00eb plota dhe t\u00eb izoluar t\u00eb one-cloud.<\/p>\n<p><\/p>\n<p>Ky qasje jo vet\u00ebm q\u00eb mbron nga d\u00ebshtimet fizike, por gjithashtu mund t\u00eb mbroj\u00eb nga gabimet e operatorit.<\/p>\n<p><\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebjm\u00eb p\u00ebr faktor\u00ebt njer\u00ebzor\u00eb? Kur operatori i jep re nj\u00eb komand\u00eb t\u00eb \u00e7uditshme ose potencialisht t\u00eb rrezikshme, ai mund t\u00eb k\u00ebrkohet papritur t\u00eb zgjidh\u00eb nj\u00eb problem t\u00eb vog\u00ebl p\u00ebr t\u00eb verifikuar se sa mir\u00eb ka menduar. P\u00ebr shembull, n\u00ebse \u00ebsht\u00eb nj\u00eb ndalje masive e shum\u00eb replikave ose thjesht nj\u00eb komand\u00eb e \u00e7uditshme \u2014 reduktimi 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=\"One-cloud - OS e nivelit t\u00eb qendr\u00ebs s\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\u00ebrfundime<\/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 vizuale e emrave t\u00eb sh\u00ebrbimeve dhe kontejner\u00ebve<\/strong>, e cila lejon shum\u00eb shpejt t\u00eb kuptoni se \u00e7far\u00eb \u00ebsht\u00eb kjo detyr\u00eb, p\u00ebr \u00e7far\u00eb i takon dhe si punon dhe kush \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr t\u00eb. <\/li>\n<li>Ne p\u00ebrdorim teknik\u00ebn ton\u00eb <strong>t\u00eb bashkimit t\u00eb detyrave prod- dhe batch-<\/strong>n\u00eb minj, p\u00ebr t\u00eb rritur efikasitetin e ndarjes s\u00eb makinave. N\u00eb vend t\u00eb cpuset p\u00ebrdorim quota t\u00eb CPU, aksione, politika t\u00eb planifikuesit t\u00eb CPU dhe Linux QoS.<\/li>\n<li>Nuk arrit\u00ebm t\u00eb izolojm\u00eb plot\u00ebsisht kontejner\u00ebt q\u00eb punojn\u00eb n\u00eb 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 eliminimin automatik t\u00eb emergjencave 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 mini. Nd\u00ebrsa detyrat prodhuese mund t\u00eb vendosen me rezervimin e thjesht\u00eb t\u00eb burimeve, detyrat batch dhe idle duhet t\u00eb vendosen duke ndjekur shfryt\u00ebzimin e v\u00ebrtet\u00eb t\u00eb burimeve n\u00eb makinat mini. <\/li>\n<li>Nevoja p\u00ebr t\u00eb marr\u00eb parasysh burimet e konsumuar nga detyrat, si\u00e7 jan\u00eb: \n<ul>\n<li>kapaciteti i rrjetit;<\/li>\n<li>tipet dhe \"spindlet\" e disqeve.<\/li>\n<\/ul>\n<\/li>\n<li>Nevoja p\u00ebr t\u00eb specifikuar prioritetet e sh\u00ebrbimeve gjat\u00eb largimit t\u00eb aksidenteve, t\u00eb drejtat dhe kuotat e ekipeve p\u00ebr burimet, q\u00eb arrihet 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 reagimit ndaj aksidenteve dhe incidenteve.<\/li>\n<li>Pamund\u00ebsia p\u00ebr t\u00eb zbatuar nj\u00ebkoh\u00ebsisht n\u00eb m\u00ebnyr\u00eb universale Zbulimin e Sh\u00ebrbimeve; nevoja p\u00ebr t\u00eb bashk\u00ebjetuar p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb me detyrat e vendosura n\u00eb host\u00ebt harduerik\u00eb, e cila zgjidhet me adresat IP \"statike\", q\u00eb ndjekin kontejner\u00ebt, dhe si pasoj\u00eb, nevoja p\u00ebr nj\u00eb integrim unik me infrastruktur\u00ebn e gjer\u00eb rrjetore.<\/li>\n<\/ul>\n<p><\/p>\n<p>T\u00eb gjitha k\u00ebto funksione do t\u00eb k\u00ebrkonin rikonstruksione t\u00eb thella t\u00eb zgjidhjeve ekzistuese dhe, duke vler\u00ebsuar sasin\u00eb e pun\u00ebs, ne kuptuam se mund t\u00eb zhvillonim nj\u00eb zgjidhje ton\u00ebn me t\u00eb nj\u00ebjtat shpenzime pune. Por zgjidhja jon\u00eb do t\u00eb ishte ndjesh\u00ebm m\u00eb e leht\u00eb p\u00ebr t'u eksploruar dhe zhvilluar - nuk ka abstraksione t\u00eb panevojshme q\u00eb mb\u00ebshtesin funksionalitetin e panevojsh\u00ebm p\u00ebr ne. <\/p>\n<p><\/p>\n<p>Atyre q\u00eb lexojn\u00eb rreshtat e fundit - faleminderit p\u00ebr q\u00ebndrueshm\u00ebrin\u00eb 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.2.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.2.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 n\u00eb nivel qendrash t\u00eb t\u00eb dh\u00ebnave n\u00eb Odnoklassniki | ProHoster","description":"Aloha, 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}]}}