Howto: OpenVZ no CentOS 5.x

Este tutorial é dividido em 5 partes:
1- Introdução ao OpenVZ
2- Instalação do OpenVZ no CentOS 5.X
3- Templates
4- Operações básicas do OpenVZ
5- Leitura recomendada
Ao fim deste tutorial, você terá o OpenVZ instalado e rodando com pelo menos uma máquina virtual.

1- Introdução ao OpenVZ

OpenVZ utiliza virtualização em containers para Linux. OpenVZ cria múltiplos containers de forma segura e isolada (também conhecidos como VE ou VPS) no mesmo servidor físico, permitindo uma melhor utilização do servidor e assegurando-se que as aplicações não entrem em conflito. Cada container roda exatamente como um servidor individual; um container pode ser reiniciado, ter os seus próprio usuários, memória, processos, aplicativos, bibliotecas e arquivos de configuração.
OpenVZ é um Software Livre, disponível na Licença GNU GPL
OpenVZ é a base do Parallels Virtuozzo Containers, uma solução comercial de virtualização oferecida pela Parallels. O projeto OpenVZ é patrocinado por Parallels.
Tradução Livre – OpenVZ Wiki

Para maiores informações sobre esta e/ou outras formas de virtualização consulte os Links:
Eduardo Silva – Introdução a Virtualização
OpenVZ Wiki – Introduction to Virtualization
OpenVZ – Virtualization in Linux
Wikipedia – OpenVZ

Video: A brief Introduction to OpenVZ – Scott Dowdle
[video:google:3811575606473768400]

2- Instalação do OpenVZ no CentOS 5.X
Pré-requisitos:
* Desabilitar o SELinux
* Partição separada para /vz/private (Recomendável, caso contrário as Quotas não funcionarão para as máquinas virtuais)

Instalando o repositório do OpenVZ

# wget http://download.openvz.org/openvz.repo -P /etc/yum.repos.d/
# rpm –import http://download.openvz.org/RPM-GPG-Key-OpenVZ

Instalando o Kernel:

# yum install ovzkernel

Teoricamente, após instalar o ovzkernel pelo yum, o grub já estará configurado para carregar o novo kernel no próximo boot, mesmo assim, verifique o arquivo /boot/grub/menu.lst e verifique se o novo kernel está na lista como default. Caso não esteja, a configuração deve ficar mais ou menos assim:

title CentOS (2.6.18-128.1.1.el5.028stab062.3)
root (hd0,0)
kernel /vmlinuz-2.6.18-128.1.1.el5.028stab062.3 ro root=LABEL=/
initrd /initrd-2.6.18-128.1.1.el5.028stab062.3.img

Edite o arquivo /etc/sysctl.conf e edite os parâmetros das opções listadas abaixo

net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

Reinicie o servidor, e verifique se o kernel que foi instalado anteriormente está rodando:

# uname -a
Linux ovztest.exemplo.com.br 2.6.18-128.1.1.el5.028stab062.3 #1 SMP Tue May 5 17:31:34 MSD 2009 i686 i686 i386 GNU/Linux

Agora instale as principais ferramentas de gerenciamento do OpenVZ utilizando o YUM:

# yum install vzctl vzquota
# yum install vzpkg vzyum vzrpm43-python vzrpm44-python vzctl-lib (Requer python 2.2, 2.3 ou 2.4. Não funciona com python 2.5 ou com o kernel de 64bits)

Inicialize o serviço “vz” e observe se este carregou corretamente.

# service vz start
Starting OpenVZ: [ OK ]

3- Templates
O OpenVZ utiliza templates de sistemas operacionais para criar um novo container. Neste tutorial, iremos utilizar templates pré-criados disponíveis em: http://wiki.openvz.org/Download/template/precreated escolha a sua distribuição favorita e faça o download. Ex: centos-5-x86.tar.gz

Caso queira criar o seu próprio template, visite a Wiki do OpenVZ e procure as intruções para criar um template da distribuição escolhida. Alguns exemplos:
* Creating a CentOS 5.0 Template
Gentoo template creation

