Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker, Rancher e a Hospedagem de Produtos Interlegis - Fabio Rauber

DevOps-DF
November 08, 2017

Docker, Rancher e a Hospedagem de Produtos Interlegis - Fabio Rauber

Como o Docker e o Rancher facilitaram o trabalho de criação e manutenção de serviços hospedados para Casas Legislativas no Interlegis.

DevOps-DF

November 08, 2017
Tweet

More Decks by DevOps-DF

Other Decks in Technology

Transcript

  1. Meu trabalho • SysAdmin no Interlegis desde 2009 • Automação

    de Infraestrutura – Scripts (Shell, Python) – Puppet (Community, Foreman) – Docker (Rancher) – Gitlab CI – CoreOS Container Linux
  2. O Interlegis • Programa de Integração e Modernização do Legislativo

    Brasileiro • Criado em 1997 e mantido pelo Senado Federal, através do Instituto Legislativo Brasileiro (ILB) • Privilegia o uso de sistemas não proprietários, que possam ser customizados e adotados gratuitamente pela comunidade
  3. Hospedagem Interlegis • Portal Modelo – 1750 Casas Legislativas atendidas

    • Sistema de Apoio ao Processo Legislativo – 1015 Casas Legislativas • Correio Corporativo: – 105 Casas Legislativas • Domínios .LEG.BR Hospedados: – Cerca de 1800 Domínios .LEG.BR
  4. Hospedagem Interlegis • Os Produtos são instalados e mantidos pela

    equipe do Interlegis em equipamentos do Programa, em Brasília • Necessária apenas conexão à Internet • É necessário apenas saber usar a ferramenta • Cursos são oferecidos através de Oficinas Interlegis nos Estados ou mesmo através de EAD
  5. Casas Hospedadas • Câmara Municipal de Agudo – RS –

    agudo.rs.leg.br • Assembleia Legislativa de Rondônia – al.ro.leg.br • Câmara Municipal de Goiânia - GO – goiania.go.leg.br • Assembleia Nacional Popular de Guiné Bissau – parlamento.gw
  6. Shell Script • Automação através de... Scripts Shell! – Chaves

    SSH: • Máquina de Aplicação • Máquina de Banco de Dados • Proxy Reverso – Mudava arquivos de configuração e reiniciava serviços – Muitos problemas...
  7. Shell Script • Utilização de marcações nos arquivos para inclusão

    de novos pedaços de configuração • Restart automático dos serviços • Qualquer mudança no arquivo quebrava o script • Qualquer erro na linha de comando quebrava tudo! Instabilidade!!! • Não escala
  8. Puppet! • Gerenciamento Centralizado de Servidores – Utiliza certificados digitais:

    mais seguro • Módulos prontos na Internet – https://github.com/interlegis • Linguagem declarativa • Modificações manuais são sobrescritas • Repetibilidade: crie a mesma coisa várias vezes...
  9. Puppet! • Separa código da fonte de dados 1) Inicialmente,

    arquivos texto .pp 2) Arquivos texto yaml (hiera) 3) Hiera-LDAP e FusionDirectory • https://github.com/interlegis/hiera-ldap • https://www.fusiondirectory.org/ • Hospedagem em servidores compartilhados
  10. Puppet: Vantagens • Arquivos de configuração saem sempre no padrão,

    graças aos Puppet Templates • Serviços automaticamente reiniciados sempre que há mudança em configurações • Escalabilidade: agora podemos ter vários servidores de aplicação • Repetibilidade: criar um novo servidor aplicação ficou mais fácil....
  11. Puppet: Desvantagens • Puppet roda scripts – Produzem resultados diferentes

    em máquinas diferentes – Problemático quando vários backends servem o mesmo site • Hospedagem compartilhada – Lentidões e problemas na aplicação afetam todos os usuários do mesmo servidor
  12. Puppet: Desvantagens • Puppet roda a cada 30 minutos –

    Diminuir esse tempo aumenta muito a carga no Puppet master – Demora para adicionar um novo serviço • Código muito complexo – Vários módulos de código combinados para aprovisionar um novo serviço – Atualizar 1 módulo pode ser catastrófico...
  13. Puppet: Desvantagens • Curva de aprendizado alta para o desenvolvedor

    – Mantido pela equipe de infraestrutura (pequena) – Novos pré-requisitos necessitavam de adequação no código Puppet (2 desenvolvimentos) • Processo de deploy de novo código pouco eficiente
  14. Nuvem Interlegis: Motivação • Muitas tarefas ainda feitas de forma

    manual – Criação de VMs é manual – Alocação de IPs é manual – Configuração de Backup é manual – Primeira instalação do Puppet é manual – Atualização do SO é manual – Odeio coisas manuais =D
  15. Nuvem Interlegis: Motivação • Hospedagem compartilhada – Complexo de gerenciar

    – Ambiente muito diferente do comum → bugs – Problemas de performance – Usuário “fuçador” • Hospedagem com servidor dedicado deve resolver boa parte dos problemas
  16. Nuvem Interlegis: OpenStack • Nuvem OpenStack (Mirantis) • Instalação via

    OpenStack Fuel (Puppet) • Baseado no OpenStack Juno • KVM como Hypervisor • Integração ao Storage • SO Ubuntu 14.04 LTS
  17. Nuvem Openstack: Vantagens • Automatiza – Criação de VMs –

    Backup – Adição da VM no Puppet – Criação de Volumes no Storage – Configuração de Rede (interna e externa) • Ambiente separado para cada Casa
  18. Nuvem Openstack: Problemas • Atualização do OpenStack? Faça a nuvem

    toda de novo e migre as VMs… • 3 Controllers que não hospedam VMs • Atualizações de pacotes do SO quebravam sistema • Muito complexo! • Não sobreviveu a um desligamento
  19. Nuvem Openstack: Problemas • Hospedagem dedicada requer ao menos 2

    VMs por serviço hospedado • MUITAS Máquinas para gerenciar! • Desperdício de recursos reservados por VM • Cada VM roda um sistema operacional completo • Menor uso de RAM: 1GB
  20. Containers Linux • Containers não reservam recursos • Não sobem

    um sistema operacional completo • Dá para rodar muitos em uma mesma máquina (ou VM) • Ambiente dedicado em recursos compartilhados
  21. Containers Docker • Aplicações são distribuídas como imagens multicamada •

    Processo de criação da imagem simples e documentado: Dockerfile • Roda apenas o processo da aplicação • Registry para distribuição – Privado ou Público (dockerhub)
  22. Containers Docker • Rede dos containers gerenciada pelo Docker (inclusive

    DNS) • Drivers de volumes (plugins) • Logs coletados pelo Docker daemon • Cotas de uso de recursos computacionais (mas sem reserva) • O desenvolvedor prepara a imagem
  23. Rancher • Facilita o deploy de soluções de orquestração de

    containers • Pilha de serviços para suportar a hospedagem • Catálogo de soluções • Usa arquivos docker-compose • Código aberto
  24. Catálogo do Rancher • Deploy de serviços de forma gráfica,

    preenchendo formulários e apertando um botão • Avisa quando há atualizações • Catálogo público com contribuições da Comunidade e serviços prontos para deploy • Catálogos privados
  25. Rancher no Interlegis • Rede dos containers: Cattle IPSec •

    Volumes: Rancher-NFS • Backup: Snapshot e Replicação do Storage • Load Balancer: Traefik com Let’s Encrypt • DNS: Cattle • VMs: CoreOS no XenServer
  26. CoreOS Container Linux • Distribuição mínima para rodar Containers •

    Suportada pelo XenServer • Atualizações automáticas e confiáveis, gerenciadas de forma Centralizada (CoreRoller) • Cloud-config e SystemD
  27. Traefik • Proxy reverso HTTP desenhado especialmente para o mundo

    dos containers • Configuração automática e dinâmica (Rancher API ou Metadata) • Suporte automático a Let’s Encrypt (Desafio TLS-SNI ou DNS) • Cluster de Alta disponibilidade (Keepalived)
  28. Hospedagem: próximos passos • Upgrade de serviços via API do

    Rancher • Central de Autosserviço (Rancher API) • Rancher 2.0: Kubernetes • Criação de VMs via Docker Machine • RancherOS (?) • Balanceador com Cache (Grace Period)