SlideShare uma empresa Scribd logo
1 de 58
Baixar para ler offline
CONSEGI 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
O que se busca com a virtualização?
●   Melhor consumo de energia
●   Administração Centralizada
●   Uso eficiente dos recursos de hardware
●   Agilidade na instalação de novos ambientes
●   Isolamento de ambientes
●   Flexibilidade para ajustar recursos das Vms
     ●   Memória
     ●   Processamento
     ●   Armazenamento
     ●   Rede
●   Maior controle do ambiente
●   Consolidação de seu ambiente físico
●   Aumentar disponibilidade do ambiente
Quais os problemas de percurso?
●   Crescimento sem Padronização
●   Crescimento sem Monitoramento
●   Crescimento sem Documentação
●   Tecnologias híbridas que combinam softwares
    proprietários e livres que tem dificuldades para
    funcionarem em conjunto e que demandam
    manutenções e ajustes constantes.
●   Ambiente com grande complexidade de manutenção
CASE

EBC
Necessidades do cliente
●   Isolamento de ambientes e serviços em vm's
●   Facilidade de migração entre sites em uma mesma cidade
●   Ter maior estabilidade nos serviços oferecidos
●   Ter maior disponibilidade
●   Curta curva de aprendizagem – na tecnologia de
    virtualização - para a equipe de administradores.
●   CPDs geograficamente separados, permitindo movimentar
    máquinas entre eles de forma transparente.
●   Otimizar o uso de armazenamento em disco
Desafios
Centralização da administração e configuração
●


Padronização do ambiente
●


    ●   Sistemas operacionais
    ●   Ferramentas de administração
    ●   Configuração dos serviços
●Rápida implantação e implementação de
soluções
Conversão de infraestrutura
●


Ter uma manutenção descomplicada
●
Decisões Importantes
●   Utilização de tecnologia livre ou open-source
●   Internalizar suporte da solução
●   Utilização coerente de recursos e orçamento
●   Investimento em conhecimento e equipe
●   Investimento financeiro em hardware
●   Investimento financeiro mínimo em software
●   Renovação do parque de servidores
Caso de Estudo
       ●   EBC - Empresa Brasil de
           Comunicação
       ●   Cerca de 160 máquinas virtuais
           rodando em um 'cluster' com 15
           nós
       ●   Gestão e distribuição de
           configurações
       ●   Administração compartilhada de
           4 DevOps
       ●   Automação de serviços e
           procedimentos
       ●   Monitoramento robusto
Especialistas Envolvidos

Equipe Tecnisys
José Augusto Carvalho @gutocarvalho
Daniel Sobral @dcsobral
Jefferson Santos @jalexandre0

Equipe EBC
Tadeu Ibns N. Rocha – tadeuibns@gmail.com
José Eufrásio @coredump
Nieson Santos – nieson.santos@gmail.com
VIRTUALIZAÇÃO
Terminologia


Virtualização consiste em executar vários
sistemas operacionais em uma mesma máquina.

Cluster Node = Máquina Física

Instance = Máquina Virtual
Nossa escolha
●   Produto criado pelo Google: GANETI
●   Case interessante de uso interno no Google
●   Facilidade de implementação
●   Utilização de hypervisors livres XEN e KVM
●   Funciona em modo Cluster
●   Permite migração de máquinas entre nós do cluster
●   Administração simplificada via CLI ou WEB (frontends)
●   Boa documentação, desenvolvimento ativo e comunidade
    crescente
Visão Geral da Ferramenta
Gerenciador Open Source           para
virtualização em Cluster

Combina virtualização e replicação de
disco em tempo real

Oferece uma aplicação de alta
disponibilidade   promovendo     uma
melhor utilização dos recursos do seu
datacenter.

É utilizado pelo Google internamente.
Estrutura Lógica do Ganeti
●   Cluster
●   Nó mestre
●   Nós
●   Instâncias
Migração entre Nodes
Replicação
●   Replicação de dados em tempo real via DRBD
●   Node secundário assume em caso de falha
Administração Centralizada

Na infraestrutura XEN a administração é
descentralizada, precisávamos entrar em cada
máquina para fazer manutenções nas VM.


Hoje fazemos isto de forma centralizada no
master node.
Visão dos recursos disponíveis
Usando apenas XEN, para criar máquinas
precisávamos entrar em cada servidor para
avaliar os recursos disponíveis e escolher um
servidor ideal para instalar o serviço.


