{"id":87282,"date":"2020-07-06T13:44:51","date_gmt":"2020-07-06T11:44:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury"},"modified":"2021-02-01T11:41:48","modified_gmt":"2021-02-01T09:41:48","slug":"ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury","title":{"rendered":"Od \u201estartup\u2019u\u201d do tysi\u0105ca serwer\u00f3w w dziesi\u0119ciu centrach danych. Jak goni\u0142y\u015bmy wzrost infrastruktury Linux.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Je\u015bli Twoja infrastruktura IT rozwija si\u0119 zbyt szybko, pr\u0119dzej czy p\u00f3\u017aniej napotkasz decyzj\u0119 \u2013 liniowo zwi\u0119ksza\u0107 zasoby ludzkie do jej utrzymania czy rozpocz\u0105\u0107 automatyzacj\u0119. Do pewnego momentu \u017cyli\u015bmy w pierwszej paradygmacie, a potem rozpocz\u0105\u0142 si\u0119 d\u0142ugi proces przej\u015bcia do Infrastructure-as-Code.<\/p>\n<p><img decoding=\"async\" alt=\"Od \u201estartup\u2019u\u201d do tysi\u0105ca serwer\u00f3w w dziesi\u0119ciu centrach danych. Jak goni\u0142y\u015bmy wzrost infrastruktury Linux.\" src=\"\/wp-content\/uploads\/2020\/07\/adbcf170e3e0f794355eb1eb052585c1.jpg\" style=\"display:block;margin: 0 auto;\"><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nOczywi\u015bcie, NSPK to nie startup, ale taka atmosfera panowa\u0142a w firmie w pierwszych latach jej istnienia, a by\u0142y to bardzo interesuj\u0105ce lata. Nazywam si\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/users\/dkorn\/\">Dmitry Koryakov<\/a><\/noindex>, od ponad 10 lat zajmuj\u0119 si\u0119 utrzymywaniem infrastruktury Linux o wysokich wymaganiach dost\u0119pno\u015bci. Do zespo\u0142u NSPK do\u0142\u0105czy\u0142em w styczniu 2016 roku i, niestety, nie do\u015bwiadczy\u0142em samego pocz\u0105tku istnienia firmy, ale przyszed\u0142em na etapie du\u017cych zmian.<\/p>\n<p>Og\u00f3lnie mo\u017cna powiedzie\u0107, \u017ce nasz zesp\u00f3\u0142 dostarcza dla firmy 2 produkty. Pierwszy to infrastruktura. Poczta musi dzia\u0142a\u0107, DNS musi funkcjonowa\u0107, a kontrolery domeny musz\u0105 umo\u017cliwia\u0107 dost\u0119p do serwer\u00f3w, kt\u00f3re nie mog\u0105 zawodzi\u0107. Krajobraz IT firmy jest ogromny! To systemy krytyczne dla biznesu i misji, a wymagania dotycz\u0105ce dost\u0119pno\u015bci niekt\u00f3rych si\u0119gaj\u0105 99,999. Drugi produkt to same serwery, fizyczne i wirtualne. Nale\u017cy dba\u0107 o istniej\u0105ce, a nowe regularnie dostarcza\u0107 klientom z wielu dzia\u0142\u00f3w. W tym artykule chcia\u0142bym skupi\u0107 si\u0119 na tym, jak rozwijali\u015bmy infrastruktur\u0119, kt\u00f3ra odpowiada za cykl \u017cycia <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/server\/\"   title=\"serwer\u00f3w\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1507\">serwer\u00f3w<\/a>.<\/p>\n<p><b>Pocz\u0105tek drogi<\/b><\/p>\n<p>Na pocz\u0105tku naszej drogi nasz stos technologii wygl\u0105da\u0142 tak:<br \/>\n<i>OS CentOS 7<br \/>\nKontrolery domeny FreeIPA<br \/>\nAutomatyzacja \u2014 Ansible(+Tower), Cobbler<\/i><\/p>\n<p>Wszystko to by\u0142o rozmieszczone w 3 domenach, roz\u0142o\u017conych na kilku DC. W jednym DC \u2013 systemy biurowe i testowe, w pozosta\u0142ych PRODUCTION.<\/p>\n<p>Tworzenie serwer\u00f3w w pewnym momencie wygl\u0105da\u0142o tak:<\/p>\n<p><img decoding=\"async\" alt=\"Od \u201estartup\u2019u\u201d do tysi\u0105ca serwer\u00f3w w dziesi\u0119ciu centrach danych. Jak goni\u0142y\u015bmy wzrost infrastruktury Linux.\" src=\"\/wp-content\/uploads\/2020\/07\/2cc6209276489dc6e9d1bf46236d3785.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>W szablonie VM CentOS minimal i niezb\u0119dny minimum, jak poprawny \/etc\/resolv.conf, reszta przychodzi przez Ansible.<\/p>\n<p>CMDB \u2013 Excel.<\/p>\n<p>Je\u015bli serwer jest fizyczny, to zamiast kopiowa\u0107 wirtualn\u0105 maszyn\u0119 na niego instalowany by\u0142 system operacyjny za pomoc\u0105 Cobbler \u2013 do konfiguracji Cobbler dodawane s\u0105 adresy MAC docelowego serwera, serwer przez DHCP uzyskuje adres IP, a nast\u0119pnie instalowany jest system operacyjny.<\/p>\n<p>Na pocz\u0105tku starali\u015bmy si\u0119 nawet stosowa\u0107 pewne zarz\u0105dzanie konfiguracj\u0105 w Cobbler. Jednak z czasem przynios\u0142o to problemy z przeno\u015bno\u015bci\u0105 konfiguracji zar\u00f3wno do innych DC, jak i do kodu Ansible do przygotowania VM.<\/p>\n<p>Ansible by\u0142 w\u00f3wczas postrzegany przez wielu z nas jako wygodne rozszerzenie Bash i nie oszcz\u0119dzali\u015bmy na konstrukcjach z u\u017cyciem shell, sed. Generalnie Bashsible. Ostatecznie prowadzi\u0142o to do sytuacji, \u017ce je\u017celi playbook z jakiego\u015b powodu nie dzia\u0142a\u0142 na serwerze, \u0142atwiej by\u0142o usun\u0105\u0107 serwer, poprawi\u0107 playbook i uruchomi\u0107 go ponownie. W zasadzie nie by\u0142o \u017cadnego wersjonowania skrypt\u00f3w, ani przeno\u015bno\u015bci konfiguracji.<\/p>\n<p>Na przyk\u0142ad, chcieli\u015bmy zmieni\u0107 jaki\u015b konfiguracj\u0119 na wszystkich serwerach:<\/p>\n<ol>\n<li>Zmiana konfiguracji na istniej\u0105cych serwerach w logicznym segmencie \/ centrum danych. Czasami nie jest to kwestia jednego dnia \u2013 wymagania dotycz\u0105ce dost\u0119pno\u015bci i prawo wielkich liczb uniemo\u017cliwiaj\u0105 wprowadzanie wszystkich zmian jednocze\u015bnie. A niekt\u00f3re zmiany potencjalnie mog\u0105 by\u0107 destrukcyjne i wymagaj\u0105 restartu czego\u015b \u2013 od us\u0142ug do samego systemu operacyjnego.<\/li>\n<li>Poprawiamy w Ansible<\/li>\n<li>Poprawiamy w Cobbler<\/li>\n<li>Powtarzamy N razy dla ka\u017cdego logicznego segmentu \/ centrum danych<\/li>\n<\/ol>\n<p>Aby wszystkie zmiany przebiega\u0142y g\u0142adko, nale\u017ca\u0142o uwzgl\u0119dni\u0107 wiele czynnik\u00f3w, a zmiany zachodz\u0105 nieustannie.<\/p>\n<ul>\n<li>Refaktoryzacja kodu ansible, plik\u00f3w konfiguracyjnych<\/li>\n<li>Zmiana wewn\u0119trznych best practices<\/li>\n<li>Zmiany w wyniku analizy incydent\u00f3w \/ awarii<\/li>\n<li>Zmiana standard\u00f3w bezpiecze\u0144stwa, zar\u00f3wno wewn\u0119trznych, jak i zewn\u0119trznych. Na przyk\u0142ad, PCI DSS co roku uzupe\u0142niane jest nowymi wymaganiami<\/li>\n<\/ul>\n<p><b>Rozw\u00f3j infrastruktury i pocz\u0105tek drogi<\/b><\/p>\n<p>Liczba serwer\u00f3w \/ logicznych domen \/ centrum danych ros\u0142a, a wraz z nimi liczba b\u0142\u0119d\u00f3w w konfiguracjach. W pewnym momencie doszli\u015bmy do trzech kierunk\u00f3w, w kt\u00f3re trzeba rozwija\u0107 zarz\u0105dzanie konfiguracj\u0105:<\/p>\n<ol>\n<li>Automatyzacja. W miar\u0119 mo\u017cliwo\u015bci nale\u017cy unika\u0107 czynnika ludzkiego w powtarzalnych operacjach.<\/li>\n<li>Powtarzalno\u015b\u0107. Zarz\u0105dzanie infrastruktur\u0105 jest znacznie \u0142atwiejsze, gdy jest ona przewidywalna. Konfiguracja serwer\u00f3w i narz\u0119dzi do ich przygotowania powinna by\u0107 wsz\u0119dzie identyczna. Jest to r\u00f3wnie\u017c wa\u017cne dla zespo\u0142\u00f3w produktowych \u2013 aplikacja powinna pewnie trafi\u0107 do \u015brodowiska produkcyjnego po testach, skonfigurowana analogicznie do \u015brodowiska testowego.<\/li>\n<li>Prostota i przejrzysto\u015b\u0107 wprowadzania zmian w zarz\u0105dzaniu konfiguracj\u0105.<\/li>\n<\/ol>\n<p>Pozosta\u0142o doda\u0107 kilka narz\u0119dzi.<\/p>\n<p>Jako magazyn kodu wybrali\u015bmy GitLab CE, nie bez znaczenia za spraw\u0105 wbudowanych modu\u0142\u00f3w CI \/ CD.<\/p>\n<p>Magazyn sekret\u00f3w \u2014 Hashicorp Vault, r\u00f3wnie\u017c za wspania\u0142e API.<\/p>\n<p>Testowanie konfiguracji i r\u00f3l Ansible \u2013 Molecule+Testinfra. Testy przebiegaj\u0105 znacznie szybciej, je\u015bli u\u017cywasz mitogen w Ansible. R\u00f3wnolegle zacz\u0119li\u015bmy pisa\u0107 w\u0142asn\u0105 CMDB oraz orkiestrator do automatycznego wdra\u017cania (na zdj\u0119ciu nad Cobblerem), ale to ju\u017c zupe\u0142nie inna historia, o kt\u00f3rej w przysz\u0142o\u015bci opowie m\u00f3j kolega i g\u0142\u00f3wny deweloper tych system\u00f3w.<\/p>\n<p>Nasz wyb\u00f3r:<\/p>\n<p><i>Molecule + Testinfra<br \/>\nAnsible + Tower + AWX<br \/>\n\u015awiat Serwer\u00f3w + DITNET (W\u0142asny rozw\u00f3j)<br \/>\nCobbler<br \/>\nGitlab + GitLab runner<br \/>\nHashicorp Vault<br \/>\n<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Od \u201estartup\u2019u\u201d do tysi\u0105ca serwer\u00f3w w dziesi\u0119ciu centrach danych. Jak goni\u0142y\u015bmy wzrost infrastruktury Linux.\" src=\"\/wp-content\/uploads\/2020\/07\/e84263618966f757e76d0384c9da276d.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Swoj\u0105 drog\u0105, je\u015bli chodzi o role Ansible. Z pocz\u0105tku by\u0142a jedna, po kilku refaktoryzacjach powsta\u0142o ich 17. Kategorycznie polecam dzieli\u0107 monolit na idempotentne role, kt\u00f3re mo\u017cna p\u00f3\u017aniej uruchamia\u0107 oddzielnie, dodatkowo mo\u017cna doda\u0107 tagi. My podzielili\u015bmy role wed\u0142ug funkcjonalno\u015bci \u2013 sie\u0107, logowanie, pakiety, sprz\u0119t, moleku\u0142y itd. Og\u00f3lnie trzymali\u015bmy si\u0119 strategii poni\u017cej. Nie twierdz\u0119, \u017ce to jedyna prawda, ale u nas zadzia\u0142a\u0142o.<\/p>\n<ul>\n<li><b>Kopiowanie serwer\u00f3w z 'z\u0142otego obrazu' \u2013 z\u0142o!<\/b>Z g\u0142\u00f3wnych wad \u2013 nie wiesz dok\u0142adnie, w jakim stanie s\u0105 obrazy, a wszystkie zmiany dotr\u0105 do wszystkich obraz\u00f3w we wszystkich farmach wirtualizacji.<\/li>\n<li><b>U\u017cywaj domy\u015blnych plik\u00f3w konfiguracyjnych w minimum i uzgodnij z innymi dzia\u0142ami, \u017ce za g\u0142\u00f3wne pliki systemowe odpowiadasz Ty.<\/b>, na przyk\u0142ad:\n<ol>\n<li>Pozostaw \/etc\/sysctl.conf pustym, ustawienia powinny by\u0107 tylko w \/etc\/sysctl.d\/. Tw\u00f3j domy\u015blny plik w jednym miejscu, a niestandardowy dla aplikacji w innym.<\/li>\n<li>U\u017cywaj plik\u00f3w override do edytowania jednostek systemd.<\/li>\n<\/ol>\n<\/li>\n<li><b>Szablonuj wszystkie konfiguracje i dodawaj je w ca\u0142o\u015bci, je\u015bli to mo\u017cliwe, unikaj sed i jego odpowiednik\u00f3w w playbookach.<\/b><\/li>\n<li><b>Refaktoryzuj\u0105c kod systemu zarz\u0105dzania konfiguracj\u0105:<\/b>\n<ol>\n<li>Podziel zadania na logiczne jednostki i przekszta\u0142\u0107 monolit w role.<\/li>\n<li>U\u017cywaj linter\u00f3w! Ansible-lint, yaml-lint itd.<\/li>\n<li>Zmie\u0144 podej\u015bcie! \u017badnego bashsible. Nale\u017cy opisa\u0107 stan systemu.<\/li>\n<\/ol>\n<\/li>\n<li><b>Do wszystkich r\u00f3l Ansible nale\u017cy napisa\u0107 testy w molekule i generowa\u0107 raporty raz dziennie.<\/b><\/li>\n<li>W naszym przypadku, po przygotowaniu test\u00f3w (kt\u00f3rych jest ponad 100) znaleziono oko\u0142o 70000 b\u0142\u0119d\u00f3w. Poprawiali\u015bmy je przez kilka miesi\u0119cy.<img decoding=\"async\" alt=\"Od \u201estartup\u2019u\u201d do tysi\u0105ca serwer\u00f3w w dziesi\u0119ciu centrach danych. Jak goni\u0142y\u015bmy wzrost infrastruktury Linux.\" src=\"\/wp-content\/uploads\/2020\/07\/afa87e6305ef99a7ed6bdab0bc78a433.jpg\" style=\"display:block;margin: 0 auto;\"><\/li>\n<\/ul>\n<p><b>Nasza realizacja<\/b><\/p>\n<p>I tak, role Ansible zosta\u0142y przygotowane, zszablonowane i sprawdzone przez lintery. I nawet gity wsz\u0119dzie zosta\u0142y uruchomione. Ale kwestia niezawodnego dostarczania kodu do r\u00f3\u017cnych segment\u00f3w pozosta\u0142a otwarta. Postanowili\u015bmy zsynchronizowa\u0107 skrypty. Wygl\u0105da to tak:<\/p>\n<p><img decoding=\"async\" alt=\"Od \u201estartup\u2019u\u201d do tysi\u0105ca serwer\u00f3w w dziesi\u0119ciu centrach danych. Jak goni\u0142y\u015bmy wzrost infrastruktury Linux.\" src=\"\/wp-content\/uploads\/2020\/07\/7c850301b5838b295d75834374e09b9f.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Po tym, jak wprowadzone zostan\u0105 zmiany, uruchamiany jest CI, tworzony jest serwer testowy, wdra\u017cane s\u0105 role, a testy s\u0105 wykonywane przy u\u017cyciu Molecule. Je\u015bli wszystko jest w porz\u0105dku, kod trafia do ga\u0142\u0119zi produkcyjnej. Nie stosujemy jednak nowego kodu automatycznie na istniej\u0105ce serwery. To swoisty hamulec, kt\u00f3ry jest niezb\u0119dny dla zapewnienia wysokiej dost\u0119pno\u015bci naszych system\u00f3w. A gdy infrastruktura staje si\u0119 ogromna, wchodzi r\u00f3wnie\u017c prawo wielkich liczb \u2013 nawet je\u015bli jeste\u015b pewny, \u017ce zmiana jest nieszkodliwa, mo\u017ce ona prowadzi\u0107 do smutnych konsekwencji.<\/p>\n<p>Istnieje wiele opcji tworzenia serwer\u00f3w. Ostatecznie zdecydowali\u015bmy si\u0119 na spersonalizowane skrypty w Pythonie. A do CI u\u017cywamy Ansible:<\/p>\n<pre><code class=\"json\">- name: create1.yml - Utw\u00f3rz VM z szablonu\n  vmware_guest:\n    hostname: \"{{datacenter}}\".domain.pl\n    username: \"{{ username_vc }}\"\n    password: \"{{ password_vc }}\"\n    validate_certs: no\n    cluster: \"{{cluster}}\"\n    datacenter: \"{{datacenter}}\"\n    name: \"{{ name }}\"\n    state: poweredon\n    folder: \"\\\/{{folder}}\"\n    template: \"{{template}}\"\n    customization:\n      hostname: \"{{ name }}\"\n      domain: domain.pl\n      dns_servers:\n        - \"{{ ipa1_dns }}\"\n        - \"{{ ipa2_dns }}\"\n    networks:\n      - name: \"{{ network }}\"\n        type: static\n        ip: \"{{ip}}\"\n        netmask: \"{{netmask}}\"\n        gateway: \"{{gateway}}\"\n        wake_on_lan: True\n        start_connected: True\n        allow_guest_control: True\n    wait_for_ip_address: yes\n    disk:\n      - size_gb: 1\n        type: thin\n        datastore: \"{{datastore}}\"\n      - size_gb: 20\n        type: thin\n        datastore: \"{{datastore}}\"<\/code><\/pre>\n<p>Oto do czego doszli\u015bmy, system wci\u0105\u017c \u017cyje i rozwija si\u0119.<\/p>\n<ul>\n<li>17 r\u00f3l Ansible do konfiguracji serwera. Ka\u017cda z r\u00f3l przeznaczona jest do rozwi\u0105zania odr\u0119bnego zadania logicznego (logowanie, audyt, autoryzacja u\u017cytkownik\u00f3w, monitorowanie itp.).<\/li>\n<li>Testowanie r\u00f3l. Molecule + TestInfra.<\/li>\n<li>W\u0142asny rozw\u00f3j: CMDB + Orkiestrator.<\/li>\n<li>Czas tworzenia serwera to ~30 minut, zautomatyzowane i praktycznie niezale\u017cne od kolejki zada\u0144.<\/li>\n<li>Jednolity stan\/nazewnictwo infrastruktury we wszystkich segmentach \u2013 playbooki, repozytoria, elementy wirtualizacji.<\/li>\n<li>Codzienna kontrola stanu serwer\u00f3w z generowaniem raport\u00f3w o rozbie\u017cno\u015bciach z wzorcem.<\/li>\n<\/ul>\n<p>Mam nadziej\u0119, \u017ce moja historia b\u0119dzie pomocna dla tych, kt\u00f3rzy s\u0105 na pocz\u0105tku drogi. A jaki stos automatyzacji stosujecie wy?<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nspk\/blog\/509460\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 IT \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u043e, \u0432\u044b \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u0442\u0435\u0441\u044c \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u2013 \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0434\u0441\u043a\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e. \u0414\u043e \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043c\u044b \u0436\u0438\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u0434\u043e\u043b\u0433\u0438\u0439 \u043f\u0443\u0442\u044c \u043a Infrastructure-as-Code. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u041d\u0421\u041f\u041a \u2013 \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u0430\u043f, \u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0430 \u0446\u0430\u0440\u0438\u043b\u0430 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0432 \u043f\u0435\u0440\u0432\u044b\u0435 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87283,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87282","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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 IT \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u043e, \u0432\u044b \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u0442\u0435\u0441\u044c \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u2013 \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0434\u0441\u043a\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e.\" \/>\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\/pl\/blog\/administrirovanie\/ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\udd47\u041e\u0442 \u201c\u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430\u201d \u0434\u043e \u0442\u044b\u0441\u044f\u0447 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0435 \u0426\u041e\u0414. \u041a\u0430\u043a \u043c\u044b \u0433\u043d\u0430\u043b\u0438\u0441\u044c \u0437\u0430 \u0440\u043e\u0441\u0442\u043e\u043c Linux \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 IT \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u043e, \u0432\u044b \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u0442\u0435\u0441\u044c \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u2013 \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0434\u0441\u043a\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury\" \/>\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-07-06T11:44:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-02-01T09:41:48+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\udd47Od \u201estartup\u2019u\u201d do tysi\u0119cy serwer\u00f3w w dziesi\u0105tkach centr\u00f3w danych. Jak goni\u0142y\u015bmy rozw\u00f3j infrastruktury Linux | ProHoster","description":"Je\u015bli wasza infrastruktura IT ro\u015bnie zbyt szybko, pr\u0119dzej czy p\u00f3\u017aniej napotkacie wyb\u00f3r \u2013 liniowo zwi\u0119ksza\u0107 zasoby ludzkie do jej wsparcia czy rozpocz\u0105\u0107 automatyzacj\u0119.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\udd47\u041e\u0442 \u201c\u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430\u201d \u0434\u043e \u0442\u044b\u0441\u044f\u0447 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0435 \u0426\u041e\u0414. \u041a\u0430\u043a \u043c\u044b \u0433\u043d\u0430\u043b\u0438\u0441\u044c \u0437\u0430 \u0440\u043e\u0441\u0442\u043e\u043c Linux \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b | ProHoster","og:description":"\u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 IT \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u043e, \u0432\u044b \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u0442\u0435\u0441\u044c \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u2013 \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0434\u0441\u043a\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury","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-07-06T11:44:51+00:00","article:modified_time":"2021-02-01T09:41:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87282","title":null,"description":"","keywords":"","keyphrases":null,"primary_term":null,"canonical_url":"","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 13:55:30","updated":"2026-02-09 16:50:33","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/87282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=87282"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/87282\/revisions"}],"predecessor-version":[{"id":158751,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/87282\/revisions\/158751"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/87283"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=87282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=87282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=87282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}