O documento discute a ferramenta de gerenciamento de virtualização Ganeti. Em três frases, o documento apresenta o caso de uso da EBC, que migrou 160 máquinas virtuais para um cluster Ganeti com 15 nós, permitindo administração centralizada e automação de serviços. Além disso, discute como o Ganeti oferece recursos como replicação de dados em tempo real e migração transparente de VMs entre nós do cluster.
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.
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
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
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
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.