Com o Ganeti temos um visão completa de todo o
cluster a partir do nó Master.
Ferramenta Sólida
●   Não depende de hardware específico
●   Escala linearmente
●   Redundância N+1
Administrando




Até agora tudo bem, mas e a administração como
funciona, será que é realmente descomplicado e
                 transparente?
Operações em seu cluster via CLI
1. Criando um cluster (resumidamente)

# gnt-cluster init gnt-node01.empresa

2. Adicionando nó ao cluster (após instalar o node)

# gnt-instance add node02
# gnt-instance add node03

3. Criando máquina virtual

# gnt-instance add -n node1 -t plain -H memory=1G -s 10G -o
debian apache01
Comandos básicos
4. desligando
# gnt-instance shutdown maquina


5. ligando
# gnt-instance startup maquina

6. reiniciando
# gnt-instance reboot maquina

7. acessando console de maquinas em qualquer lugar do cluster mestre

# gnt-instance console maquina

8. removendo instancia

# gnt-instance remove maquina
Comandos básicos
9. Movendo máquinas entre nós

# gnt-instance move -n gnt-node05 maquina

10. Exportando instancia

# gnt-backup export -n gnt-node05 maquina

11. Importando instância

# gnt-backup import -n gnt-node06 --src-node=gnt-node05 –
src-dir=/diretorio maquina
Comandos Básicos
14. Montando discos localmente para manutenções

# gnt-instance activate-disks maquina
# ssh gnt-nodeXX
# kpartx -av /dev/mapper/xenvg-xxx.disk0
# mount /dev/xenvg/xxxx /mnt/disco
Alterando recursos de VMs
1. Adicionando mais memoria

# gnt-instance modify -B memory=4G maquina


2. Adicionando mais processadores


# gnt-instance modify -B vcpus=3 maquina


3. Adicionando mais placas de rede


# gnt-instance modify -B --net add:ip=192.168.50.173 maquina


4. Adicionando disco/partição


# gnt-instance gnt-instance modify --disk add:size=1g smtp02
Hooks
●   Execução de comandos na instalação da instância
●   Criação de Perfis de Instalação
●   Padronização de configurações do OS durante a
    instalação
    ●   Instalação e configuração dos pacotes básicos
    ●   Configurações de idioma
    ●   Configurações de localização
    ●   Configurações de repositórios
    ●   Configurações de rede e segurança
    ●   Configurações de usuários e grupos
Ganhos com essa tecnologia
Cliente
●   Uso coerente dos recursos de hardware/rede
●   Investimento em conhecimento da equipe
●   Investimento de SW direcionado para HW

Equipe
●   Facilidade na criação e adm. de máquinas
●   Movimentação de VM's entre nós e SITES
●   Replicação DRDB = Alta disponibilidade
Limitações
●   Uso de Múltiplos volumes – storage area
    network (SAN)
●   SNAPSHOTs
●   Clonagem de máquinas
●   DRDB e desempenho
●   I/O
●   Uso de Múltiplas Redes
GanetI Web Manager
Ganeti Web Manager
GANETI: Web Manager
GANETI: Web Manager
GANETI: Web Manager
Comparando
Instalação de Máquina Física – Debian Lenny

Tempo de criação de maquina virtual - 40 minutos
Tempo de configuração/update* via internet – 40 minutos
* Levando em conta configurações da rede, locale, ntpdate, backup,
monitoramento, criação de usuários, instalação de pacotes básicos do
sysadmin.

Instalação de Máquina Virtual – Debian Lenny

Tempo de criação de maquina virtual - 2 minutos
Tempo de configuração/update* usando Hooks – 2 a 4 minutos
* Levando em conta configurações da rede, locale, ntpdate, backup, monitoramento,
criação de usuários, instalação de pacotes básicos do sysadmin.
Dicas importantes
●   Atenção com DNS, dependência grande para criar a
    VMs
●   Uso e abuse de Activate Disks para montar e `clonar`
    máquinas
●   GrowDisk e Parted
●   Nunca dê CTRL+C
●   Usar - - submit
●   Tenha paciência, não use KILL em um processo de
    MOVE ou CREATE. Espere terminar.
Expandindo os Hooks



Sabendo que os hooks só podem ser utilizados
instalação das VMS, como ir além dos hooks...?

