objetivo

Facilitar a administração no ganeti trazendo os comandos mais rápidos

especialistas

gutocarvalho

daniel sobral

tadeu rocha

comandos

operação básica

desligando

gnt-node01:~# gnt-instance shutdown maquina

ligando

gnt-node01:~# gnt-instance startup maquina

reiniciando

gnt-node01:~# gnt-instance reboot maquina

acessando console

gnt-node01:~# gnt-instance console maquinas

para sair do console CTRL+]

administração básica

criando

A entrada de DNS deve ser criada antes da criação da máquina

gnt-node01:~# gnt-instance add -t plain --net 0:ip=192.168.20.xxx --disk 0:size=4g --disk 1:size=1g -B memory=4098 -o debootstrap+default -n gnt-node05 maquina

Lembre-se de procurar um IP disponível na wiki, atualizando a lista de servidores.

removendo

gnt-node01:~# gnt-instance remove maquina

movendo

gnt-node01:~# gnt-instance move -n gnt-node05 maquina

acessando o disco da vm

Deslige a máquina, se ela estiver running

gnt-node01:~# gnt-instance shutdown FAKE01
Waiting for job 25364 for FAKE01.empresa...

Ative os discos

gnt-node01:~# gnt-instance activate-disks FAKE01
gnt-node04.empresa:disk/0:/dev/xenvg/FAKEFAKE-6e2f-4616-a158-ab27c0792b0f.disk0
gnt-node04.empresa:disk/1:/dev/xenvg/FAKEFAKE-de74-4553-b8e3-a2bd559a2403.disk1

Entre no node em que a máquina está criada

gnt-node01:~# ssh gnt-node04
Linux gnt-node04 2.6.26-2-xen-amd64 #1 SMP Thu Aug 19 01:12:45 UTC 2010 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Sep 17 15:13:59 2010 from gnt-node01.empresa

Crie devices para os dispositivos

gnt-node04:~# kpartx -av /dev/mapper/xenvg-FAKEFAKE--6e2f--4616--a158--ab27c0792b0f.disk0 
add map xenvg-FAKEFAKE--6e2f--4616--a158--ab27c0792b0f.disk0p1 (254:26): 0 4192964 linear /dev/mapper/xenvg-FAKEFAKE--6e2f--4616--a158--ab27c0792b0f.disk0 1

Verifique que não há nada montado em /mnt

gnt-node04:~# mount 
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)

Monte a partição 1 em /mnt

gnt-node04:~# mount /dev/mapper/xenvg-FAKEFAKE--6e2f--4616--a158--ab27c0792b0f.disk0p1 /mnt

O disco da máquina agora está montado em /mnt, podendo ser usado a contento. Quando terminar, siga os seguintes passos:

Desmonte o filesystem

gnt-node04:~# umount /mnt

Descrie o device

gnt-node04:~# kpartx -dv /dev/mapper/xenvg-FAKEFAKE--6e2f--4616--a158--ab27c0792b0f.disk0 
del devmap : xenvg-FAKEFAKE--6e2f--4616--a158--ab27c0792b0f.disk0p1

Retorne ao node principal e desative os discos

gnt-node01:~# gnt-instance deactivate-disks FAKE01

Se desejado, reinicie a instancia

gnt-node01:~# gnt-instance startup FAKE01
Waiting for job 25373 for FAKE01.empresa...

clonando maquina

A partir de uma maquina desligda

Se desejamos clonar a maquina APP01 para uma nova maquina chamada APP02, precisamos seguir os seguintes passos:

Criar maquina APP2

gnt-node01:~# gnt-instance add -t plain --net 0:ip=192.168.20.xxx --disk 0:size=4g --disk 1:size=1g -B memory=4098 -o debootstrap+default -n gnt-node05 maquina

Desligar maquina APP2 e APP1

gnt-instance shutdown app1
gnt-instance shutdown app2

Ativar os discos das maquinas que foram desligadas

gnt-instance activate-disks app1
gnt-instance activate-disks app2

