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

Ganeti Puppet

Ganeti Puppet

Palestra FLISOL 2011 DF sobre uso do Ganeti e do Puppet na administração de ambientes virtualizados.

Essa palestra possui problemas de formatação.

Daniel Capo Sobral

June 26, 2012
Tweet

More Decks by Daniel Capo Sobral

Other Decks in Programming

Transcript

  1. FLISOL – DF - 2011 Assuma o controle do seu

    parque virtualizado Palestrantes: Guto Carvalho @gutocarvalho Daniel Sobral @dcsobral
  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. Necessidades do cliente • Isolamento de ambientes e serviços em

    vm's • Facilidade de migração inter-sites • Maior estabilidade e disponibilidade dos serviços • Curta curva de aprendizagem
  4. Desafios • Centralização da administração e configuração • Padronização do

    ambiente • Rápida implantação e implementação • Conversão de infraestrutura • Manutenção descomplicada
  5. Decisões Importantes • Utilização de tecnologia livre ou opensource •

    Internalizar suporte • Utilização coerente de recursos e orçamento
  6. Caso de Estudo • 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
  7. Especialistas Envolvidos Equipe Tecnisys José Augusto Carvalho @gutocarvalho Daniel Sobral

    @dcsobral Jefferson Santos @jalexandre0 Equipe EBC Coordenadores Tadeu Ibns N. Rocha – [email protected] José Eufrásio @coredump SysAdmins Nieson Santos – [email protected]
  8. Terminologia Virtualization [. . . ] a hypervisor, also called

    virtual machine monitor, allows multiple operating systems to run concurrently on a host computer. (Wikipedia) Cluster Node ≡ physical machine Instance machine virtual machine ≃ ≃
  9. Nossa Escolha: GANETI • Produto criado pelo Google • 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 • Administração simplificada via CLI ou WEB (frontends) • Boa documentação, desenvolvimento ativo e comunidade crescente
  10. GANETI: Overview • Gerenciador Open Source para clusters virtualizados •

    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.
  11. GANETI: Exemplos de melhorias • 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. • Informações descentralizadas: antes para criar máquinas precisávamos entrar em cada servidor XEN 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 no nó master.
  12. GANETI: Operações 1. Criando um cluster # gnt-cluster init gnt-node01.empresa

    2. Adicionando nó ao cluster # 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
  13. GANETI: Operações 4. desligando # gnt-instance shutdown maquina 5. ligando

    # gnt-instance startup maquina 6. reiniciando # gnt-instance reboot maquina
  14. GANETI: Operações Movendo máquinas entre nós # gnt-instance move -n

    gnt-node05 maquina Ativando discos para montagem # gnt-instance activate-disks maquina # ssh gnt-nodeXX # kpartx -av /dev/mapper/xenvg-xxx.disk0 # mount /dev/xenvg/xxxx /mnt/disco
  15. GANETI: Operações Adicionando mais memoria # gnt-instance modify -B memory=4G

    maquina Adicionando mais processadores # gnt-instance modify -B vcpus=3 maquina Adicionando mais placas de rede # gnt-instance modify -B --net add:ip=192.168.50.173 maquina Adicionando disco # gnt-instance gnt-instance modify --disk add:size=1g smtp02
  16. GANETI: Hooks • Padronização de configurações do OS durante a

    instalação • Instalação dos softwares básicos para administração das máquinas
  17. GANETI: Ganhos 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
  18. GANETI: Problemas • Uso de Múltiplos volumes – storage area

    network (SAN) • SNAPSHOTs • Clonagem de máquinas • DRDB e desempenho • I/O • Múltiplas Redes
  19. GANETI: Comparações Máquina Física – Debian Lenny • Tempo de

    instalação de maquina física – 40 minutos sem atualizações (CD) • Tempo de configuração/update* – padrão - de maquina física – 40 minutos Máquina Virtual – Debian Lenny • Tempo de criação de maquina virtual - 2 minutos
  20. GANETI: Comparações Máquina Física – Debian Lenny • Tempo de

    instalação de maquina física – 40 minutos sem atualizações (CD) • Tempo de configuração/update* – padrão - de maquina física – 40 minutos Máquina Virtual – Debian Lenny • Tempo de criação de maquina virtual - 2 minutos
  21. GANETI: Dicas • 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 • Nunca, jamais, de forma alguma, dê um KILL em um processo de MOVE ou CREATE.
  22. GANETI: Limitações dos Hooks Sabendo que os hooks são podem

    ser utilizados instalação das VMS, como ir além dos hooks...?
  23. 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 • Elementos comumente gerenciados • Usuários • Grupos • Arquivos • pacotes instalados
  24. 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
  25. PUPPET: Funcionamento • Autônomo • Cliente/Servidor • HTTPS • Certificado

    de Cliente • Pull por default • Push opcional • Cliente obtém plugins • Cliente envia fatos • Servidor produz catálogo • Cliente processa catálogo • Cliente envia relatório
  26. Puppet: Fácil Aprendizado Sintaxe Declarativa cl ass r sysl og

    { package { ' r sysl og' : ensur e => pr esent , } ser vi ce { ' r sysl og' : hasr est ar t => t r ue, } f i l e { ' / et c/ r sysl og. d/ l ogser ver 01. conf ' : ensur e => pr esent , sour ce => ' puppet : / / / f i l es/ r sysl og/ r sysl og. d/ l ogser ver 01. conf ' , not i f y => Ser vi ce[ ' r sysl og' ] , } }
  27. Puppet: Fácil Aprendizado Independente de Plataforma cl ass edi t

    or { $vi m = $oper at i ngsyst em ? { ' RedHat ' => ' vi m - enhanced' , ' Cent OS' => ' vi m - enhanced' , ' Fedor a' => ' vi m - enhanced' , def aul t => ' vi m ' , } package { " $vi m " : ensur e => pr esent , al i as => ' vi m ' , } } node “ host 01. dom ai n. com . br ” { i ncl ude edi t or } node “ host 02. dom ai n. com . br ” { i ncl ude edi t or }
  28. Puppet: Auto documentado cl ass l i nux- ser ver

    { # I ncl ude cl asses com m on t o al l l i nux ser ver s i ncl ude l ocal m t a i ncl ude nt pdat e i ncl ude puppet : : conf i ncl ude ssh: : ser ver i ncl ude sudoer s i ncl ude user s i ncl ude ut i l s i ncl ude zabbi x- agent i ncl ude edi t or i ncl ude snm pd i ncl ude r sysl og #. . . }
  29. Puppet: Controle de Versão e Rollback #gi t l og

    com m i t 263b2239ccf f 746f 345c448d723f 4f f 52d3f 8c0f Aut hor : Dani el Sobr al <dcsobr al @ gm ai l . com > Dat e: Thu M ar 31 22: 11: 16 2011 - 0300 Excl ui a bol et i ns das m áqui nas conf i gur adas com o m t a sat él i t e. Li m i t a a conf i gur ação do exi m 4 às m áqui nas Ubunt u e Debi an. com m i t 8f bed5a4b8095b7560941c598454d47f 3b3dec7e Aut hor : Dani el Sobr al <dcsobr al @ gm ai l . com > Dat e: Thu M ar 31 22: 08: 22 2011 - 0300 Cl asse debi an- com m on adapt ada par a l i dar com Ubunt u. Basi cam ent e, f or ça l i dar com ser vi ços no padr ão Debi an ( Ubunt u supor 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 em as Ubunt u t am bém i ncl ui r ão a cl asse debi an- ser ver . Ver i f i ca se o ker nel é xen, e, se f or , i ncl ui o l i nux m odul es cor r espondent e.
  30. Puppet: Altamente Flexível node " el ei coesconcur vm 01"

    { i ncl ude l i nux- ser ver j boss: : app { ' consel ho' : conf => ' def aul t ' , pgdb => ' consel hopr od' , # Al t er a pg_hba. conf } } node “ el ei coesconcur vm bd01” { i ncl ude l i nux- ser ver pgdb { ' consel hopr od' : # Ger a XM L par a dat asour ce passwor d => ' * * * * * * * * ' , pgver si on => ' 8. 4' , } }
  31. Puppet: Expansível • Puppet • Classes • Definições • Templates

    (ERB) • Ruby • Fatos • Funções • Tipos • Provedores def i ne pgcl i ent ( $ensur e = pr esent , $i p = $i paddr ess) { @ @ l i ne { " pgcl i ent ${ i p} " : ensur e => $ensur e, l i ne => " ${ i p} / 32\ n" , r equi r e => Fi l e[ ' cl i ent i p' ] , t ag => " pgcl i ent _$ { t i t l e} " , } } # augeasver si on. r b Fact er . add( " augeasver si on" ) do set code do begi n r equi r e ' augeas' aug = Augeas: : open( ' ' , ' ' , Augeas: : NO_LOAD & Augeas: : NO_STDI NC) aug. get ( ' / augeas/ ver si on' ) | | ni l #. . .
  32. Puppet: Problemas • Documentação Deficiente • Mensagens de erro ruins

    • Servidor default nao segura mais de 20 máquinas • Não distribui arquivos grandes • Grande investimento de tempo para chegar ao nível de expert
  33. Frontends – The Foreman • Visualiza • Inventário (fatos) •

    Relatório • Configurações • Provisiona servidores • Kickstart • Jumpstart • Preseed
  34. 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
  35. 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ê.
  36. Informações dos projetos Site/Blog Http://ww.puppetlabs.com Http://www.puppetlabs.com Twitter @puppetlabs Http://www.github.com/puppelabs Google

    Groups Puppet-camp, puppet-users, puppet-dev IRC Irc.freenode.org #puppet Site/Blog http://code.google.com/p/ganeti/ Docs http://docs.ganeti.org Twitter (manager web do ganeti) @ganetiwebmgr Google Groups ganeti, ganeti-devel ganeti-webmgr IRC Irc.freenode.org #ganeti
  37. Contato, Dúvidas, Perguntas Guto Carvalho: [email protected] @gutocarvalho http://gutocarvalho.net /dokuwiki Http://github.com/

    dcsobral Daniel Sobral dcsobral@gmail .com @dcsobral http://dcsobral.blog Http://github.co m/dcsobral Palestras de hoje disponíveis em nossos sites. Palestra sob licença Creative Commons - Atribuição