SlideShare uma empresa Scribd logo
FLISOL – DF - 2011



Assuma o controle do seu
   parque virtualizado
                               Palestrantes:
              Guto Carvalho @gutocarvalho
                   Daniel Sobral @dcsobral
Já teve a sensação de estar
perdendo o controle do seu
   ambiente virtualizado?




   Foto tirada do site sysadminday.com por Frank Schicksal
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
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
Decisões Importantes
●   Utilização de tecnologia livre ou opensource
●   Internalizar suporte
●   Utilização coerente de recursos e orçamento
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
Especialistas Envolvidos
             Equipe Tecnisys
   José Augusto Carvalho @gutocarvalho
         Daniel Sobral @dcsobral
      Jefferson Santos @jalexandre0

               Equipe EBC
              Coordenadores
Tadeu Ibns N. Rocha – tadeuibns@gmail.com
         José Eufrásio @coredump
                SysAdmins
 Nieson Santos – nieson.santos@gmail.com
VIRTUALIZAÇÃO
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
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
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.
GANETI: Hypervisors
XEN
Xxxx
Xxxx
Xxx
KVM
Xxx
Xx
Xx
Xx
GANETI: Estrutura Lógica
●   Cluster
●   Nó mestre
●   Nós
●   Instâncias
GANETI: Organização Lógica do
           Cluster
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.
GANETI: Listando nós
GANETI: Listando instâncias
GANETI: Listando info de VM
GANETI: Movendo VM entre nós
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
GANETI: Operações
4. desligando
# gnt-instance shutdown maquina


5. ligando
# gnt-instance startup maquina


6. reiniciando
# gnt-instance reboot maquina
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
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
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
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
GANETI: Problemas
●   Uso de Múltiplos volumes – storage area
    network (SAN)
●   SNAPSHOTs
●   Clonagem de máquinas
●   DRDB e desempenho
●   I/O
●   Múltiplas Redes
GANETI: Front-End
GANETI: Web Manager
GANETI: Web Manager
GANETI: Web Manager
GANETI: Web Manager
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
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
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.
GANETI: Limitações dos Hooks




Sabendo que os hooks são podem ser utilizados
instalação das VMS, como ir além dos hooks...?
Gestão de Configuração
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
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
PUPPET: Funcionamento
●   Autônomo                     ●   Cliente obtém plugins
●   Cliente/Servidor             ●   Cliente envia fatos
    ●   HTTPS                    ●   Servidor produz
    ●   Certificado de Cliente       catálogo
    ●   Pull por default         ●   Cliente processa
    ●   Push opcional                catálogo
                                 ●   Cliente envia relatório
Puppet: Fácil Aprendizado
                 Sintaxe Declarativa

c l ass r sy sl og {

     pac kage { ' r s ysl og' :
                    ens ur e => pr esent ,
              }

     s er vi ce { ' r s ysl og' :
           has r es t ar t => t r ue,
     }

     f i l e { ' / et   c/ r sy s l og. d/ l ogs er v er 01. conf ' :
            ens ur e    => pr esent ,
            s our ce    => ' puppet : / / / f i l es / r s ys l og/ r s ys l og. d/ l ogser ver 01. c onf ' ,
            not i f y   => Ser vi ce[ ' r s ys l og' ] ,
     }
}
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
}
Puppet: Auto documentado