observe o caminho para os discos quando ativamos os discos de cada maquina, o que nos interessa é o disk0 (raiz).

ir ao nó onde foram criados os discos

ssh gnt-node05

mapaear as particoes para a montagem

 kxpart -av /dev/mapper/xenvg-xxxxx.disk0
 kxpart -av /dev/mapper/xenvg-xxxxx.disk0

crie os diretórios para a montagem

mkdir /mnt/app1
mkdir /mnt/app2

montando

 mount /dev/mapper/xenvg-xxxxxx.disk0p1 /mnt/app01
 mount /dev/mapper/xenvg-xxxxxx.disk0p1 /mnt/app02

salvando arquivos importantes para que a maquina boot corretamente

cd /mnt/app2
cd etc/

salvando os mais importantes

cp fstab fstab.bkp
cp mtab mtab.bkp
cp network/interfaces network/interfaces.bkp
cp hostname hostname.bkp

salvando mais alguns arquivos, para evitar retrabalho

cp mailman mailman.bkp
cp hosts hosts.bkp
cp zabbix/zabbix_agent.conf zabbix/zabbix_agent.conf.bkp
cp zabbix/zabbix_agentd.conf zabbix/zabbix_agentd.conf.bkp

saindo do diretorio

cd /mnt

agora vamos rodar um rsync para sincronizar as maquinas

 rsync -ravzplH /mnt/app1/ /mnt/app2/

terminado o sync retorne os arquivos para o nome original

cd app2/etc

cp fstab.bkp fstab
cp mtab.bkp mtab
cp network/interfaces.bkp network/interfaces
cp hostname.bkp hostname
cp mailman.bkp mailman
cp hosts.bkp hosts
cp zabbix/zabbix_agent.conf.bkp zabbix/zabbix_agent.conf
cp zabbix/zabbix_agentd.conf.bkp zabbix/zabbix_agentd.conf

pronto, agora podemos desmontar, desmapear e desativar os discos

cd /mnt

desmontando

umount app1
umount app2

removendo mapeamento

kpartx -dv /dev/mapper/xenvg-xxxx.disk0
kpartx -dv /dev/mapper/xenvg-xxxx.disk0

voltando a maquina do nó principal gnt-node01

exit

desativando os discos

gnt-instance deativate-disks app1
gnt-instance deativate-disks app2

subindo as maquinas

gnt-instance startup app1
gnt-instance startup app2

pronto

ajustando recursos

memoria

gnt-instance modify -B memory=8192 haproxy02

precisa reiniciar a VM

processadores

gnt-instance modify -B vcpus=2 haproxy02

precisa reiniciar a VM

network

se já houver uma placa de rede e voce quer adicionar outra

gnt-instance modify --net add:ip=192.168.50.173 ejb-radio02.empresa

se adicionou sem querer e quer remover

gnt-instance modify --net remove:ip=192.168.21.81 testeclient.empresa

se quiser apenas alterar um ip

gnt-instance modify –net 0:ip=10.61.12.25 homologacao01

é necessário rebotar a VM, nao se esqueça de configurar se o interfaces foi alterado

informacoes

cluster nodes

gnt-node01:~# gnt-node list
Node           DTotal  DFree MTotal MNode  MFree Pinst Sinst
gnt-node01.empresa 272.1G  37.0G 128.0G  1.0G  95.3G    14     0
gnt-node02.empresa 272.0G  10.8G 128.0G  1.0G  65.3G    23     0
gnt-node03.empresa 784.1G  83.6G 128.0G  1.0G  39.8G    31     0
gnt-node04.empresa 262.9G  49.6G 128.0G  1.0G  55.3G     9     1
gnt-node05.empresa 262.9G 262.9G 128.0G  1.0G 125.3G     0     0
gnt-node07.empresa 126.2G 126.2G  16.0G  1.0G  14.8G     0     0
gnt-node08.empresa 126.2G 126.2G  16.0G  1.0G  14.8G     0     0

aqui podemos verificar o espaco em disco e a mémoria em uso, podemos verificar também o quais os recursos disponíveis em cada nó.

