{"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\/pt\/blog\/administrirovanie\/ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury","title":{"rendered":"De \"startup\" a milhares de servidores em dez data centers. Como buscamos o crescimento da infraestrutura Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Se a sua infraestrutura de TI est\u00e1 crescendo rapidamente, mais cedo ou mais tarde voc\u00ea ter\u00e1 que enfrentar a decis\u00e3o de aumentar linearmente os recursos humanos para seu suporte ou come\u00e7ar a automa\u00e7\u00e3o. At\u00e9 certo ponto, vivemos na primeira paradigma, e depois come\u00e7ou um longo caminho em dire\u00e7\u00e3o ao Infrastructure-as-Code.<\/p>\n<p><img decoding=\"async\" alt=\"De &quot;startup&quot; a milhares de servidores em dez data centers. Como buscamos o crescimento da infraestrutura 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 \/>\n\u00c9 claro que a NSPK n\u00e3o \u00e9 uma startup, mas essa atmosfera reinava na empresa nos primeiros anos de exist\u00eancia, e foram anos muito interessantes. Meu nome \u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/users\/dkorn\/\">Dmitry Koryakov<\/a><\/noindex>, h\u00e1 mais de 10 anos eu suporte a infraestrutura Linux com altos requisitos de disponibilidade. Entrei para a equipe da NSPK em janeiro de 2016 e, infelizmente, n\u00e3o vivenciei o in\u00edcio da exist\u00eancia da empresa, mas cheguei em um momento de grandes mudan\u00e7as.<\/p>\n<p>De maneira geral, pode-se dizer que nossa equipe oferece 2 produtos para a empresa. O primeiro \u2013 \u00e9 a infraestrutura. O e-mail deve funcionar, o DNS deve operar, e os controladores de dom\u00ednio \u2013 devem permitir acesso aos servidores, que n\u00e3o podem falhar. O cen\u00e1rio de TI da empresa \u00e9 imenso! S\u00e3o sistemas cr\u00edticos para os neg\u00f3cios e miss\u00f5es, com requisitos de disponibilidade de alguns \u2013 99,999. O segundo produto \u2013 s\u00e3o os pr\u00f3prios servidores, f\u00edsicos e virtuais. \u00c9 necess\u00e1rio monitorar os existentes e fornecer novos regularmente aos clientes de v\u00e1rias divis\u00f5es. Neste artigo, quero enfatizar como n\u00f3s desenvolvemos a infraestrutura que \u00e9 respons\u00e1vel pelo ciclo de vida <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/server\/\"   title=\"servidores\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1507\">servidores<\/a>.<\/p>\n<p><b>In\u00edcio da jornada<\/b><\/p>\n<p>No in\u00edcio, nosso stack de tecnologias parecia assim:<br \/>\n<i>OS CentOS 7<br \/>\nControladores de dom\u00ednio FreeIPA<br \/>\nAutoma\u00e7\u00e3o \u2013 Ansible(+Tower), Cobbler<\/i><\/p>\n<p>Tudo isso estava distribu\u00eddo em 3 dom\u00ednios, espalhados por v\u00e1rios data centers. Em um data center \u2013 sistemas de escrit\u00f3rio e ambientes de teste, nos outros, produ\u00e7\u00e3o.<\/p>\n<p>A cria\u00e7\u00e3o de servidores em algum momento parecia assim:<\/p>\n<p><img decoding=\"async\" alt=\"De &quot;startup&quot; a milhares de servidores em dez data centers. Como buscamos o crescimento da infraestrutura Linux\" src=\"\/wp-content\/uploads\/2020\/07\/2cc6209276489dc6e9d1bf46236d3785.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>No template VM CentOS minimal e o m\u00ednimo necess\u00e1rio, como um correto \/etc\/resolv.conf, o restante \u00e9 obtido atrav\u00e9s do Ansible.<\/p>\n<p>CMDB \u2013 Excel.<\/p>\n<p>Se o servidor \u00e9 f\u00edsico, em vez de copiar a m\u00e1quina virtual, o sistema operacional \u00e9 instalado usando o Cobbler \u2013 os endere\u00e7os MAC do servidor de destino s\u00e3o adicionados \u00e0 configura\u00e7\u00e3o do Cobbler, o servidor recebe um endere\u00e7o IP via DHCP, e ent\u00e3o o sistema operacional \u00e9 instalado.<\/p>\n<p>No in\u00edcio, tent\u00e1vamos at\u00e9 fazer algum gerenciamento de configura\u00e7\u00e3o no Cobbler. Mas, com o tempo, isso come\u00e7ou a trazer problemas de portabilidade das configura\u00e7\u00f5es tanto para outros data centers quanto para o c\u00f3digo do Ansible para preparar a VM.<\/p>\n<p>Durante um tempo, muitos de n\u00f3s viam o Ansible como uma extens\u00e3o conveniente do Bash e n\u00e3o economiz\u00e1vamos nas constru\u00e7\u00f5es usando shell, sed. Em resumo, Bashsible. Isso acabava resultando em um cen\u00e1rio onde, se um playbook n\u00e3o funcionasse por algum motivo no servidor, era mais f\u00e1cil excluir o servidor, corrigir o playbook e reaplic\u00e1-lo. N\u00e3o havia na pr\u00e1tica versionamento de scripts nem portabilidade de configura\u00e7\u00f5es.<\/p>\n<p>Por exemplo, decidimos alterar alguma configura\u00e7\u00e3o em todos os servidores:<\/p>\n<ol>\n<li>Alterando a configura\u00e7\u00e3o em servidores existentes no segmento l\u00f3gico\/datacenter. \u00c0s vezes isso n\u00e3o \u00e9 feito em um s\u00f3 dia \u2013 os requisitos de disponibilidade e a lei dos grandes n\u00fameros n\u00e3o permitem aplicar todas as mudan\u00e7as de uma vez. Algumas altera\u00e7\u00f5es s\u00e3o potencialmente destrutivas e requerem a reinicializa\u00e7\u00e3o de algo \u2013 desde servi\u00e7os at\u00e9 o pr\u00f3prio sistema operacional.<\/li>\n<li>Corrigindo no Ansible<\/li>\n<li>Corrigindo no Cobbler<\/li>\n<li>Repetimos N vezes para cada segmento l\u00f3gico\/datacenter<\/li>\n<\/ol>\n<p>Para que todas as mudan\u00e7as ocorressem sem problemas, era necess\u00e1rio considerar uma variedade de fatores, e as mudan\u00e7as ocorrem constantemente.<\/p>\n<ul>\n<li>Refatora\u00e7\u00e3o do c\u00f3digo Ansible e dos arquivos de configura\u00e7\u00e3o<\/li>\n<li>Mudan\u00e7as nas melhores pr\u00e1ticas internas<\/li>\n<li>Altera\u00e7\u00f5es com base na an\u00e1lise de incidentes\/acidentes<\/li>\n<li>Mudan\u00e7a nos padr\u00f5es de seguran\u00e7a, tanto internos quanto externos. Por exemplo, o PCI DSS \u00e9 complementado a cada ano com novos requisitos<\/li>\n<\/ul>\n<p><b>Crescimento da infraestrutura e in\u00edcio do caminho<\/b><\/p>\n<p>O n\u00famero de servidores\/dom\u00ednios l\u00f3gicos\/datacenters crescia, assim como o n\u00famero de erros nas configura\u00e7\u00f5es. Em determinado momento, chegamos a tr\u00eas dire\u00e7\u00f5es nas quais precis\u00e1vamos desenvolver a gest\u00e3o de configura\u00e7\u00e3o:<\/p>\n<ol>\n<li>Automatiza\u00e7\u00e3o. Sempre que poss\u00edvel, devemos evitar o fator humano em opera\u00e7\u00f5es repetitivas.<\/li>\n<li>Repetibilidade. Gerenciar a infraestrutura \u00e9 muito mais f\u00e1cil quando ela \u00e9 previs\u00edvel. A configura\u00e7\u00e3o dos servidores e das ferramentas para sua prepara\u00e7\u00e3o deve ser a mesma em todos os lugares. Isso tamb\u00e9m \u00e9 importante para as equipes de produto \u2013 o aplicativo deve garantir que, ap\u00f3s os testes, ele chegue ao ambiente produtivo configurado de forma semelhante ao ambiente de teste.<\/li>\n<li>Simplicidade e transpar\u00eancia na realiza\u00e7\u00e3o de mudan\u00e7as na gest\u00e3o de configura\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>Falta adicionar algumas ferramentas.<\/p>\n<p>Como reposit\u00f3rio de c\u00f3digo, escolhemos o GitLab CE, n\u00e3o menos importante devido aos m\u00f3dulos CI\/CD integrados.<\/p>\n<p>Reposit\u00f3rio de segredos \u2013 Hashicorp Vault, tamb\u00e9m pela excelente API.<\/p>\n<p>Teste de configura\u00e7\u00f5es e fun\u00e7\u00f5es do Ansible - Molecule + Testinfra. Os testes s\u00e3o muito mais r\u00e1pidos se voc\u00ea conectar o mitogen ao Ansible. Paralelamente, come\u00e7amos a escrever nosso pr\u00f3prio CMDB e orquestrador para implanta\u00e7\u00e3o autom\u00e1tica (na imagem acima do Cobbler), mas isso \u00e9 uma hist\u00f3ria completamente diferente, que meu colega e principal desenvolvedor desses sistemas contar\u00e1 no futuro.<\/p>\n<p>Nossa escolha:<\/p>\n<p><i>Molecule + Testinfra<br \/>\nAnsible + Tower + AWX<br \/>\nMundo dos Servidores + DITNET (Desenvolvimento pr\u00f3prio)<br \/>\nCobbler<br \/>\nGitlab + GitLab runner<br \/>\nHashicorp Vault<br \/>\n<\/i><\/p>\n<p><img decoding=\"async\" alt=\"De &quot;startup&quot; a milhares de servidores em dez data centers. Como buscamos o crescimento da infraestrutura Linux\" src=\"\/wp-content\/uploads\/2020\/07\/e84263618966f757e76d0384c9da276d.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Por falar em fun\u00e7\u00f5es do Ansible. Inicialmente, havia uma \u00fanica fun\u00e7\u00e3o, mas ap\u00f3s v\u00e1rias refatora\u00e7\u00f5es, elas aumentaram para 17. Recomendo categoricamente dividir o mon\u00f3lito em fun\u00e7\u00f5es idempotentes que podem ser executadas separadamente, e tags adicionais podem ser adicionadas. N\u00f3s dividimos as fun\u00e7\u00f5es por funcionalidade \u2013 rede, registro, pacotes, hardware, molecule, etc. De fato, seguimos a estrat\u00e9gia abaixo. N\u00e3o insisto que esta \u00e9 a verdade \u00fanica, mas funcionou para n\u00f3s.<\/p>\n<ul>\n<li><b>Copiar servidores de uma \"imagem de ouro\" \u00e9 um mal!<\/b>Entre as principais desvantagens, voc\u00ea realmente n\u00e3o sabe em que estado est\u00e3o as imagens atualmente, e que todas as mudan\u00e7as afetar\u00e3o todas as imagens em todas as fazendas de virtualiza\u00e7\u00e3o.<\/li>\n<li><b>Use arquivos de configura\u00e7\u00e3o padr\u00e3o minimamente e combine com outras unidades que voc\u00ea \u00e9 respons\u00e1vel pelos principais arquivos do sistema.<\/b>, por exemplo:\n<ol>\n<li>Mantenha \/etc\/sysctl.conf vazio; as configura\u00e7\u00f5es devem estar apenas em \/etc\/sysctl.d\/. Seu padr\u00e3o em um arquivo, personalizado para o aplicativo em outro.<\/li>\n<li>Use arquivos de substitui\u00e7\u00e3o para editar unidades systemd.<\/li>\n<\/ol>\n<\/li>\n<li><b>Template todos os configs e sempre insira-os por inteiro, evitando o uso de sed e seus an\u00e1logos em playbooks, sempre que poss\u00edvel.<\/b><\/li>\n<li><b>Refatorando o c\u00f3digo do sistema de gerenciamento de configura\u00e7\u00f5es:<\/b>\n<ol>\n<li>Divida as tarefas em entidades l\u00f3gicas e reescreva o mon\u00f3lito em fun\u00e7\u00f5es.<\/li>\n<li>Use linters! Ansible-lint, yaml-lint, etc.<\/li>\n<li>Mude a abordagem! Nada de bashsible. \u00c9 necess\u00e1rio descrever o estado do sistema.<\/li>\n<\/ol>\n<\/li>\n<li><b>Para todas as fun\u00e7\u00f5es do Ansible, voc\u00ea deve escrever testes no molecule e gerar relat\u00f3rios uma vez por dia.<\/b><\/li>\n<li>No nosso caso, ap\u00f3s preparar os testes (que s\u00e3o mais de 100), cerca de 70.000 erros foram encontrados. Corrigimos por v\u00e1rios meses.<img decoding=\"async\" alt=\"De &quot;startup&quot; a milhares de servidores em dez data centers. Como buscamos o crescimento da infraestrutura Linux\" src=\"\/wp-content\/uploads\/2020\/07\/afa87e6305ef99a7ed6bdab0bc78a433.jpg\" style=\"display:block;margin: 0 auto;\"><\/li>\n<\/ul>\n<p><b>Nossa implementa\u00e7\u00e3o<\/b><\/p>\n<p>Ent\u00e3o, as fun\u00e7\u00f5es do Ansible estavam prontas, modeladas e verificadas por linters. E at\u00e9 mesmo os git est\u00e3o configurados em todos os lugares. Mas a quest\u00e3o da entrega confi\u00e1vel do c\u00f3digo em diferentes segmentos ainda estava em aberto. Decidimos sincronizar com scripts. Ficou assim:<\/p>\n<p><img decoding=\"async\" alt=\"De &quot;startup&quot; a milhares de servidores em dez data centers. Como buscamos o crescimento da infraestrutura Linux\" src=\"\/wp-content\/uploads\/2020\/07\/7c850301b5838b295d75834374e09b9f.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Ap\u00f3s a chegada da mudan\u00e7a, CI \u00e9 acionado, um servidor de teste \u00e9 criado, os pap\u00e9is s\u00e3o aplicados e testados com o Molecule. Se tudo estiver ok, o c\u00f3digo vai para o ramo de produ\u00e7\u00e3o. Mas n\u00e3o aplicamos o novo c\u00f3digo em servidores existentes automaticamente. Essa \u00e9 uma esp\u00e9cie de bloqueio que \u00e9 necess\u00e1rio para a alta disponibilidade de nossos sistemas. E quando a infraestrutura se torna enorme, a lei dos grandes n\u00fameros entra em jogo \u2014 mesmo que voc\u00ea esteja certo de que a mudan\u00e7a \u00e9 inofensiva, ela pode levar a consequ\u00eancias tr\u00e1gicas.<\/p>\n<p>Existem muitas op\u00e7\u00f5es para a cria\u00e7\u00e3o de servidores. No final, escolhemos scripts personalizados em Python. E para CI, Ansible:<\/p>\n<pre><code class=\"json\">- name: create1.yml - Criar uma VM a partir de um template\n  vmware_guest:\n    hostname: \"{{datacenter}}\".domain.ru\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.ru\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>Isso \u00e9 onde chegamos, o sistema continua vivo e em desenvolvimento.<\/p>\n<ul>\n<li>17 roles do Ansible para configura\u00e7\u00e3o de servidor. Cada uma das roles \u00e9 destinada a resolver uma tarefa l\u00f3gica espec\u00edfica (registro, auditoria, autoriza\u00e7\u00e3o de usu\u00e1rios, monitoramento, etc.).<\/li>\n<li>Testando roles. Molecule + TestInfra.<\/li>\n<li>Desenvolvimento pr\u00f3prio: CMDB + Orquestrador.<\/li>\n<li>Tempo de cria\u00e7\u00e3o do servidor ~30 minutos, automatizado e praticamente independente da fila de tarefas.<\/li>\n<li>Estado\/nome da infraestrutura igual em todos os segmentos \u2013 playbooks, reposit\u00f3rios, elementos de virtualiza\u00e7\u00e3o.<\/li>\n<li>Verifica\u00e7\u00e3o di\u00e1ria do estado dos servidores com gera\u00e7\u00e3o de relat\u00f3rios sobre as discrep\u00e2ncias em rela\u00e7\u00e3o ao padr\u00e3o.<\/li>\n<\/ul>\n<p>Espero que minha hist\u00f3ria seja \u00fatil para aqueles que est\u00e3o no in\u00edcio do caminho. E qual pilha de automa\u00e7\u00e3o voc\u00ea est\u00e1 usando?<\/p>\n<p>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/ot-startapa-do-tysyach-serverov-v-desyatke-czod-kak-my-gnalis-za-rostom-linux-infrastruktury\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Do 'startup' a milhares de servidores em uma dezena de data centers. Como perseguimos o crescimento da infraestrutura Linux | ProHoster","description":"Se a sua infraestrutura de TI est\u00e1 crescendo muito r\u00e1pido, voc\u00ea enfrentar\u00e1 em algum momento a escolha \u2013 aumentar linearmente os recursos humanos para seu suporte ou come\u00e7ar a automatiza\u00e7\u00e3o.","canonical_url":"https:\/\/prohoster.info\/pt\/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":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/87282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=87282"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87282\/revisions"}],"predecessor-version":[{"id":158751,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87282\/revisions\/158751"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/87283"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=87282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=87282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=87282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}