SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

Criando um baseline de seu ambiente completo utilizando ssis e ssrs
Criando um baseline de seu ambiente completo utilizando ssis e ssrsCriando um baseline de seu ambiente completo utilizando ssis e ssrs
Criando um baseline de seu ambiente completo utilizando ssis e ssrsMarcos Freccia
 
131444591 97430634-apostila-468-zabbix
131444591 97430634-apostila-468-zabbix131444591 97430634-apostila-468-zabbix
131444591 97430634-apostila-468-zabbixRodrigo Souza
 
Gnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USPGnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USPWellington Silva
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppetRamon Mota
 
Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3suk kim
 
Workshop SQL Server 2012
Workshop SQL Server 2012Workshop SQL Server 2012
Workshop SQL Server 2012Viviane_ribeiro
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.Eduardo Medeiros
 
Implantação do Windows Server 2008 R2
Implantação do Windows Server 2008 R2Implantação do Windows Server 2008 R2
Implantação do Windows Server 2008 R2Fabio Hara
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosEduardo Legatti
 
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvemCodificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvemMarcos Freccia
 

En vedette (16)

Introdução a TDD
Introdução a TDDIntrodução a TDD
Introdução a TDD
 
Criando um baseline de seu ambiente completo utilizando ssis e ssrs
Criando um baseline de seu ambiente completo utilizando ssis e ssrsCriando um baseline de seu ambiente completo utilizando ssis e ssrs
Criando um baseline de seu ambiente completo utilizando ssis e ssrs
 
131444591 97430634-apostila-468-zabbix
131444591 97430634-apostila-468-zabbix131444591 97430634-apostila-468-zabbix
131444591 97430634-apostila-468-zabbix
 
Gnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USPGnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USP
 
Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppet
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 
Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3
 
Workshop SQL Server 2012
Workshop SQL Server 2012Workshop SQL Server 2012
Workshop SQL Server 2012
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.
 
Implantação do Windows Server 2008 R2
Implantação do Windows Server 2008 R2Implantação do Windows Server 2008 R2
Implantação do Windows Server 2008 R2
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
Treinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12cTreinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12c
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008
 
12c on RHEL7
12c on RHEL712c on RHEL7
12c on RHEL7
 
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvemCodificando Night Week 2017 - Migrando seu banco de dados para a nuvem
Codificando Night Week 2017 - Migrando seu banco de dados para a nuvem
 

Similaire à Palestra ganeti puppet

Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalaçãoLuís Eduardo
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!magnunleno
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
Datacenter na nuvem
Datacenter na nuvemDatacenter na nuvem
Datacenter na nuvemIgnacio Nin
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?tdc-globalcode
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017Fabio Janiszevski
 
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...GBanin
 

Similaire à Palestra ganeti puppet (20)

Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalação
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 
Palestra microservice semanatic
Palestra microservice semanaticPalestra microservice semanatic
Palestra microservice semanatic
 
DevOps Primeiros Passos
DevOps Primeiros PassosDevOps Primeiros Passos
DevOps Primeiros Passos
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Qnax servidores dedicado no brasil
Qnax servidores dedicado no brasilQnax servidores dedicado no brasil
Qnax servidores dedicado no brasil
 
Datacenter na nuvem
Datacenter na nuvemDatacenter na nuvem
Datacenter na nuvem
 
Squid proxy
Squid proxySquid proxy
Squid proxy
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Cygwin
CygwinCygwin
Cygwin
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
 

Plus de Daniel Sobral

What can scala puzzlers teach us
What can scala puzzlers teach usWhat can scala puzzlers teach us
What can scala puzzlers teach usDaniel Sobral
 
Injecting Clock in Java
Injecting Clock in JavaInjecting Clock in Java
Injecting Clock in JavaDaniel Sobral
 
A JSR-310 Date: Beyond JODA Time
A JSR-310 Date: Beyond JODA TimeA JSR-310 Date: Beyond JODA Time
A JSR-310 Date: Beyond JODA TimeDaniel Sobral
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppetDaniel Sobral
 
Scala 2.10.0 (english version)
Scala 2.10.0 (english version)Scala 2.10.0 (english version)
Scala 2.10.0 (english version)Daniel Sobral
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Daniel Sobral
 

Plus de Daniel Sobral (9)

What can scala puzzlers teach us
What can scala puzzlers teach usWhat can scala puzzlers teach us
What can scala puzzlers teach us
 
Injecting Clock in Java
Injecting Clock in JavaInjecting Clock in Java
Injecting Clock in Java
 
A JSR-310 Date: Beyond JODA Time
A JSR-310 Date: Beyond JODA TimeA JSR-310 Date: Beyond JODA Time
A JSR-310 Date: Beyond JODA Time
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
 
Scala 2.10.0 (english version)
Scala 2.10.0 (english version)Scala 2.10.0 (english version)
Scala 2.10.0 (english version)
 
Scala 2.10.0
Scala 2.10.0Scala 2.10.0
Scala 2.10.0
 
Tutorial Puppet
Tutorial PuppetTutorial Puppet
Tutorial Puppet
 
Regex
RegexRegex
Regex
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
 

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 – tadeuibns@gmail.com José Eufrásio @coredump SysAdmins Nieson Santos – nieson.santos@gmail.com
  • 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 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