Anda di halaman 1dari 53

FLISOL DF - 2011

Assuma o controle do seu parque virtualizado

Palestrantes: Guto Carvalho @gutocarvalho Daniel Sobral @dcsobral

J teve a sensao de estar perdendo o controle do seu ambiente virtualizado?

Foto tirada do site sysadminday.com por Frank Schicksal

Necessidades do cliente

Isolamento de ambientes e servios em vm's Facilidade de migrao inter-sites Maior estabilidade e disponibilidade dos servios Curta curva de aprendizagem

Desafios

Centralizao da administrao e configurao Padronizao do ambiente Rpida implantao e implementao Converso de infraestrutura Manuteno descomplicada

Decises Importantes

Utilizao de tecnologia livre ou opensource Internalizar suporte Utilizao coerente de recursos e oramento

Caso de Estudo

Empresa Brasil de Comunicao Cerca de 160 mquinas virtuais rodando em um cluster com 15 ns Gesto e distribuio de configuraes Administrao compartilhada de 4 devops

Especialistas Envolvidos
Equipe Tecnisys Jos Augusto Carvalho @gutocarvalho Daniel Sobral @dcsobral Jefferson Santos @jalexandre0 Equipe EBC Coordenadores Tadeu Ibns N. Rocha tadeuibns@gmail.com Jos Eufrsio @coredump SysAdmins Nieson Santos nieson.santos@gmail.com

VIRTUALIZAO

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

Nossa Escolha: GANETI


Produto criado pelo Google Case interessante de uso interno no Google Facilidade de implementao Utilizao de hypervisors livres XEN e KVM Funciona em modo Cluster Permite migrao de mquinas entre ns Administrao simplificada via CLI ou WEB (frontends) Boa documentao, desenvolvimento ativo e comunidade crescente

GANETI: Overview
Gerenciador Open Source para clusters virtualizados Combina virtualizao e replicao de disco em tempo real Oferece uma aplicao de alta disponibilidade promovendo uma melhor utilizao 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 licena GPLv2 Site do projeto: http://code.google.com/p/ganeti/

GANETI: Hypervisors
XEN Xxxx Xxxx Xxx

KVM Xxx Xx Xx Xx

GANETI: Estrutura Lgica


Cluster N mestre Ns Instncias

GANETI: Organizao Lgica do Cluster

GANETI: Exemplos de melhorias

Na infraestrutura XEN a administrao descentralizada, precisvamos entrar em cada mquina para fazer manutenes nas VM. Hoje fazemos isto de forma centralizada no master node. Informaes descentralizadas: antes para criar mquinas precisvamos entrar em cada servidor XEN para avaliar os recursos disponveis e escolher um servidor ideal para instalar o servio. Com o ganeti temos um viso completa de todo o cluster no n master.

GANETI: Listando ns

GANETI: Listando instncias

GANETI: Listando info de VM

GANETI: Movendo VM entre ns

GANETI: Operaes
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 mquina virtual # gnt-instance add -n node1 -t plain -H memory=1G -s 10G -o debian apache01

GANETI: Operaes
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

GANETI: Operaes
Movendo mquinas entre ns # 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

GANETI: Operaes
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

GANETI: Hooks

Padronizao de configuraes do OS durante a instalao Instalao dos softwares bsicos para administrao das mquinas

GANETI: Ganhos
Cliente

Uso coerente dos recursos de hardware/rede Investimento em conhecimento da equipe Investimento de SW direcionado para HW Facilidade na criao e adm. de mquinas Movimentao de VM's entre ns e SITES Replicao DRDB = Alta disponibilidade

Equipe

GANETI: Problemas

Uso de Mltiplos volumes storage area network (SAN) SNAPSHOTs Clonagem de mquinas DRDB e desempenho I/O Mltiplas Redes

GANETI: Front-End

GANETI: Web Manager

GANETI: Web Manager

GANETI: Web Manager

GANETI: Web Manager

GANETI: Comparaes
Mquina Fsica Debian Lenny

Tempo de instalao de maquina fsica 40 minutos sem atualizaes (CD) Tempo de configurao/update* padro - de maquina fsica 40 minutos

Mquina Virtual Debian Lenny Tempo de criao de maquina virtual - 2 minutos Tempo de configurao/update* usando Hooks 2 a 4 minutos

* Levando em conta configuraes da rede, locale, ntpdate, backup, monitoramento, criao de usurios, instalao de pacotes bsicos do sysadmin.

GANETI: Comparaes
Mquina Fsica Debian Lenny

Tempo de instalao de maquina fsica 40 minutos sem atualizaes (CD) Tempo de configurao/update* padro - de maquina fsica 40 minutos

Mquina Virtual Debian Lenny Tempo de criao de maquina virtual - 2 minutos Tempo de configurao/update* usando Hooks 2 a 4 minutos

* Levando em conta configuraes da rede, locale, ntpdate, backup, criao de usurios, instalao de pacotes bsicos do sysadmin.

