Consegi 2011: Ganeti + Puppet
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Consegi 2011: Ganeti + Puppet

on

  • 2,085 views

Palestra que aborda virtualização e gestão de configurações, apresentada por @gutocarvalho e @dcosbral

Palestra que aborda virtualização e gestão de configurações, apresentada por @gutocarvalho e @dcosbral

Statistics

Views

Total Views
2,085
Views on SlideShare
1,911
Embed Views
174

Actions

Likes
2
Downloads
36
Comments
0

5 Embeds 174

http://gutocarvalho.net 154
http://planeta.gnulinuxbrasil.org 16
http://www.linkedin.com 2
http://feeds.feedburner.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Consegi 2011: Ganeti + Puppet Presentation Transcript

  • 1. CONSEGI 2011Assuma 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
  • 5. CASEEBC
  • 6. Necessidades do cliente● Isolamento de ambientes e serviços em vms● 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. DesafiosCentralizaçã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 desoluçõesConversã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 EnvolvidosEquipe TecnisysJosé Augusto Carvalho @gutocarvalhoDaniel Sobral @dcsobralJefferson Santos @jalexandre0Equipe EBCTadeu Ibns N. Rocha – tadeuibns@gmail.comJosé Eufrásio @coredumpNieson Santos – nieson.santos@gmail.com
  • 11. VIRTUALIZAÇÃO
  • 12. TerminologiaVirtualização consiste em executar váriossistemas operacionais em uma mesma máquina.Cluster Node = Máquina FísicaInstance = 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 FerramentaGerenciador Open Source paravirtualização em ClusterCombina virtualização e replicação dedisco em tempo realOferece uma aplicação de altadisponibilidade promovendo umamelhor utilização dos recursos do seudatacenter.É utilizado pelo Google internamente.
  • 15. Estrutura Lógica do Ganeti● Cluster● Nó mestre● Nós● Instâncias
  • 16. Migração entre Nodes
  • 17. Replicação● Replicação de dados em tempo real via DRBD● Node secundário assume em caso de falha
  • 18. Administração CentralizadaNa infraestrutura XEN a administração édescentralizada, precisávamos entrar em cadamáquina para fazer manutenções nas VM.Hoje fazemos isto de forma centralizada nomaster node.
  • 19. Visão dos recursos disponíveisUsando apenas XEN, para criar máquinasprecisávamos entrar em cada servidor paraavaliar os recursos disponíveis e escolher umservidor ideal para instalar o serviço.Com o Ganeti temos um visão completa de todo ocluster a partir do nó Master.
  • 20. Ferramenta Sólida● Não depende de hardware específico● Escala linearmente● Redundância N+1
  • 21. AdministrandoAté agora tudo bem, mas e a administração comofunciona, será que é realmente descomplicado e transparente?
  • 22. Operações em seu cluster via CLI1. Criando um cluster (resumidamente)# gnt-cluster init gnt-node01.empresa2. Adicionando nó ao cluster (após instalar o node)# gnt-instance add node02# gnt-instance add node033. Criando máquina virtual# gnt-instance add -n node1 -t plain -H memory=1G -s 10G -odebian apache01
  • 23. Comandos básicos4. desligando# gnt-instance shutdown maquina5. ligando# gnt-instance startup maquina6. reiniciando# gnt-instance reboot maquina7. acessando console de maquinas em qualquer lugar do cluster mestre# gnt-instance console maquina8. removendo instancia# gnt-instance remove maquina
  • 24. Comandos básicos9. Movendo máquinas entre nós# gnt-instance move -n gnt-node05 maquina10. Exportando instancia# gnt-backup export -n gnt-node05 maquina11. Importando instância# gnt-backup import -n gnt-node06 --src-node=gnt-node05 –src-dir=/diretorio maquina
  • 25. Comandos Básicos14. 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
  • 26. Alterando recursos de VMs1. Adicionando mais memoria# gnt-instance modify -B memory=4G maquina2. Adicionando mais processadores# gnt-instance modify -B vcpus=3 maquina3. Adicionando mais placas de rede# gnt-instance modify -B --net add:ip=192.168.50.173 maquina4. Adicionando disco/partição# gnt-instance gnt-instance modify --disk add:size=1g smtp02
  • 27. 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
  • 28. Ganhos com essa tecnologiaCliente● Uso coerente dos recursos de hardware/rede● Investimento em conhecimento da equipe● Investimento de SW direcionado para HWEquipe● Facilidade na criação e adm. de máquinas● Movimentação de VMs entre nós e SITES● Replicação DRDB = Alta disponibilidade
  • 29. 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
  • 30. GanetI Web Manager
  • 31. Ganeti Web Manager
  • 32. GANETI: Web Manager
  • 33. GANETI: Web Manager
  • 34. GANETI: Web Manager
  • 35. ComparandoInstalação de Máquina Física – Debian LennyTempo de criação de maquina virtual - 40 minutosTempo 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 dosysadmin.Instalação de Máquina Virtual – Debian LennyTempo de criação de maquina virtual - 2 minutosTempo 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.
  • 36. 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.
  • 37. Expandindo os HooksSabendo que os hooks só podem ser utilizadosinstalação das VMS, como ir além dos hooks...?Como podemos atuar no gerenciamento deconfigurações no momento em que precisarmos?
  • 38. Gestão de Configuração
  • 39. 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
  • 40. Exemplos de Itens de Configuração● Usuários● Grupos● Arquivos de Configuração● Pacotes instalados● Execução periódica de scripts
  • 41. 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
  • 42. 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
  • 43. 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, }
  • 44. Puppet: Fácil Aprendizado Independente de Plataformac 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}
  • 45. Puppet: Auto documentadoclass 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 #...
  • 46. Puppet: Controle de Versão e Rollback#gi t l ogc om i t 263b2239cc f f 746f 345c448d723f 4f f 52d3f 8c0f mAut 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 mAut 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.
  • 47. Puppet: Altamente Flexívelnode " 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, }}
  • 48. 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 #. . .
  • 49. 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
  • 50. Frontends – Puppet Dashboard
  • 51. Frontends – The Foreman● Visualiza ● Inventário (fatos) ● Relatório ● Configurações● Provisiona servidores ● Kickstart ● Jumpstart ● Preseed
  • 52. PUPPET + GANETIOnde podemos chegar com essa combinação?
  • 53. Comparação FinalMá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
  • 54. ConclusãoO Ganeti é uma alternativa viável, modernaestável, largamente utilizado no google, emfranco desenvolvimento com um comunidadecrescente e ativa.O Puppet é uma ferramenta essencial paragerenciar e distribuir configurações, ele é umbatalhão de sysadmins trabalhando para você.
  • 55. Informações dos projetosSite/Blog Site/BlogHttp://ww.puppetlabs.com http://code.google.com/p/ganeti/Http://www.puppetlabs.com DocsTwitter http://docs.ganeti.org@puppetlabs Twitter (manager web do ganeti)Http://www.github.com/puppelabs @ganetiwebmgrGoogle Groups Google GroupsPuppet-camp, ganeti,puppet-users, ganeti-develpuppet-dev ganeti-webmgrIRC IRCIrc.freenode.org Irc.freenode.org#puppet #ganeti
  • 56. Contato, Dúvidas, PerguntasGuto Carvalho: Daniel Sobralgutocarvalho@gmail.com dcsobral@gmail.com@gutocarvalho @dcsobralhttp://gutocarvalho.net/dokuwiki http://dcsobral.blogspot.comHttp://github.com/dcsobral Http://github.com/dcsobral Palestras de hoje disponíveis em nossos sites. Palestra sob licença Creative Commons – Atribuição.