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

Ganeti Puppet

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

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

Transcript

53 slides
  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

More Decks by Daniel Capo Sobral

Other Decks in Programming