53
FLISOL – DF - 2011 Assuma o controle do seu parque virtualizado Palestrantes: Guto Carvalho @gutocarvalho Daniel Sobral @dcsobral

Palestra ganeti puppet

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Palestra ganeti puppet

FLISOL – DF - 2011

Assuma o controle do seu parque virtualizado

Palestrantes:Guto Carvalho @gutocarvalho

Daniel Sobral @dcsobral

Page 2: Palestra 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: Palestra ganeti puppet

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

Page 4: Palestra ganeti puppet

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

Page 5: Palestra ganeti puppet

Decisões Importantes● Utilização de tecnologia livre ou opensource● Internalizar suporte● Utilização coerente de recursos e orçamento

Page 6: Palestra ganeti puppet

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

Page 7: Palestra ganeti puppet

Especialistas Envolvidos

Equipe TecnisysJosé Augusto Carvalho @gutocarvalho

Daniel Sobral @dcsobralJefferson Santos @jalexandre0

Equipe EBCCoordenadores

Tadeu Ibns N. Rocha – [email protected]é Eufrásio @coredump

SysAdminsNieson Santos – [email protected]

Page 8: Palestra ganeti puppet

VIRTUALIZAÇÃO

Page 9: Palestra ganeti puppet

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≃ ≃

Page 10: Palestra ganeti puppet

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

Page 11: Palestra ganeti puppet

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.

● Usa Python, OpenSSL, Xen, KVM, LVM, DRBD Desenvolvida pelo Google, disponibilizado em Agosto de 2007. É utilizado pelo Google internamente. Foi liberado com a licença GPLv2

● Site do projeto: http://code.google.com/p/ganeti/

Page 12: Palestra ganeti puppet

GANETI: Hypervisors

XENXxxxXxxxXxx

KVMXxxXxXxXx

Page 13: Palestra ganeti puppet

GANETI: Estrutura Lógica● Cluster● Nó mestre● Nós● Instâncias

Page 14: Palestra ganeti puppet

GANETI: Organização Lógica do Cluster

Page 15: Palestra ganeti puppet

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.

Page 16: Palestra ganeti puppet

GANETI: Listando nós

Page 17: Palestra ganeti puppet

GANETI: Listando instâncias

Page 18: Palestra ganeti puppet

GANETI: Listando info de VM

Page 19: Palestra ganeti puppet

GANETI: Movendo VM entre nós

Page 20: Palestra ganeti puppet

GANETI: Operações

1. Criando um cluster# gnt-cluster init gnt-node01.empresa

2. Adicionando nó ao cluster# 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 21: Palestra ganeti puppet

GANETI: Operações

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 a partir do nó mestre# gnt-instance console maquina

8. removendo# gnt-instance remove maquina

Page 22: Palestra ganeti puppet

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

Page 23: Palestra ganeti puppet

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

Page 24: Palestra ganeti puppet

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

Page 25: Palestra ganeti puppet

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

Page 26: Palestra ganeti puppet

GANETI: Problemas● Uso de Múltiplos volumes – storage area

network (SAN)● SNAPSHOTs● Clonagem de máquinas● DRDB e desempenho● I/O● Múltiplas Redes

Page 27: Palestra ganeti puppet

GANETI: Front-End

Page 28: Palestra ganeti puppet

GANETI: Web Manager

Page 29: Palestra ganeti puppet

GANETI: Web Manager

Page 30: Palestra ganeti puppet

GANETI: Web Manager

Page 31: Palestra ganeti puppet

GANETI: Web Manager

Page 32: Palestra ganeti puppet

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 minutosMá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 33: Palestra ganeti puppet

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 minutosMá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, criação de usuários, instalação de pacotes básicos do sysadmin.

Page 34: Palestra ganeti puppet

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.

Page 35: Palestra ganeti puppet

GANETI: Limitações dos Hooks

Sabendo que os hooks são podem ser utilizados instalação das VMS, como ir além dos hooks...?

Page 36: Palestra ganeti puppet

Gestão de Configuração

Page 37: Palestra 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● Elementos comumente gerenciados

● Usuários● Grupos● Arquivos● pacotes instalados● execução periódica de scripts

Page 38: Palestra ganeti puppet

Nossa Escolha● Puppet (2005)

● Ruby, GPL● AIX, BSD, HP-UX,

Linux, MaxOS, Solaris, Windows(*)

● Wikipedia:● Configuration_management● Comparison_of_open_sourc

e_configuration_management_software

Page 39: Palestra ganeti puppet

PUPPET: Funcionamento● Autônomo● Cliente/Servidor

● HTTPS● Certificado de Cliente● Pull por default● Push opcional

● Cliente obtém plugins● Cliente envia fatos● Servidor produz

catálogo● Cliente processa

catálogo● Cliente envia relatório

Page 40: Palestra ganeti puppet

Puppet: Fácil AprendizadoSintaxe Declarativa

cl ass r sysl og {

package { ' r sysl og' : ensur e => pr esent , } ser vi ce { ' r sysl og' : hasr est ar t => t r ue, } f i l e { ' / et c/ r sysl og. d/ l ogser ver 01. conf ' : ensur e => pr esent , sour ce => ' puppet : / / / f i l es/ r sysl og/ r sysl og. d/ l ogser ver 01. conf ' , not i f y => Ser vi ce[ ' r sysl og' ] , }}

Page 41: Palestra 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 42: Palestra ganeti puppet

Puppet: Auto documentado

cl ass l i nux- ser ver { # I ncl ude cl asses common t o al l l i nux ser ver s i ncl ude l ocal mt a i ncl ude nt pdat e i ncl ude puppet : : conf i ncl ude ssh: : ser ver i ncl ude sudoer s i ncl ude user s i ncl ude ut i l s i ncl ude zabbi x- agent i ncl ude edi t or i ncl ude snmpd i ncl ude r sys l og

#. . .}

Page 43: Palestra ganeti puppet

Puppet: Controle de Versão e Rollback

#gi t l ogcommi t 263b2239ccf f 746f 345c448d723f 4f f 52d3f 8c0fAut 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 3b3dec7eAut 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 44: Palestra 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 45: Palestra 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 bFact 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 46: Palestra ganeti puppet

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

Page 47: Palestra ganeti puppet

Frontends – Puppet Dashboard

Page 48: Palestra ganeti puppet

Frontends – The Foreman● Visualiza

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

● Provisiona servidores● Kickstart● Jumpstart● Preseed

Page 49: Palestra ganeti puppet

PUPPET + GANETI

Onde podemos chegar com essa combinação?

Page 50: Palestra 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 51: Palestra 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 52: Palestra ganeti puppet

Informações dos projetosSite/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 53: Palestra ganeti puppet

Contato, Dúvidas, Perguntas

Guto Carvalho:[email protected]@gutocarvalhohttp://gutocarvalho.net/dokuwikiHttp://github.com/dcsobral

Daniel [email protected]@dcsobralhttp://dcsobral.blogspot.comHttp://github.com/dcsobral

Palestras de hoje disponíveis em nossos sites.

Palestra sob licença Creative Commons - Atribuição