vm list

gnt-node01:~# gnt-instance list

Instance Hypervisor OS

              Primary_node   Status     Memory
  

vm01.corp.empresa xen-pvm debootstrap+default gnt-node02.empresa running 4.0G

vm02.corp.empresa       xen-pvm    debootstrap+default gnt-node02.empresa running      4.0G
vm03.corp.empresa       xen-pvm    debootstrap+default gnt-node02.empresa running      4.0G
vm04.corp.empresa       xen-pvm    debootstrap+default gnt-node02.empresa running      4.0G
vm05.corp.empresa       xen-pvm    debootstrap+default gnt-node02.empresa running      4.0G
vm06.corp.empresa       xen-pvm    debootstrap+default gnt-node02.empresa running      4.0G
vm01.corp.empresa       xen-pvm    debootstrap+default gnt-node01.empresa running      2.0G
vm01.corp.empresa       xen-pvm    debootstrap+default gnt-node03.empresa running      2.0G
vm01.corp.empresa       xen-pvm    debootstrap+default gnt-node02.empresa running      2.0G
gnt-node01:~# gnt-instance list maquina
Instance                         Hypervisor OS                  Primary_node   Status     Memory

maquina.empresa                      xen-pvm    debootstrap+default gnt-node04.empresa running     16.0G

vm info

gnt-node01:~# gnt-instance info vm01
Instance name: vm1.corp.empresa.interno
UUID: a05f90f5-18f4-4ab8-a6c2-97f7caf2a816
Serial number: 4
Creation time: 2010-08-21 19:44:46
Modification time: 2010-08-21 19:52:03
State: configured to be up, actual state is up
  Nodes:
    - primary: gnt-node03.empresa
    - secondaries: 
  Operating system: debootstrap+default
  Allocated network port: None
  Hypervisor: xen-pvm
    - bootloader_args: default ()
    - bootloader_path: default ()
    - initrd_path: default (/boot/initrd.img-2.6.26-2-xen-amd64)
    - kernel_args: default (ro)
    - kernel_path: default (/boot/vmlinuz-2.6.26-2-xen-amd64)
    - root_path: default (/dev/sda1)
    - use_bootloader: default (False)
  Hardware:
    - VCPUs: 1
    - memory: 2048MiB
    - NICs:
      - nic/0: MAC: aa:00:00:2c:2c:5b, IP: 192.168.20.119, mode: bridged, link: xen-br0
  Disks:
    - disk/0: lvm, size 4.0G
      access mode: rw
      logical_id:  xenvg/7d1d268c-0a6d-41f3-8d6c-e0e21e01dee5.disk0
      on primary:  /dev/xenvg/7d1d268c-0a6d-41f3-8d6c-e0e21e01dee5.disk0 (254:22)
    - disk/1: lvm, size 1.0G
      access mode: rw
      logical_id:  xenvg/9c353c68-a78a-41cd-8213-0e68740c7328.disk1
      on primary:  /dev/xenvg/9c353c68-a78a-41cd-8213-0e68740c7328.disk1 (254:23)

configurações alternativas

variants

Incluir variante no arquivo variants.list:

/etc/ganeti/instance-debootstrap/variants.list
default
nova-variante

Definir em nova-variante.conf os pacotes extras e o diretório de hooks:

/etc/ganeti/instance-debootstrap/variants/nova-variante.conf
EXTRA_PKGS="sudo,screen,vim"
CUSTOMIZE_DIR="/etc/ganeti/instance-debootstrap/hooks"

Criar scripts de customização no diretório indicado acima. Os scripts devem ter nomes no formato NN_nome e serem executáveis (podem ser binários, shell, perl, python, etc). Arquivos que não seguem esse padrão são ignorados pelo ganeti, e podem ser usados para prover informações adicionais. Por exemplo, nossa configuração default contém os seguintes arquivos no diretório de hooks:

00_tty
01_no_root_login
02_users
03_network
04_env
05_misc
06_ntpdate
senhas
usuarios

