assuma o controle do seu parque virtualizado
Post on 04-Feb-2022
9 Views
Preview:
TRANSCRIPT
FLISOL – DF - 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
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
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
Decisões Importantes
● Utilização de tecnologia livre ou opensource● Internalizar suporte● Utilização coerente de recursos e orçamento
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
Especialistas Envolvidos
Equipe TecnisysJosé Augusto Carvalho @gutocarvalho
Daniel Sobral @dcsobralJefferson Santos @jalexandre0
Equipe EBCCoordenadores
Tadeu Ibns N. Rocha – tadeuibns@gmail.comJosé Eufrásio @coredump
SysAdminsNieson Santos – nieson.santos@gmail.com
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 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
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/
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.
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
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
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
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
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
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
GANETI: Problemas
● Uso de Múltiplos volumes – storage area network (SAN)
● SNAPSHOTs● Clonagem de máquinas● DRDB e desempenho● I/O● Múltiplas Redes
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
● 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.
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
● 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.
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.
GANETI: Limitações dos Hooks
Sabendo que os hooks são podem ser utilizados instalação das VMS, como ir além dos hooks...?
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
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
● 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
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' ], } }
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
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
#. . .}
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
● 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
Frontends – The Foreman
● Visualiza● Inventário (fatos)● Relatório● Configurações
● Provisiona servidores● Kickstart● Jumpstart● Preseed
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:gutocarvalho@gmail.com
@gutocarvalho
http://gutocarvalho.net/dokuwiki
Http://github.com/dcsobral
Daniel Sobraldcsobral@gmail.com
@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