Como podemos atuar no gerenciamento de
configurações no momento em que precisarmos?
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
●   Acelerar a criação de novos servidores
●   Acelerar a configuração de serviços
Exemplos de Itens de Configuração
●   Usuários
●   Grupos
●   Arquivos de Configuração
●   Pacotes instalados
●   Execução periódica de scripts
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
●   Tipos:                           ●   Passos:
    ●   Autônomo                         ●   Cliente obtém plugins
        –   Configuração local           ●   Cliente envia fatos
    ●   Cliente/Servidor                 ●   Servidor produz
        –   HTTPS                            catálogo
        –   Certificado de Cliente       ●   Cliente processa
        –   Pull por default                 catálogo
        –   Push opcional                ●   Cliente envia relatório
Puppet: Fácil Aprendizado
               Sintaxe Declarativa
●   Pacote ntpdate
     ●   Garantir que esteja instalado
●   Crontab
     ●   Usuário root
     ●   Comando 'ntpdate ntp.dominio'
     ●   Executar de hora em hora

    package { 'ntpdate':
        ensure => installed,
    }

    cron { 'sincroniza horario':
        user    => 'root',
        command => '/usr/sbin/ntpdate ntp.dominio',
        minute => 0,
    }
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

class linux-server {
   # Include classes common to all linux servers
   include localmta
   include ntpdate
   include puppet::conf
   include ssh::server
   include sudoers
   include users
   include utils
   include zabbix-agent
   include editor
   include snmpd
   include rsyslog

  #...
Puppet: Controle de Versão e
                 Rollback
#gi t l og
c om i t 263b2239cc f f 746f 345c448d723f 4f f 52d3f 8c0f
    m
Aut hor : Dani el Sobr al <dcs obr al @ ai l . com
                                       gm         >
Dat e:     Thu Mar 31 22: 11: 16 2011 - 0300

    Ex cl ui a bol et i ns das máqui nas c onf i gur adas c om m a s at él i t e.
                                                              o t

    Li m t a a conf i gur aç ão do ex i m às m
        i                                4    áqui nas Ubunt u e Debi an.

c om i t 8f bed5a4b8095b7560941c598454d47f 3b3dec7e
    m
Aut hor : Dani el Sobr al <dcs obr al @ ai l . com
                                       gm         >
Dat e:    Thu M ar 31 22: 08: 22 2011 - 0300

      Cl as se debi an- c om on adapt ada par a l i dar com Ubunt u. Basi cam
                            m                                                  ent e,
f or ça
      l i dar com s er vi ços no padr ão Debi an ( Ubunt u s upor t a padr ão Fr eeBSD
      t am bém , e não m
              )            exe no sour ce l i st ( por hor a).

    Si st emas Ubunt u t ambém i nc l ui r ão a c l as s e debi an- s er ver.

    Ver i f i ca se o k er nel é xen, e, s e f or , i nc l ui o l i nux modul es
    cor r es pondent e.
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 ess) {
                                   @ l i ne { " pgcl i ent ${ i p} ":
                                     @
    ●   Classes                           ens ur e => $ensur e,
                                          l i ne     => " ${ i p} / 32 n",
                                          r equi r e => Fi l e[ ' c l i ent i p' ],
    ●   Definições                        t ag       => " pgcl i ent _ $
                           { t i t l e} " ,
●   Templates (ERB)        }
                                   }

●   Ruby                   # augeas v er s i on. r b
                           Fact er . add( " augeasv er si on" ) do
    ●   Fatos                 set code do
                                  begi n
                                    r equi r e ' augeas '
    ●   Funções                     aug = Augeas: : open( ' ' , ' ' ,
                           Augeas: : NO_LOAD & Augeas : : NO_ STDI NC)
    ●   Tipos                       aug. get ( ' / augeas/ v er s i on' ) | |
                           ni l
    ●   Provedores         #. . .
Puppet: Problemas
●   Mensagens de erro ruins
●   Servidor default nao segura mais de 20
    máquinas
    ●   Com Apache/Passenger, já temos +160 servidores
●   Não distribui arquivos grandes
    ●   Usar pacotes ou execução de comandos como
        wget
●   Grande investimento de tempo para ir do nível
    médio ao de expert
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 - de maquina física – 40 minutos
 ●   Tempo de instalação e configuração Apache2, PHP5, MYSQL – 2 horas**


Máquina Virtual – Debian Lenny

 ●   Tempo de criação de maquina virtual - 2 minutos
 ●   Tempo de configuração/update OS* usando Hooks – 2 a 4 minutos
 ●   Tempo de instação e configuração Apache2, PHP5, MYSQL – 2 a 4 minutos**