c l as s l i nux - s er v er {
       # I nc l ude c l as s es c om on t o al l l i nux s er v er s
                                     m
       i nc l ude l oc al m at
       i nc l ude nt pdat e
       i nc l ude puppet : : c onf
       i nc l ude s s h: : s er v er
       i nc l ude s udoer s
       i nc l ude us er s
       i nc l ude ut i l s
       i nc l ude z abbi x - agent
       i nc l ude edi t or
       i nc l ude s nm  pd
       i nc l ude r s y s l og

     #. . .
}
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 ncl ui r ão a c l ass 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.
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' ,
    }
}
Puppet: Expansível
                         def i ne pgcl i ent ( $ens ur e = pr esent ,
●   Puppet               $i p = $i paddr es s) {
                                 @ 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       #. . .
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
Frontends – Puppet Dashboard
Frontends – The Foreman
●   Visualiza
    ●   Inventário (fatos)
    ●   Relatório
    ●   Configurações
●   Provisiona servidores
    ●   Kickstart
    ●   Jumpstart
    ●   Preseed
PUPPET + GANETI

Onde podemos chegar com essa combinação?
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 -
Máquina Virtual –
●

    de maquina física – 40 minutos

Debian Lenny
 Tempo de instalação e configuração Apache2,
●

 PHP5, MYSQL – 2 horas**



●   Tempo de criação de
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ê.
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
Contato, Dúvidas, Perguntas

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

dcsobral
                                Http://github.co
                        m/dcsobral

Mais conteúdo relacionado

PDF
Consegi 2011: Ganeti + Puppet
Jose Augusto Carvalho
 
PDF
Orquestração com Mcollective
Jose Augusto Carvalho
 
PDF
Consegi 2011: Puppet
Jose Augusto Carvalho
 
PDF
Minicurso groovy grails
Victor Hugo Germano
 
KEY
Oficina Puppet - Aprenda a Gerenciar Configurações
Jose Augusto Carvalho
 
PDF
Ajax em java
Maurício Linhares
 
PDF
Realtime com node.js e socket.io
Caio Ribeiro Pereira
 
ODP
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Samuel Sampaio
 
Consegi 2011: Ganeti + Puppet
Jose Augusto Carvalho
 
Orquestração com Mcollective
Jose Augusto Carvalho
 
Consegi 2011: Puppet
Jose Augusto Carvalho
 
Minicurso groovy grails
Victor Hugo Germano
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Jose Augusto Carvalho
 
Ajax em java
Maurício Linhares
 
Realtime com node.js e socket.io
Caio Ribeiro Pereira
 
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Samuel Sampaio
 

Destaque (16)

PPTX
Introdução a TDD
Daniel Sobral
 
PPTX
Criando um baseline de seu ambiente completo utilizando ssis e ssrs
Marcos Freccia
 
PDF
131444591 97430634-apostila-468-zabbix
Rodrigo Souza
 
PDF
Gnu/Linux - Workshop EACH-USP
Wellington Silva
 
PDF
Administracao de sistemas_com_puppet
Ramon Mota
 
PDF
Apostila Oracle
Ricardo Terra
 
PDF
Oracle database 12 c on oracle linux 7.3
suk kim
 
PPTX
Workshop SQL Server 2012
Viviane_ribeiro
 
PDF
JBUG Brasil - Desvendando as features do WildFly.
Eduardo Medeiros
 
PPTX
Implantação do Windows Server 2008 R2
Fabio Hara
 
PPTX
Monitoramento de Serviços de Bancos de Dados - Nagios
Eduardo Legatti
 
PDF
Treinamento RMAN Workshop 12c
Douglas Paiva de Sousa
 
PDF
Treinamento DBA Essential
Douglas Paiva de Sousa
 
PPTX
Hands on Labs - SQL Server 2008
Leonardo Lourenço Silva
 
PDF
12c on RHEL7
Osama Mustafa
 
PPT
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Marcos Freccia
 
Introdução a TDD
Daniel Sobral
 
Criando um baseline de seu ambiente completo utilizando ssis e ssrs
Marcos Freccia
 
131444591 97430634-apostila-468-zabbix
Rodrigo Souza
 
Gnu/Linux - Workshop EACH-USP
Wellington Silva
 
Administracao de sistemas_com_puppet
Ramon Mota
 
Apostila Oracle
Ricardo Terra
 
Oracle database 12 c on oracle linux 7.3
suk kim
 
Workshop SQL Server 2012
Viviane_ribeiro
 
JBUG Brasil - Desvendando as features do WildFly.
Eduardo Medeiros
 
Implantação do Windows Server 2008 R2
Fabio Hara
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Eduardo Legatti
 
Treinamento RMAN Workshop 12c
Douglas Paiva de Sousa
 
Treinamento DBA Essential
Douglas Paiva de Sousa
 
Hands on Labs - SQL Server 2008
Leonardo Lourenço Silva
 
12c on RHEL7
Osama Mustafa
 
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Marcos Freccia
 
Anúncio

Semelhante a Palestra ganeti puppet (20)

PDF
Vagrant - ambiente de desenvolvimento virtualizado
Vinícius Krolow
 
PDF
[Cloud Summit 2010] Marco Sinhoreli - Construindo nuvens (Xen.org)
Tecla Internet
 
PDF
Cloud Summit Brazil 2011 - Construindo nuvens com Xen
Marco Sinhoreli
 
PDF
Vagrant + Puppet
Gustavo Chaves
 
PDF
Um novo modelo de implantação do SEI no governo
instructbr
 
PDF
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
iMasters
 
PPTX
Gestão automática de configuração usando puppet
Daniel Sobral
 
PPSX
Puppet overview
Paulo Henrique Andrade Cardoso
 
PDF
Ubuntu guia do_iniciante_2-0-capitulo_especial
niltaodomovimento
 
PPTX
Gerenciamento de configuração com puppet
Elton Simões
 
ODP
Pense Aberto, Pense Linux
aviram
 
PDF
Maximize o Potencial do seu Datacenter com Citrix XenServer
Lorscheider Santiago
 
PDF
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Rogerio Prado de Jesus
 
PDF
Puppet webcast 4linux
Jose Augusto Carvalho
 
PDF
Virtualização de servidores com tecnologia Linux
Fernando Costa
 
PPTX
Introduction to the citrix xenserver
Lorscheider Santiago
 
PDF
Virtualização e consolidação de servidores
Ruy Mendonça
 
PPTX
Instalação e Configuração do Hipervisor xen pvm
Fernando Pessoa
 
PDF
Open Virtualization - Virtualização em Software Livre
Frederico Madeira
 
PDF
Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...
Alcyon Ferreira de Souza Junior, MSc
 
Vagrant - ambiente de desenvolvimento virtualizado
Vinícius Krolow
 
[Cloud Summit 2010] Marco Sinhoreli - Construindo nuvens (Xen.org)
Tecla Internet
 
Cloud Summit Brazil 2011 - Construindo nuvens com Xen
Marco Sinhoreli
 
Vagrant + Puppet
Gustavo Chaves
 
Um novo modelo de implantação do SEI no governo
instructbr
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
iMasters
 
Gestão automática de configuração usando puppet
Daniel Sobral
 
Ubuntu guia do_iniciante_2-0-capitulo_especial
niltaodomovimento
 
Gerenciamento de configuração com puppet
Elton Simões
 
Pense Aberto, Pense Linux
aviram
 
Maximize o Potencial do seu Datacenter com Citrix XenServer
Lorscheider Santiago
 
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Rogerio Prado de Jesus
 
Puppet webcast 4linux
Jose Augusto Carvalho
 
Virtualização de servidores com tecnologia Linux
Fernando Costa
 
Introduction to the citrix xenserver
Lorscheider Santiago
 
Virtualização e consolidação de servidores
Ruy Mendonça
 
Instalação e Configuração do Hipervisor xen pvm
Fernando Pessoa
 
Open Virtualization - Virtualização em Software Livre
Frederico Madeira
 
Proxmox uma solução alternativa aos virtualizadores propietários - FLISOL DF ...
Alcyon Ferreira de Souza Junior, MSc
 
Anúncio

Mais de Daniel Sobral (8)

PDF
What can scala puzzlers teach us
Daniel Sobral
 
PDF
Injecting Clock in Java
Daniel Sobral
 
PPTX
A JSR-310 Date: Beyond JODA Time
Daniel Sobral
 
PPTX
Scala 2.10.0 (english version)
Daniel Sobral
 
PPTX
Scala 2.10.0
Daniel Sobral
 
ODP
Tutorial Puppet
Daniel Sobral
 
PPTX
Regex
Daniel Sobral
 
PPTX
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Daniel Sobral
 
What can scala puzzlers teach us
Daniel Sobral
 
Injecting Clock in Java
Daniel Sobral
 
A JSR-310 Date: Beyond JODA Time
Daniel Sobral
 
Scala 2.10.0 (english version)
Daniel Sobral
 
Scala 2.10.0
Daniel Sobral
 
Tutorial Puppet
Daniel Sobral
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Daniel Sobral
 

Último (20)

PPTX
SISTEMA DE INFORMAÇÃO EM SAÚDE_UEPA.pptx
fabriciolabgeo91411
 
PPTX
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
Anderson Maciel
 
PPTX
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
Anderson Maciel
 
PPTX
Curso de Java 1 - (Introdução Geral).pptx
Anderson Maciel
 
PPTX
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Anderson Maciel
 
PPT
Sistemas de Informação em Saúde Aplicada.ppt
fabriciolabgeo91411
 
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Anderson Maciel
 
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Anderson Maciel
 
PPTX
Aula sobre desenvolvimento de aplicativos
FelipeRosa69
 
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Anderson Maciel
 
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Anderson Maciel
 
PPTX
21 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PPTX
22 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Anderson Maciel
 
PPTX
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Anderson Maciel
 
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
Anderson Maciel
 
PPTX
Émile Durkheim slide elaborado muito bom
matheusfodamatheusfo
 
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Anderson Maciel
 
PPTX
Curso de Java 8 - (Tratamento de Exceções, (try-catch-finally)).pptx
Anderson Maciel
 
SISTEMA DE INFORMAÇÃO EM SAÚDE_UEPA.pptx
fabriciolabgeo91411
 
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
Anderson Maciel
 
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
Anderson Maciel
 
Curso de Java 1 - (Introdução Geral).pptx
Anderson Maciel
 
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Anderson Maciel
 
Sistemas de Informação em Saúde Aplicada.ppt
fabriciolabgeo91411
 
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Anderson Maciel
 
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Anderson Maciel
 
Aula sobre desenvolvimento de aplicativos
FelipeRosa69
 
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Anderson Maciel
 
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Anderson Maciel
 
21 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
22 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Anderson Maciel
 
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Anderson Maciel
 
Curso de Java 9 - (Threads) Multitarefas.pptx
Anderson Maciel
 
Émile Durkheim slide elaborado muito bom
matheusfodamatheusfo
 
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Anderson Maciel
 
Curso de Java 8 - (Tratamento de Exceções, (try-catch-finally)).pptx
Anderson Maciel
 

Palestra ganeti puppet

  • 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]
  • 9. 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
  • 10. 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
  • 11. 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.
  • 13. GANETI: Estrutura Lógica ● Cluster ● Nó mestre ● Nós ● Instâncias
  • 15. 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.
  • 19. GANETI: Movendo VM entre nós
  • 20. 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
  • 21. GANETI: Operações 4. desligando # gnt-instance shutdown maquina 5. ligando # gnt-instance startup maquina 6. reiniciando # gnt-instance reboot maquina
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. GANETI: Problemas ● Uso de Múltiplos volumes – storage area network (SAN) ● SNAPSHOTs ● Clonagem de máquinas ● DRDB e desempenho ● I/O ● Múltiplas Redes
  • 32. 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
  • 33. 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
  • 34. 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.
  • 35. GANETI: Limitações dos Hooks Sabendo que os hooks são podem ser utilizados instalação das VMS, como ir além dos hooks...?
  • 37. 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
  • 38. 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
  • 39. PUPPET: Funcionamento ● Autônomo ● Cliente obtém plugins ● Cliente/Servidor ● Cliente envia fatos ● HTTPS ● Servidor produz ● Certificado de Cliente catálogo ● Pull por default ● Cliente processa ● Push opcional catálogo ● Cliente envia relatório
  • 40. Puppet: Fácil Aprendizado Sintaxe Declarativa c l ass r sy sl og { pac kage { ' r s ysl og' : ens ur e => pr esent , } s er vi ce { ' r s ysl og' : has r es t ar t => t r ue, } f i l e { ' / et c/ r sy s l og. d/ l ogs er v er 01. conf ' : ens ur e => pr esent , s our ce => ' puppet : / / / f i l es / r s ys l og/ r s ys l og. d/ l ogser ver 01. c onf ' , not i f y => Ser vi ce[ ' r s ys l og' ] , } }
  • 41. 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 }
  • 42. Puppet: Auto documentado c l as s l i nux - s er v er { # I nc l ude c l as s es c om on t o al l l i nux s er v er s m i nc l ude l oc al m at i nc l ude nt pdat e i nc l ude puppet : : c onf i nc l ude s s h: : s er v er i nc l ude s udoer s i nc l ude us er s i nc l ude ut i l s i nc l ude z abbi x - agent i nc l ude edi t or i nc l ude s nm pd i nc l ude r s y s l og #. . . }
  • 43. 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 ncl ui r ão a c l ass 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.
  • 44. 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' , } }
  • 45. Puppet: Expansível def i ne pgcl i ent ( $ens ur e = pr esent , ● Puppet $i p = $i paddr es s) { @ 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 #. . .
  • 46. 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
  • 47. Frontends – Puppet Dashboard
  • 48. Frontends – The Foreman ● Visualiza ● Inventário (fatos) ● Relatório ● Configurações ● Provisiona servidores ● Kickstart ● Jumpstart ● Preseed
  • 49. PUPPET + GANETI Onde podemos chegar com essa combinação?
  • 50. 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 - Máquina Virtual – ● de maquina física – 40 minutos Debian Lenny Tempo de instalação e configuração Apache2, ● PHP5, MYSQL – 2 horas** ● Tempo de criação de
  • 51. 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ê.
  • 52. 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
  • 53. Contato, Dúvidas, Perguntas Guto Carvalho: Daniel Sobral [email protected] dcsobral@gmail @gutocarvalho .com @dcsobral http://gutocarvalho.netem nossos sites. Palestras de hoje disponíveis /dokuwiki http://dcsobral.blog Http://github.com/ Commons - Atribuição Palestra sob licença Creative dcsobral Http://github.co m/dcsobral