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

Like this? Share it with your network

Share

Consegi 2011: Ganeti + Puppet

  • 2,109 views
Uploaded on

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,109
On Slideshare
1,935
From Embeds
174
Number of Embeds
5

Actions

Shares
Downloads
37
Comments
0
Likes
2

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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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.