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 TecnisysJosé Augusto Carvalho @gutocarvalhoDaniel Sobral @dcsobralJefferson Santos @jalexandre0
Equipe EBCTadeu Ibns N. Rocha – [email protected]é Eufrásio @coredumpNieson Santos – [email protected]
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_source_configuration_management_software
PUPPET: Funcionamento
● Tipos:● Autônomo
– Configuração local● Cliente/Servidor
– HTTPS– Certificado de Cliente– Pull por default– Push opcional
● Passos:● Cliente obtém plugins● Cliente envia fatos● Servidor produz
catálogo● Cliente processa
catálogo● Cliente envia relatório
Puppet: Fácil AprendizadoSintaxe 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 AprendizadoIndependente de Plataforma
cl ass edi t or { $vi m = $oper at i ngsyst em ? { ' RedHat ' => ' v i m- enhanced', ' Cent OS' => ' v i m- enhanced', ' Fedor a' => ' v i m- enhanced', def aul t => ' v i m', } package { " $vi m": ensur e => pr esent, al i as => ' v i m', } }node “ host 01. domai n. com. br ” { i ncl ude edi t or}node “ host 02. domai n. com. br ” { i ncl 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 ogcommi t 263b2239ccf f 746f 345c448d723f 4f f 52d3f 8c0f Aut hor : Dani el Sobr al <dcsobr al @gmai l . com> Dat e: Thu Mar 31 22: 11: 16 2011 - 0300 Excl ui a bol et i ns das máqui nas conf i gur adas como mt a sat él i t e. Li mi t a a conf i gur ação do exi m4 às máqui nas Ubunt u e Debi an. commi t 8f bed5a4b8095b7560941c598454d47f 3b3dec7e Aut hor : Dani el Sobr al <dcsobr al @gmai l . com> Dat e: Thu Mar 31 22: 08: 22 2011 - 0300 Cl asse debi an- common adapt ada par a l i dar com Ubunt u. Basi cament e,f or ça l i dar com ser vi ços no padr ão Debi an ( Ubunt u supor t a padr ão Fr eeBSD t ambém) , e não mexe 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 asse debi an- ser ver. Ver i f i ca se o ker nel é xen, e, se f or , i nc l ui o l i nux modul es cor r espondent e.
Puppet: Altamente Flexível
node " el ei coesconcur vm01" { i ncl ude l i nux- ser ver j boss: : app { ' consel ho': conf => ' def aul t ', pgdb => ' consel hopr od' , # Al t er a pg_hba. conf } }
node “ el ei coesconcur vmbd01” { i ncl ude l i nux- ser ver pgdb { ' consel hopr od' : # Ger a XML par a dat asour ce passwor d => ' * * * * * * * * ', pgver si on => ' 8. 4', } }
Puppet: Expansível
● Puppet● Classes● Definições
● Templates (ERB)● Ruby
● Fatos● Funções● Tipos● Provedores
def i ne pgcl i ent ( $ensur e = pr esent ,$i p = $i paddr ess) { @@l i ne { " pgcl i ent ${ i p} ": ensur e => $ensur e, l i ne => " ${ i p} / 32\ n", r equi r e => Fi l e[ ' c l i ent i p' ], t ag => " pgcl i ent _${ t i t l e} " , } }
# augeasver si on. r b Fact er . add( " augeasver si on" ) do set code do begi n r equi r e ' augeas' aug = Augeas: : open( ' ' , ' ' ,Augeas: : NO_LOAD & Augeas: : NO_STDI NC) aug. get ( ' / augeas/ ver s i on' ) | |ni l #. . .
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/BlogHttp://ww.puppetlabs.comHttp://www.puppetlabs.com
Twitter@puppetlabs
Http://www.github.com/puppelabs
Google GroupsPuppet-camp, puppet-users, puppet-dev
IRCIrc.freenode.org #puppet
Site/Bloghttp://code.google.com/p/ganeti/
Docshttp://docs.ganeti.org
Twitter (manager web do ganeti)@ganetiwebmgr
Google Groupsganeti, ganeti-develganeti-webmgr
IRCIrc.freenode.org #ganeti
Contato, Dúvidas, Perguntas
Guto Carvalho:[email protected]
@gutocarvalho
http://gutocarvalho.net/dokuwiki
Http://github.com/dcsobral
Daniel [email protected]
@dcsobral
http://dcsobral.blogspot.com
Http://github.com/dcsobral
Palestras de hoje disponíveis em nossos sites.
Palestra sob licença Creative Commons – Atribuição.
Top Related