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
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
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: 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
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: 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.
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
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
Puppet: Expansvel
Puppet
Classes Definies
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 #. . .
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
Visualiza
Provisiona servidores
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.