GANETI: Dicas

Ateno com DNS, dependncia grande para criar a VMs Uso e abuse de Activate Disks para montar e `clonar` mquinas GrowDisk e Parted Nunca d CTRL+C Usar - - submit Nunca, jamais, de forma alguma, d um KILL em um processo de MOVE ou CREATE.

GANETI: Limitaes dos Hooks

Sabendo que os hooks so podem ser utilizados instalao das VMS, como ir alm dos hooks...?

Gesto de Configurao

Gesto de Configurao

Facilitar o trabalho de administrao de servidores Padronizar as configuraes utilizadas Possibilitar auditoria de configurao Centralizar a administrao Elementos comumente gerenciados

Usurios Grupos Arquivos pacotes instalados execuo peridica de scripts

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

PUPPET: Funcionamento

Autnomo Cliente/Servidor

Cliente obtm plugins Cliente envia fatos Servidor produz catlogo Cliente processa catlogo Cliente envia relatrio

HTTPS Certificado de Cliente Pull por default Push opcional

Puppet: Fcil Aprendizado Sintaxe Declarativa


c l ass r sy sl og { pac kage { ' r s ysl og': ens ur e => pr esent, } s er vi ce { ' r s ysl og': has r es t ar t => t r ue, } f i l e { ' / et ens ur e s our ce not i f y } c/ r sy s l og. d/ l ogs er v er 01. conf ' : => pr esent, => ' puppet : / / / f i l es / r s ys l og/ r s ys l og. d/ l ogser ver 01. c onf ', => Ser vi ce[ ' r s ys l og' ],

Puppet: Fcil 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 }

Puppet: Auto documentado


c l as s l i nux - s er v er { # I nc l ude c l as s es c om on t o al l l i nux s er v er s m i nc l ude l oc al m a t i nc l ude nt pdat e i nc l ude puppet : : c onf i nc l ude s s h: : s er v er i nc l ude s udoer s i nc l ude us er s i nc l ude ut i l s i nc l ude z abbi x - agent i nc l ude edi t or i nc l ude s nm pd i nc l ude r s y s l og } #. . .

Puppet: Controle de Verso 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 M ar 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 bm , e no m ) exe no sour ce l i st ( por hor a). Si st em as Ubunt u t am bm 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 m odul es cor r es pondent e.

Puppet: Altamente Flexvel


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

Puppet: Expansvel

Puppet

Classes Definies

Templates (ERB) Ruby


def i ne pgcl i ent ( $ens ur e = pr esent , $i p = $i paddr ess) { @ l i ne { " pgcl i ent ${ i p} ": @ 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' ], t ag => " pgcl i ent _ $ { t i t l e} " , } } # augeas v er s i on. r b Fact er . add( " augeasv er 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/ v er s i on' ) | | ni l #. . .

Fatos Funes Tipos Provedores

Puppet: Problemas

Documentao Deficiente Mensagens de erro ruins Servidor default nao segura mais de 20 mquinas No distribui arquivos grandes Grande investimento de tempo para chegar ao nvel de expert

Frontends Puppet Dashboard

Frontends The Foreman

Visualiza

Inventrio (fatos) Relatrio Configuraes Kickstart Jumpstart Preseed

Provisiona servidores

PUPPET + GANETI Onde podemos chegar com essa combinao?

Comparao Final
Mquina Fsica Debian Lenny + LAMP

Tempo de instalao de maquina fsica 40 minutos sem atualizaes (CD) Tempo de configurao/update OS* padro - de maquina fsica 40 minutos Tempo de instalao e configurao Apache2, PHP5, MYSQL 2 horas**

Mquina Virtual Debian Lenny Tempo de criao de maquina virtual - 2 minutos Tempo de configurao/update OS* usando Hooks 2 a 4 minutos Tempo de instao e configurao Apache2, PHP5, MYSQL 2 a 4 minutos**

* Levando em conta configuraes da rede, locale, ntpdate, backup, monitorao, criao de usurios, instalao de pacotes bsicos do sysadmin. ** Levando em conta hardening, tuning os, apache2, php5, mysql, considerando ter as classes prontas

Concluso
O Ganeti uma alternativa vivel, moderna estvel, largamente utilizado no google, em franco desenvolvimento com um comunidade crescente e ativa. O Puppet uma ferramenta essencial para gerenciar e distribuir configuraes, ele um batalho de sysadmins trabalhando para voc.

Informaes 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

Contato, Dvidas, Perguntas


Guto Carvalho: gutocarvalho@gmail.com @gutocarvalho http://gutocarvalho.net/dokuwiki Http://github.com/dcsobral

Daniel Sobral dcsobral@gmail.com @dcsobral http://dcsobral.blogspot.com Http://github.com/dcsobral

Palestras de hoje disponveis em nossos sites.

Palestra sob licena Creative Commons - Atribuio

Anda mungkin juga menyukai