Os scripts podem fazer referência à diversas variáveis de ambiente, sendo a principal a variável TARGET, que indica o diretório onde o disco está montado (os scripts são executados no hospedeiro – o node ganeti onde a máquina está sendo criada).

No caso de programas que devam ser executados como se estivessem na máquina virtual, usa-se o comando chroot para executá-los. Por exemplo:

# Generate locale for packages
chroot "$TARGET" /usr/sbin/locale-gen

Outras variáveis de ambiente podem ser checada nas máquinas virtuais de nosso ambiente, no arquivo /env_done que é gerado pelo seguinte script:

/etc/ganeti/instance-debootstrap/hooks/04_env
#!/bin/bash
 
ENV="/usr/bin/env"
 
$ENV >> $TARGET/env_done
 
echo 04_env OK

Outras configurações pertinentes ao debootstrap, como o uso de mirror ou proxy, podem ser configuradas em seu arquivo de defaults, o /etc/default/ganeti-instance-debootstrap.

Por exemplo, pode-se setar um mirror incluindo a seguinte linha neste arquivo:

MIRROR="http://mirror.empresa/debian/lenny"

problemas comuns

problema no boot

Servidor recém-criado não completa inicialização do sistema. Apesar do Ganeti informar que está running, máquina não responde a ping e a console mostra que não terminou o boot, como no exemplo abaixo:

...
Setting kernel variables (/etc/sysctl.conf)...done.
Mounting local filesystems...done.
Activating swapfile swap...done.
Setting up networking....
Configuring network interfaces...done.
INIT: Entering runlevel: 2
Starting enhanced syslogd: rsyslogd.
Starting periodic command scheduler: crond.

Não mostrando nada além disso. O problema pode estar no inittab da máquina, que não foi inicializado corretamente. Isso ocorre se os hooks do ganeti não estiverem configurados corretamente no nó em que a instância foi criada. Compare o conteúdo de /etc/ganeti/instance-debootstrap/ no nó principal com aquele em que a instância foi criada.

Nesse caso, o melhor é corrigir os hooks e recriar a máquina.

apagando maquinas/discos

No caso de um comando de criação ser interrompido, é possível que o disco tenha permanecido montado na hospedeira, com algum comando rodando impedindo o seu término.

Nesse caso, verifique se existe alguma partição estranha montada:

gnt-node05:/dev/xenvg# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/mapper/xenvg-35d49205--01e8--4fb8--88a4--f03e6f0123a9.disk0-1 on /tmp/tmp.PwOOOWSbgW type ext3 (rw)

Tente desmontar o disco:

gnt-node05:/dev/xenvg# umount /tmp/tmp.PwOOOWSbgW/
umount: /tmp/tmp.PwOOOWSbgW: device is busy
umount: /tmp/tmp.PwOOOWSbgW: device is busy

Se não for possível, use o comando lsof para verificar que processo está usando a partição:

gnt-node05:/dev/xenvg# lsof | grep tmp
debootstr 13639        root    1w      REG             254,26        0                65538 /tmp/tmp.PwOOOWSbgW/debootstrap/debootstrap.log
debootstr 13639        root    2w      REG             254,26        0                65538 /tmp/tmp.PwOOOWSbgW/debootstrap/debootstrap.log
wget      13675        root    1w      REG             254,26        0                65538 /tmp/tmp.PwOOOWSbgW/debootstrap/debootstrap.log
wget      13675        root    2w      REG             254,26        0                65538 /tmp/tmp.PwOOOWSbgW/debootstrap/debootstrap.log
wget      13675        root    3w      REG             254,26        0               122890 /tmp/tmp.PwOOOWSbgW/var/lib/apt/lists/partial/debootstrap.invalid_dists_l

Mate os processos que forem necessários. O mais provável é que o processo de criação se encerre desmontando a partição. Se isso não ocorrer, use os comandos umount e kpartx -dv para liberar o dispositivo. Finalmente, tente novamente apagar a máquina ou os discos.



ganeti_dicas_rapidas.txt · Last modified: 2011/01/04 00:15 by gutocarvalho
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0