* Levando em conta configurações da rede, locale, ntpdate, backup, monitoração, criação de usuários,
instalação de pacotes básicos do sysadmin.

** Levando em conta hardening, tuning os, apache2, php5, mysql, considerando ter as classes prontas
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.com
@gutocarvalho                      @dcsobral
http://gutocarvalho.net/dokuwiki   http://dcsobral.blogspot.com
Http://github.com/dcsobral         Http://github.com/dcsobral


          Palestras de hoje disponíveis em nossos sites.
       Palestra sob licença Creative Commons – Atribuição.

Mais conteúdo relacionado

Mais procurados

Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet
4LinuxCursos
 

Mais procurados (20)

(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet
 
Trabalhando com Módulos no Puppet
Trabalhando com Módulos no PuppetTrabalhando com Módulos no Puppet
Trabalhando com Módulos no Puppet
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
 
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
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - Puppet
 
Opennebula Introdução
Opennebula IntroduçãoOpennebula Introdução
Opennebula Introdução
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - Tchelinux
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQ
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Monitoração com Nagios
Monitoração com NagiosMonitoração com Nagios
Monitoração com Nagios
 
Rancher e ansible
Rancher e ansibleRancher e ansible
Rancher e ansible
 
Project HA
Project HAProject HA
Project HA
 

Semelhante a Consegi 2011: Ganeti + Puppet

VDI e Projeto OSDVT
VDI e Projeto OSDVTVDI e Projeto OSDVT
VDI e Projeto OSDVT
apsegundo
 
Paas automação de infraestrutura, configuração e build na nuvem
Paas automação de infraestrutura, configuração e build na nuvemPaas automação de infraestrutura, configuração e build na nuvem
Paas automação de infraestrutura, configuração e build na nuvem
Dextra
 
VMFIT - Virtual Machine-based Fault and Intrusion Tolerance
VMFIT - Virtual Machine-based Fault and Intrusion ToleranceVMFIT - Virtual Machine-based Fault and Intrusion Tolerance
VMFIT - Virtual Machine-based Fault and Intrusion Tolerance
Leandro Magnabosco
 
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
iG - Internet Group do Brasil S/A
 

Semelhante a Consegi 2011: Ganeti + Puppet (20)

Infraestrutura como código
Infraestrutura como códigoInfraestrutura como código
Infraestrutura como código
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Um novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governoUm novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governo
 
VDI e Projeto OSDVT
VDI e Projeto OSDVTVDI e Projeto OSDVT
VDI e Projeto OSDVT
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppet
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
Paas automação de infraestrutura, configuração e build na nuvem
Paas automação de infraestrutura, configuração e build na nuvemPaas automação de infraestrutura, configuração e build na nuvem
Paas automação de infraestrutura, configuração e build na nuvem
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de Código
 
Apresentação HyperCloud GT8
Apresentação HyperCloud GT8Apresentação HyperCloud GT8
Apresentação HyperCloud GT8
 
VMFIT - Virtual Machine-based Fault and Intrusion Tolerance
VMFIT - Virtual Machine-based Fault and Intrusion ToleranceVMFIT - Virtual Machine-based Fault and Intrusion Tolerance
VMFIT - Virtual Machine-based Fault and Intrusion Tolerance
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to hero
 
Dev Ops at Paguemenos
Dev Ops at PaguemenosDev Ops at Paguemenos
Dev Ops at Paguemenos
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
Apresentação GT - Digital Preservation
Apresentação GT - Digital PreservationApresentação GT - Digital Preservation
Apresentação GT - Digital Preservation
 
Aula01
Aula01Aula01
Aula01
 
Terminal server
Terminal serverTerminal server
Terminal server
 
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
 
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
 
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
 

Mais de Jose Augusto Carvalho

Mais de Jose Augusto Carvalho (9)

Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
Conhecendo o Wordpress
Conhecendo o WordpressConhecendo o Wordpress
Conhecendo o Wordpress
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2
 
O que é DevOps afinal?
O que é DevOps afinal?O que é DevOps afinal?
O que é DevOps afinal?
 
Palestra Puppet Hora Livre
Palestra Puppet Hora LivrePalestra Puppet Hora Livre
Palestra Puppet Hora Livre
 
Oficina Puppet latinoware
Oficina Puppet latinowareOficina Puppet latinoware
Oficina Puppet latinoware
 
Puppet Cloud IaaS
Puppet Cloud IaaSPuppet Cloud IaaS
Puppet Cloud IaaS
 
Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)
 

Consegi 2011: Ganeti + Puppet

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