O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Consegi 2011: Ganeti + Puppet

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Orquestração com Mcollective
Orquestração com Mcollective
Carregando em…3
×

Confira estes a seguir

1 de 58 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Consegi 2011: Ganeti + Puppet (20)

Anúncio

Mais recentes (20)

Anúncio

Consegi 2011: Ganeti + Puppet

  1. 1. CONSEGI 2011 Assuma o controle do seu parque virtualizado Palestrantes: Guto Carvalho @gutocarvalho Daniel Sobral @dcsobral
  2. 2. Já teve a sensação de estar perdendo o controle do seu ambiente virtualizado? Foto tirada do site sysadminday.com por Frank Schicksal
  3. 3. O que se busca com a virtualização? ● Melhor consumo de energia ● Administração Centralizada ● Uso eficiente dos recursos de hardware ● Agilidade na instalação de novos ambientes ● Isolamento de ambientes ● Flexibilidade para ajustar recursos das Vms ● Memória ● Processamento ● Armazenamento ● Rede ● Maior controle do ambiente ● Consolidação de seu ambiente físico ● Aumentar disponibilidade do ambiente
  4. 4. Quais os problemas de percurso? ● Crescimento sem Padronização ● Crescimento sem Monitoramento ● Crescimento sem Documentação ● Tecnologias híbridas que combinam softwares proprietários e livres que tem dificuldades para funcionarem em conjunto e que demandam manutenções e ajustes constantes. ● Ambiente com grande complexidade de manutenção
  5. 5. CASE EBC
  6. 6. Necessidades do cliente ● Isolamento de ambientes e serviços em vm's ● Facilidade de migração entre sites em uma mesma cidade ● Ter maior estabilidade nos serviços oferecidos ● Ter maior disponibilidade ● Curta curva de aprendizagem – na tecnologia de virtualização - para a equipe de administradores. ● CPDs geograficamente separados, permitindo movimentar máquinas entre eles de forma transparente. ● Otimizar o uso de armazenamento em disco
  7. 7. Desafios Centralização da administração e configuração ● Padronização do ambiente ● ● Sistemas operacionais ● Ferramentas de administração ● Configuração dos serviços ●Rápida implantação e implementação de soluções Conversão de infraestrutura ● Ter uma manutenção descomplicada ●
  8. 8. Decisões Importantes ● Utilização de tecnologia livre ou open-source ● Internalizar suporte da solução ● Utilização coerente de recursos e orçamento ● Investimento em conhecimento e equipe ● Investimento financeiro em hardware ● Investimento financeiro mínimo em software ● Renovação do parque de servidores
  9. 9. Caso de Estudo ● EBC - Empresa Brasil de Comunicação ● Cerca de 160 máquinas virtuais rodando em um 'cluster' com 15 nós ● Gestão e distribuição de configurações ● Administração compartilhada de 4 DevOps ● Automação de serviços e procedimentos ● Monitoramento robusto
  10. 10. Especialistas Envolvidos Equipe Tecnisys José Augusto Carvalho @gutocarvalho Daniel Sobral @dcsobral Jefferson Santos @jalexandre0 Equipe EBC Tadeu Ibns N. Rocha – tadeuibns@gmail.com José Eufrásio @coredump Nieson Santos – nieson.santos@gmail.com
  11. 11. VIRTUALIZAÇÃO
  12. 12. Terminologia Virtualização consiste em executar vários sistemas operacionais em uma mesma máquina. Cluster Node = Máquina Física Instance = Máquina Virtual
  13. 13. Nossa escolha ● Produto criado pelo Google: GANETI ● Case interessante de uso interno no Google ● Facilidade de implementação ● Utilização de hypervisors livres XEN e KVM ● Funciona em modo Cluster ● Permite migração de máquinas entre nós do cluster ● Administração simplificada via CLI ou WEB (frontends) ● Boa documentação, desenvolvimento ativo e comunidade crescente
  14. 14. Visão Geral da Ferramenta Gerenciador Open Source para virtualização em Cluster Combina virtualização e replicação de disco em tempo real Oferece uma aplicação de alta disponibilidade promovendo uma melhor utilização dos recursos do seu datacenter. É utilizado pelo Google internamente.
  15. 15. Estrutura Lógica do Ganeti ● Cluster ● Nó mestre ● Nós ● Instâncias
  16. 16. Migração entre Nodes
  17. 17. Replicação ● Replicação de dados em tempo real via DRBD ● Node secundário assume em caso de falha
  18. 18. Administração Centralizada Na infraestrutura XEN a administração é descentralizada, precisávamos entrar em cada máquina para fazer manutenções nas VM. Hoje fazemos isto de forma centralizada no master node.
  19. 19. Visão dos recursos disponíveis Usando apenas XEN, para criar máquinas precisávamos entrar em cada servidor para avaliar os recursos disponíveis e escolher um servidor ideal para instalar o serviço. Com o Ganeti temos um visão completa de todo o cluster a partir do nó Master.
  20. 20. Ferramenta Sólida ● Não depende de hardware específico ● Escala linearmente ● Redundância N+1
  21. 21. Administrando Até agora tudo bem, mas e a administração como funciona, será que é realmente descomplicado e transparente?
  22. 22. Operações em seu cluster via CLI 1. Criando um cluster (resumidamente) # gnt-cluster init gnt-node01.empresa 2. Adicionando nó ao cluster (após instalar o node) # gnt-instance add node02 # gnt-instance add node03 3. Criando máquina virtual # gnt-instance add -n node1 -t plain -H memory=1G -s 10G -o debian apache01
  23. 23. Comandos básicos 4. desligando # gnt-instance shutdown maquina 5. ligando # gnt-instance startup maquina 6. reiniciando # gnt-instance reboot maquina 7. acessando console de maquinas em qualquer lugar do cluster mestre # gnt-instance console maquina 8. removendo instancia # gnt-instance remove maquina
  24. 24. Comandos básicos 9. Movendo máquinas entre nós # gnt-instance move -n gnt-node05 maquina 10. Exportando instancia # gnt-backup export -n gnt-node05 maquina 11. Importando instância # gnt-backup import -n gnt-node06 --src-node=gnt-node05 – src-dir=/diretorio maquina
  25. 25. Comandos Básicos 14. Montando discos localmente para manutenções # gnt-instance activate-disks maquina # ssh gnt-nodeXX # kpartx -av /dev/mapper/xenvg-xxx.disk0 # mount /dev/xenvg/xxxx /mnt/disco
  26. 26. Alterando recursos de VMs 1. Adicionando mais memoria # gnt-instance modify -B memory=4G maquina 2. Adicionando mais processadores # gnt-instance modify -B vcpus=3 maquina 3. Adicionando mais placas de rede # gnt-instance modify -B --net add:ip=192.168.50.173 maquina 4. Adicionando disco/partição # gnt-instance gnt-instance modify --disk add:size=1g smtp02
  27. 27. Hooks ● Execução de comandos na instalação da instância ● Criação de Perfis de Instalação ● Padronização de configurações do OS durante a instalação ● Instalação e configuração dos pacotes básicos ● Configurações de idioma ● Configurações de localização ● Configurações de repositórios ● Configurações de rede e segurança ● Configurações de usuários e grupos
  28. 28. Ganhos com essa tecnologia Cliente ● Uso coerente dos recursos de hardware/rede ● Investimento em conhecimento da equipe ● Investimento de SW direcionado para HW Equipe ● Facilidade na criação e adm. de máquinas ● Movimentação de VM's entre nós e SITES ● Replicação DRDB = Alta disponibilidade
  29. 29. Limitações ● Uso de Múltiplos volumes – storage area network (SAN) ● SNAPSHOTs ● Clonagem de máquinas ● DRDB e desempenho ● I/O ● Uso de Múltiplas Redes
  30. 30. GanetI Web Manager
  31. 31. Ganeti Web Manager
  32. 32. GANETI: Web Manager
  33. 33. GANETI: Web Manager
  34. 34. GANETI: Web Manager
  35. 35. Comparando Instalação de Máquina Física – Debian Lenny Tempo de criação de maquina virtual - 40 minutos Tempo de configuração/update* via internet – 40 minutos * Levando em conta configurações da rede, locale, ntpdate, backup, monitoramento, criação de usuários, instalação de pacotes básicos do sysadmin. Instalação de Máquina Virtual – Debian Lenny Tempo de criação de maquina virtual - 2 minutos Tempo de configuração/update* usando Hooks – 2 a 4 minutos * Levando em conta configurações da rede, locale, ntpdate, backup, monitoramento, criação de usuários, instalação de pacotes básicos do sysadmin.
  36. 36. Dicas importantes ● Atenção com DNS, dependência grande para criar a VMs ● Uso e abuse de Activate Disks para montar e `clonar` máquinas ● GrowDisk e Parted ● Nunca dê CTRL+C ● Usar - - submit ● Tenha paciência, não use KILL em um processo de MOVE ou CREATE. Espere terminar.
  37. 37. Expandindo os Hooks Sabendo que os hooks só podem ser utilizados instalação das VMS, como ir além dos hooks...? Como podemos atuar no gerenciamento de configurações no momento em que precisarmos?
  38. 38. Gestão de Configuração
  39. 39. Gestão de Configuração ● Facilitar o trabalho de administração de servidores ● Padronizar as configurações utilizadas ● Possibilitar auditoria de configuração ● Centralizar a administração ● Acelerar a criação de novos servidores ● Acelerar a configuração de serviços
  40. 40. Exemplos de Itens de Configuração ● Usuários ● Grupos ● Arquivos de Configuração ● Pacotes instalados ● Execução periódica de scripts
  41. 41. Nossa Escolha ● Puppet (2005) ● Ruby, GPL ● AIX, BSD, HP-UX, Linux, MaxOS, Solaris, Windows(*) ● Wikipedia: ● Configuration_management ● Comparison_of_open_sourc e_configuration_manageme nt_software
  42. 42. PUPPET: Funcionamento ● Tipos: ● Passos: ● Autônomo ● Cliente obtém plugins – Configuração local ● Cliente envia fatos ● Cliente/Servidor ● Servidor produz – HTTPS catálogo – Certificado de Cliente ● Cliente processa – Pull por default catálogo – Push opcional ● Cliente envia relatório
  43. 43. Puppet: Fácil Aprendizado Sintaxe Declarativa ● Pacote ntpdate ● Garantir que esteja instalado ● Crontab ● Usuário root ● Comando 'ntpdate ntp.dominio' ● Executar de hora em hora package { 'ntpdate': ensure => installed, } cron { 'sincroniza horario': user => 'root', command => '/usr/sbin/ntpdate ntp.dominio', minute => 0, }
  44. 44. Puppet: Fácil Aprendizado Independente de Plataforma c l as s edi t or { $v i m = $oper at i ngs y s t em ? { ' RedHat ' => ' v i m enhanc ed', - ' Cent OS' => ' v i m enhanc ed', - ' Fedor a' => ' v i m enhanc ed', - def aul t => ' v i m ', } pac k age { " $v i m": ens ur e => pr es ent, al i as => ' v i m', } } node “ hos t 01. dom n. c om br ” { ai . i nc l ude edi t or } node “ hos t 02. dom n. c om br ” { ai . i nc l ude edi t or }
  45. 45. Puppet: Auto documentado class linux-server { # Include classes common to all linux servers include localmta include ntpdate include puppet::conf include ssh::server include sudoers include users include utils include zabbix-agent include editor include snmpd include rsyslog #...
  46. 46. Puppet: Controle de Versão e Rollback #gi t l og c om i t 263b2239cc f f 746f 345c448d723f 4f f 52d3f 8c0f m Aut hor : Dani el Sobr al <dcs obr al @ ai l . com gm > Dat e: Thu Mar 31 22: 11: 16 2011 - 0300 Ex cl ui a bol et i ns das máqui nas c onf i gur adas c om m a s at él i t e. o t Li m t a a conf i gur aç ão do ex i m às m i 4 áqui nas Ubunt u e Debi an. c om i t 8f bed5a4b8095b7560941c598454d47f 3b3dec7e m Aut hor : Dani el Sobr al <dcs obr al @ ai l . com gm > Dat e: Thu M ar 31 22: 08: 22 2011 - 0300 Cl as se debi an- c om on adapt ada par a l i dar com Ubunt u. Basi cam m ent e, f or ça l i dar com s er vi ços no padr ão Debi an ( Ubunt u s upor t a padr ão Fr eeBSD t am bém , e não m ) exe no sour ce l i st ( por hor a). Si st emas Ubunt u t ambém i nc l ui r ão a c l as s e debi an- s er ver. Ver i f i ca se o k er nel é xen, e, s e f or , i nc l ui o l i nux modul es cor r es pondent e.
  47. 47. Puppet: Altamente Flexível node " el ei c oes c onc ur v m 01" { i nc l ude l i nux - s er v er j bos s : : app { ' c ons el ho': c onf => ' def aul t ', pgdb => ' c ons el hopr od' , # Al t er a pg_ hba. c onf } } node “ el ei c oes c onc ur v m bd01” { i nc l ude l i nux - s er v er pgdb { ' c ons el hopr od' : # Ger a XM par a dat as our c e L pas s wor d => ' * * * * * * * * ', pgv er s i on => ' 8. 4', } }
  48. 48. Puppet: Expansível def i ne pgcl i ent ( $ens ur e = pr esent , ● Puppet $i p = $i paddr ess) { @ l i ne { " pgcl i ent ${ i p} ": @ ● Classes ens ur e => $ensur e, l i ne => " ${ i p} / 32 n", r equi r e => Fi l e[ ' c l i ent i p' ], ● Definições t ag => " pgcl i ent _ $ { t i t l e} " , ● Templates (ERB) } } ● Ruby # augeas v er s i on. r b Fact er . add( " augeasv er si on" ) do ● Fatos set code do begi n r equi r e ' augeas ' ● Funções aug = Augeas: : open( ' ' , ' ' , Augeas: : NO_LOAD & Augeas : : NO_ STDI NC) ● Tipos aug. get ( ' / augeas/ v er s i on' ) | | ni l ● Provedores #. . .
  49. 49. Puppet: Problemas ● Mensagens de erro ruins ● Servidor default nao segura mais de 20 máquinas ● Com Apache/Passenger, já temos +160 servidores ● Não distribui arquivos grandes ● Usar pacotes ou execução de comandos como wget ● Grande investimento de tempo para ir do nível médio ao de expert
  50. 50. Frontends – Puppet Dashboard
  51. 51. Frontends – The Foreman ● Visualiza ● Inventário (fatos) ● Relatório ● Configurações ● Provisiona servidores ● Kickstart ● Jumpstart ● Preseed
  52. 52. PUPPET + GANETI Onde podemos chegar com essa combinação?
  53. 53. Comparação Final Máquina Física – Debian Lenny + LAMP ● Tempo de instalação de maquina física – 40 minutos sem atualizações (CD) ● Tempo de configuração/update OS* – padrão - de maquina física – 40 minutos ● Tempo de instalação e configuração Apache2, PHP5, MYSQL – 2 horas** Máquina Virtual – Debian Lenny ● Tempo de criação de maquina virtual - 2 minutos ● Tempo de configuração/update OS* usando Hooks – 2 a 4 minutos ● Tempo de instação e configuração Apache2, PHP5, MYSQL – 2 a 4 minutos** * Levando em conta configurações da rede, locale, ntpdate, backup, monitoração, criação de usuários, instalação de pacotes básicos do sysadmin. ** Levando em conta hardening, tuning os, apache2, php5, mysql, considerando ter as classes prontas
  54. 54. Conclusão O Ganeti é uma alternativa viável, moderna estável, largamente utilizado no google, em franco desenvolvimento com um comunidade crescente e ativa. O Puppet é uma ferramenta essencial para gerenciar e distribuir configurações, ele é um batalhão de sysadmins trabalhando para você.
  55. 55. Informações dos projetos Site/Blog Site/Blog Http://ww.puppetlabs.com http://code.google.com/p/ganeti/ Http://www.puppetlabs.com Docs Twitter http://docs.ganeti.org @puppetlabs Twitter (manager web do ganeti) Http://www.github.com/puppelabs @ganetiwebmgr Google Groups Google Groups Puppet-camp, ganeti, puppet-users, ganeti-devel puppet-dev ganeti-webmgr IRC IRC Irc.freenode.org Irc.freenode.org #puppet #ganeti
  56. 56. Contato, Dúvidas, Perguntas Guto Carvalho: Daniel Sobral gutocarvalho@gmail.com dcsobral@gmail.com @gutocarvalho @dcsobral http://gutocarvalho.net/dokuwiki http://dcsobral.blogspot.com Http://github.com/dcsobral Http://github.com/dcsobral Palestras de hoje disponíveis em nossos sites. Palestra sob licença Creative Commons – Atribuição.

×