Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Já teve a sensação de estar perdendo o controle do seu ambiente virtualizado? Foto tirada do site sysadminday.com por Frank Schicksal

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Especialistas Envolvidos Equipe Tecnisys José Augusto Carvalho @gutocarvalho Daniel Sobral @dcsobral Jefferson Santos @jalexandre0 Equipe EBC Coordenadores Tadeu Ibns N. Rocha – [email protected] José Eufrásio @coredump SysAdmins Nieson Santos – [email protected]

Slide 8

Slide 8 text

VIRTUALIZAÇÃO

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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.

Slide 12

Slide 12 text

GANETI: Hypervisors XEN Xxxx Xxxx Xxx KVM Xxx Xx Xx Xx

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

GANETI: Organização Lógica do Cluster

Slide 15

Slide 15 text

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.

Slide 16

Slide 16 text

GANETI: Listando nós

Slide 17

Slide 17 text

GANETI: Listando instâncias

Slide 18

Slide 18 text

GANETI: Listando info de VM

Slide 19

Slide 19 text

GANETI: Movendo VM entre nós

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

GANETI: Operações 4. desligando # gnt-instance shutdown maquina 5. ligando # gnt-instance startup maquina 6. reiniciando # gnt-instance reboot maquina

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

GANETI: Problemas ● Uso de Múltiplos volumes – storage area network (SAN) ● SNAPSHOTs ● Clonagem de máquinas ● DRDB e desempenho ● I/O ● Múltiplas Redes

Slide 27

Slide 27 text

GANETI: Front-End

Slide 28

Slide 28 text

GANETI: Web Manager

Slide 29

Slide 29 text

GANETI: Web Manager

Slide 30

Slide 30 text

GANETI: Web Manager

Slide 31

Slide 31 text

GANETI: Web Manager

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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.

Slide 35

Slide 35 text

GANETI: Limitações dos Hooks Sabendo que os hooks são podem ser utilizados instalação das VMS, como ir além dos hooks...?

Slide 36

Slide 36 text

Gestão de Configuração

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

Nossa Escolha ● Puppet (2005) ● Ruby, GPL ● AIX, BSD, HP-UX, Linux, MaxOS, Solaris, Windows(*) ● Wikipedia: ● Configuration_management ● Comparison_of_open_sourc e_configuration_manageme nt_software

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

Puppet: Fácil Aprendizado Sintaxe 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' ] , } }

Slide 41

Slide 41 text

Puppet: Fácil Aprendizado Independente de Plataforma cl ass edi t or { $vi m = $oper at i ngsyst em ? { ' RedHat ' => ' vi m - enhanced' , ' Cent OS' => ' vi m - enhanced' , ' Fedor a' => ' vi m - enhanced' , def aul t => ' vi m ' , } package { " $vi m " : ensur e => pr esent , al i as => ' vi m ' , } } node “ host 01. dom ai n. com . br ” { i ncl ude edi t or } node “ host 02. dom ai n. com . br ” { i ncl ude edi t or }

Slide 42

Slide 42 text

Puppet: Auto documentado cl ass l i nux- ser ver { # I ncl ude cl asses com m on t o al l l i nux ser ver s i ncl ude l ocal m t 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 snm pd i ncl ude r sysl og #. . . }

Slide 43

Slide 43 text

Puppet: Controle de Versão e Rollback #gi t l og com m i t 263b2239ccf f 746f 345c448d723f 4f f 52d3f 8c0f Aut hor : Dani el Sobr al Dat e: Thu M ar 31 22: 11: 16 2011 - 0300 Excl ui a bol et i ns das m áqui nas conf i gur adas com o m t a sat él i t e. Li m i t a a conf i gur ação do exi m 4 às m áqui nas Ubunt u e Debi an. com m i t 8f bed5a4b8095b7560941c598454d47f 3b3dec7e Aut hor : Dani el Sobr al Dat e: Thu M ar 31 22: 08: 22 2011 - 0300 Cl asse debi an- com m on adapt ada par a l i dar com Ubunt u. Basi cam ent 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 am bém ) , e não m exe no sour ce l i st ( por hor a) . Si st em as Ubunt u t am bém i ncl ui r ão a cl asse debi an- ser ver . Ver i f i ca se o ker nel é xen, e, se f or , i ncl ui o l i nux m odul es cor r espondent e.

Slide 44

Slide 44 text

Puppet: Altamente Flexível node " el ei coesconcur vm 01" { 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 vm bd01” { i ncl ude l i nux- ser ver pgdb { ' consel hopr od' : # Ger a XM L par a dat asour ce passwor d => ' * * * * * * * * ' , pgver si on => ' 8. 4' , } }

Slide 45

Slide 45 text

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[ ' cl 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 si on' ) | | ni l #. . .

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

Frontends – Puppet Dashboard

Slide 48

Slide 48 text

Frontends – The Foreman ● Visualiza ● Inventário (fatos) ● Relatório ● Configurações ● Provisiona servidores ● Kickstart ● Jumpstart ● Preseed

Slide 49

Slide 49 text

PUPPET + GANETI Onde podemos chegar com essa combinação?

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Informações dos projetos Site/Blog Http://ww.puppetlabs.com Http://www.puppetlabs.com Twitter @puppetlabs Http://www.github.com/puppelabs Google Groups Puppet-camp, puppet-users, puppet-dev IRC Irc.freenode.org #puppet Site/Blog http://code.google.com/p/ganeti/ Docs http://docs.ganeti.org Twitter (manager web do ganeti) @ganetiwebmgr Google Groups ganeti, ganeti-devel ganeti-webmgr IRC Irc.freenode.org #ganeti

Slide 53

Slide 53 text

Contato, Dúvidas, Perguntas Guto Carvalho: [email protected] @gutocarvalho http://gutocarvalho.net /dokuwiki Http://github.com/ dcsobral Daniel Sobral dcsobral@gmail .com @dcsobral http://dcsobral.blog Http://github.co m/dcsobral Palestras de hoje disponíveis em nossos sites. Palestra sob licença Creative Commons - Atribuição