of 58 /58
CONSEGI 2011 Assuma o controle do seu parque virtualizado Palestrantes: Guto Carvalho @gutocarvalho Daniel Sobral @dcsobral

Consegi 2011: Ganeti + Puppet

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Consegi 2011: Ganeti + Puppet

CONSEGI 2011

Assuma o controle do seu parque virtualizado

Palestrantes:Guto Carvalho @gutocarvalho

Daniel Sobral @dcsobral

Page 2: Consegi 2011: Ganeti + Puppet

Já teve a sensação de estar perdendo o controle do seu ambiente virtualizado?

Foto tirada do site sysadminday.com por Frank Schicksal

Page 3: Consegi 2011: Ganeti + Puppet

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

Page 4: Consegi 2011: Ganeti + Puppet

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

Page 5: Consegi 2011: Ganeti + Puppet

CASE

EBC

Page 6: Consegi 2011: Ganeti + Puppet

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

Page 7: Consegi 2011: Ganeti + Puppet

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

Page 8: Consegi 2011: Ganeti + Puppet

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

Page 9: Consegi 2011: Ganeti + Puppet

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

Page 10: Consegi 2011: Ganeti + Puppet

Especialistas Envolvidos

Equipe TecnisysJosé Augusto Carvalho @gutocarvalhoDaniel Sobral @dcsobralJefferson Santos @jalexandre0

Equipe EBCTadeu Ibns N. Rocha – [email protected]é Eufrásio @coredumpNieson Santos – [email protected]

Page 11: Consegi 2011: Ganeti + Puppet

VIRTUALIZAÇÃO

Page 12: Consegi 2011: Ganeti + Puppet

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

Page 13: Consegi 2011: Ganeti + Puppet

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

Page 14: Consegi 2011: Ganeti + Puppet

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.

Page 15: Consegi 2011: Ganeti + Puppet

Estrutura Lógica do Ganeti

● Cluster● Nó mestre● Nós● Instâncias

Page 16: Consegi 2011: Ganeti + Puppet
Page 17: Consegi 2011: Ganeti + Puppet

Migração entre Nodes

Page 18: Consegi 2011: Ganeti + Puppet
Page 19: Consegi 2011: Ganeti + Puppet

Replicação

● Replicação de dados em tempo real via DRBD● Node secundário assume em caso de falha

Page 20: Consegi 2011: Ganeti + Puppet

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.

Page 21: Consegi 2011: Ganeti + Puppet

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.

Page 22: Consegi 2011: Ganeti + Puppet

Ferramenta Sólida

● Não depende de hardware específico● Escala linearmente● Redundância N+1

Page 23: Consegi 2011: Ganeti + Puppet

Administrando

Até agora tudo bem, mas e a administração como funciona, será que é realmente descomplicado e

transparente?

Page 24: Consegi 2011: Ganeti + Puppet

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

Page 25: Consegi 2011: Ganeti + Puppet

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

Page 26: Consegi 2011: Ganeti + Puppet

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

Page 27: Consegi 2011: Ganeti + Puppet

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

Page 28: Consegi 2011: Ganeti + Puppet

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

Page 29: Consegi 2011: Ganeti + Puppet

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

Page 30: Consegi 2011: Ganeti + Puppet

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

Page 31: Consegi 2011: Ganeti + Puppet

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

Page 32: Consegi 2011: Ganeti + Puppet

GanetI Web Manager

Page 33: Consegi 2011: Ganeti + Puppet

Ganeti Web Manager

Page 34: Consegi 2011: Ganeti + Puppet

GANETI: Web Manager

Page 35: Consegi 2011: Ganeti + Puppet

GANETI: Web Manager

Page 36: Consegi 2011: Ganeti + Puppet

GANETI: Web Manager

Page 37: Consegi 2011: Ganeti + Puppet

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.

Page 38: Consegi 2011: Ganeti + Puppet

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.

Page 39: Consegi 2011: Ganeti + Puppet

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?

Page 40: Consegi 2011: Ganeti + Puppet

Gestão de Configuração

Page 41: Consegi 2011: Ganeti + Puppet

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

Page 42: Consegi 2011: Ganeti + Puppet

Exemplos de Itens de Configuração

● Usuários● Grupos● Arquivos de Configuração● Pacotes instalados● Execução periódica de scripts

Page 43: Consegi 2011: Ganeti + Puppet

Nossa Escolha

● Puppet (2005)● Ruby, GPL● AIX, BSD, HP-UX,

Linux, MaxOS, Solaris, Windows(*)

● Wikipedia:● Configuration_management

● Comparison_of_open_source_configuration_management_software

Page 44: Consegi 2011: Ganeti + Puppet

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

Page 45: Consegi 2011: Ganeti + Puppet

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, }

Page 46: Consegi 2011: Ganeti + Puppet

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}

Page 47: Consegi 2011: Ganeti + Puppet

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

#...

Page 48: Consegi 2011: Ganeti + Puppet

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.

Page 49: Consegi 2011: Ganeti + Puppet

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', } }

Page 50: Consegi 2011: Ganeti + Puppet

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 #. . .

Page 51: Consegi 2011: Ganeti + Puppet

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

Page 52: Consegi 2011: Ganeti + Puppet

Frontends – Puppet Dashboard

Page 53: Consegi 2011: Ganeti + Puppet

Frontends – The Foreman

● Visualiza● Inventário (fatos)● Relatório● Configurações

● Provisiona servidores● Kickstart● Jumpstart● Preseed

Page 54: Consegi 2011: Ganeti + Puppet

PUPPET + GANETI

Onde podemos chegar com essa combinação?

Page 55: Consegi 2011: Ganeti + Puppet

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

Page 56: Consegi 2011: Ganeti + Puppet

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ê.

Page 57: Consegi 2011: Ganeti + Puppet

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

Page 58: Consegi 2011: Ganeti + Puppet

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.