Palestra do FLISOL 2011 DF, sobre uso do Ganeti e do Puppet para administração de ambientes virtualizados.
Essa palestra possui problemas de formatação.
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.
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.
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
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
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