Observar que o OpenVZ permite rodar distribuições distintas de Linux no mesmo servidor.
Coloque o(s) seu(s) template(s) escolhido(s) “SEM DESCOMPACTAR” em /vz/template/cache/

4- Operações básicas do OpenVZ
É importante observar que o OpenVZ utiliza números (CTID) para identificar as máquinas virtuais. A faixa de 0 a 100 é reservada para o OpenVZ e não deve ser utilizada (principalmente o ID 0). Uma recomendação para evitar conflitos na migração de VPSs entre servidores e facilitar a identificação (saber que o VPS XXXX está no servidor YY), seria utilizar “pre-fixos” para cada servidor. Exemplo
Servidor 1 – CTID começa por 1. EX: 1101
Servidor 2 – CTID começa por 2. EX: 2135

Criando um VPS:

# vzctl create 101 –ostemplate centos-5-x86 –hostname vps1.exemplo.com.br
Unable to get full ostemplate name for centos-5-x86
Creating container private area (centos-5-x86)
Performing postcreate actions
Container private area was created

O Comando acima irá criar uma máquina virtual com o CTID 101 utilizando o template centos-5-x86 com o hostname vps1.exemplo.com.br

Configurando a rede do container:

# vzctl set 101 –ipadd 192.168.100.223 –save
Saved parameters for CT 101
# vzctl set 101 –nameserver 192.168.100.223 –save
Saved parameters for CT 101

Configurando o container para inicializar durante o boot

# vzctl set 101 –onboot yes –save
Saved parameters for VPS 101

Inicializando o container:

# vzctl start 101
Starting container …
Container is mounted
Adding IP address(es): 192.168.100.223
Setting CPU units: 1000
Configure meminfo: 65536
Set hostname: vps1.exemplo.com.br
File resolv.conf was modified
Container start in progress…

Lista dos VPSs hospedados no servidor:

# vzlist
CTID NPROC STATUS IP_ADDR HOSTNAME
101 12 running 192.168.100.223 vps1.exemplo.com.br

Entrando no VPS:

# vzctl enter 101
entered into CT 101
[root@vps1 /]# uname -a
Linux vps1.exemplo.com.br 2.6.18-128.1.1.el5.028stab062.3 #1 SMP Tue May 5 17:31:34 MSD 2009 i686 i686 i386 GNU/Linux
[root@vps1 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/simfs 1.0G 492M 533M 48% /
none 505M 4.0K 505M 1% /dev

Executando um comando de fora do VPS:

# vzctl exec 101 service sshd start
Starting sshd: [ OK ]

Realizando um backup (dump) completo de todas as máquinas virtuais hospedadas no servidor (sem interromper os serviços):

# vzdump –snapshot –compress –dumpdir /backup –all

Parando o VPS

# vzctl stop 101
Stopping container …
Container was stopped
Container is unmounted

Destruindo um VPS (preciso avisar que todos os arquivos que estão contidos no container serão perdidos para sempre?) :P
# vzctl destroy 101
Destroying container private area: /vz/private/101
Container private area was destroyed

Restaurando um backup:

vzdump –restore vzdump-101.tgz 101

5- Leitura recomendada
Abaixo alguns links com leitura recomendada
OpenVZ User’s guide (Completo, mas principalmente a o capítulo Managing Resources)
OpenVZ Wiki
MediaWiki – OpenVZ

Qualquer dúvida, problema, correção elogio ou xingamento, utilize o campo de comentários logo abaixo :)

2 Responses to Howto: OpenVZ no CentOS 5.x

  • Adriano says:

    Amigo estou com problemas, não estou acertando o layout do meu server segue o exemplo de um layout.

    /swap = 8GB
    /LVM = ???
    /ext4 = ??

    Ta certo este layout? meu HD é 250GB e vou utilizar o SolusVM com OpenVz.

    Abraços e obrigado.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*


*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>