virtualizando com o openvz _ blog do scardini

Upload: daps

Post on 11-Feb-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    1/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    scardini.net/?p=58

    Virtualizando com o OpenVZ

    Publicado em 27 de setembro de 2010

    1 Introduo

    O OpenVZ uma tecnologia de virtualizao para ambientes Linux que difere de outras por

    ser uma virtualizao a nvel de Sistema Operacional e no de Hardware. A virtualizao

    do OpenVZ baseada no sistema Linux com um kernel modificado.

    O OpenVZ cria containers (instncias virtuais do sistema operacional) que rodam em uma

    nica mquina fsica compartilhando o mesmo hardware, mas cada um deles se

    comportando como se fosse uma nova mquina com todos os componentes de softwares

    independentes do sistema hospedeiro.

    Por no virtualizar um hardware, os containers ficam restritos a sistemas Linux com um

    kernel compatvel com o kernel da mquina real. Mas em contra partida, h uma perda de

    desempenho de apenas de 1 a 3%, quando comparado com a utilizao de um servidor

    standalone.

    O OpenVZ licenciado sob a verso 2 da GPL, sendo um projeto da Parallels. A Parallels

    utiliza o OpenVZ como base da soluo Parallels Virtuozzo Containers, um software

    proprietrio produzido e fornecido pela Parallels.

    A nossa mquina real a ser virtualizada com o OpenVZ ser um CentOS verso 5.5 de 64

    bits. Vamos criar dois containers com o OpenVZ.

    Este procedimento pode ser efetuado dentro da mquina virtual criada no post Criando

    uma Mquina Virtual com o VMware Player ou em uma maquina real com o CentOS

    instalado. possvel tambm utilizar outras distribuies Linux de sua preferncia, apenas

    observando as verses Linux/kernel suportadas pelo projeto OpenVZ. Se voc utilizar uma

    distribuio no baseada em rpm/yum, alguns passos sero diferentes dos apresentados

    aqui.

    Nossa estrutura de virtualizao apresentada no esquema abaixo:

    Blog do Scardini

    S mais um site de TI, Linux, Modelos Numricos,

    http://scardini.net/?p=58http://scardini.net/http://scardini.net/http://scardini.net/?p=7http://scardini.net/?p=58
  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    2/11

    Nvel de Virtualizao Sistema

    Operacional

    Tecnologia

    De Virtualizao

    Maquina Real Windows 7 64-bits -

    1 Nvel CentOS 5.5 64-bits VMware Player

    2 Nvel CentOS 5.5 64-bits OpenVZ

    2 Mos a Obra

    O primeiro passo para instalar o OpenVZ baixar e instalar os softwares necessrios.

    Para nossa comodidade o projeto OpenVZ disponibiliza um repositrio para YUM/RPM.

    Ento basta adicionar este repositrio e efetuar toda a instalao via YUM.

    Primeiro baixe a configurao do repositrio:

    Cdigo

    cd /etc/yum.repos.d/

    wget http://download.openvz.org/openvz.repo

    Verifique o arquivo baixado, por padro ele contm uma srie de definies de repositrios

    para vrias verses de sistema, no nosso caso devemos ativar os seguintes itens:

    1) RHEL5-based kernel

    2) OpenVZ utilities.

    Exemplo do arquivo openvz.repo:

    Cdigo

    [openvz-utils]

    name=OpenVZ utilities

    Estru tur a de v irtua lizao utilizada

    http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_2http://scardini.net/?p=58#codesyntax_2http://scardini.net/?p=58#codesyntax_2http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_1http://scardini.net/?p=58#codesyntax_1http://scardini.net/?p=58#codesyntax_1http://scardini.net/wp-content/uploads/2010/09/OpenVZ01.png
  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    3/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    3/11scardini.net/?p=58

    #baseurl=http://download.openvz.org/current/

    mirrorlist=http://download.openvz.org/mirrors-current

    enabled=1

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    # In addition to openvz-utils repo, you have to enable one the the

    # kernel repositories below. In the stock config, openvz-kernel-rhel5

    # is enabled; you might want to change this.

    # Stable bracnhes

    [openvz-kernel-rhel5]

    name=OpenVZ RHEL5-based kernel

    #baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18/current/

    mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18

    enabled=1

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    [openvz-kernel-rhel4]

    name=OpenVZ RHEL4-based kernel

    #baseurl=http://download.openvz.org/kernel/branches/rhel4-2.6.9/current/

    mirrorlist=http://download.openvz.org/kernel/mirrors-rhel4-2.6.9

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    # Testing branch

    [openvz-kernel-rhel5-testing]name=OpenVZ RHEL5-based testing kernel

    #baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18-testing/current/

    mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18-testing

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    # Development branches

    [openvz-kernel-2.6.32]

    name=OpenVZ 2.6.32 kernel#baseurl=http://download.openvz.org/kernel/branches/2.6.32/current

    mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.32

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    [openvz-kernel-2.6.27]

    name=OpenVZ 2.6.27 kernel

    #baseurl=http://download.openvz.org/kernel/branches/2.6.27/current

    mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.27enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    4/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    4/11scardini.net/?p=58

    # Old/obsoleted branches

    [openvz-kernel-2.6.26]

    name=OpenVZ 2.6.26 kernel

    #baseurl=http://download.openvz.org/kernel/branches/2.6.26/current

    mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.26

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    [openvz-kernel-2.6.24]

    name=OpenVZ 2.6.24 kernel

    #baseurl=http://download.openvz.org/kernel/branches/2.6.24/current

    mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.24

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    [openvz-kernel-2.6.22]

    name=OpenVZ 2.6.22 kernel

    #baseurl=http://download.openvz.org/kernel/branches/2.6.22/current

    mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.22

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    [openvz-kernel-2.6.20]

    name=OpenVZ 2.6.20 kernel

    #baseurl=http://download.openvz.org/kernel/branches/2.6.20/currentmirrorlist=http://download.openvz.org/kernel/mirrors-2.6.20

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    [openvz-kernel-2.6.18]

    name=OpenVZ 2.6.18 kernel

    #baseurl=http://download.openvz.org/kernel/branches/2.6.18/current

    mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.18

    enabled=0gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    [openvz-kernel-2.6.16]

    name=OpenVZ 2.6.16 kernel

    #baseurl=http://download.openvz.org/kernel/branches/2.6.16/current

    mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.16

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ[openvz-kernel-2.6.8]

    name=OpenVZ 2.6.8 kernel

    #baseurl=http://download.openvz.org/kernel/branches/2.6.8/current

  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    5/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    5/11scardini.net/?p=58

    mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.8

    enabled=0

    gpgcheck=1

    gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

    Importe a chave (key) do repositrio

    Cdigo

    rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ

    Verifiique as opes de kernel do OpenVZ disponveis para instalao no seu sistema com

    o comando:

    Cdigo

    yum search ovzkernelVoc ter uma resposta semelhante a esta:

    [root@centos /]# yum search ovzkernel

    Loaded plugins: fastestmirror

    Loading mirror speeds from cached hostfile

    * addons: mirror.umoss.org

    * base: mirrors.ucr.ac.cr

    * extras: mirror.cogentco.com

    * openvz-kernel-rhel5: download.openvz.org* openvz-utils: download.openvz.org

    * updates: yum.singlehop.com

    =============================== Matched: ovzkernel ============

    ovzkernel.i686 : Virtuozzo Linux kernel (the core of the Linux

    ovzkernel.x86_64 : Virtuozzo Linux kernel (the core of the Linu

    ovzkernel-PAE.i686 : O ncleo do Linux compilado para mquinas

    ovzkernel-PAE-debug.i686 : The Linux PAE kernel compiled with d

    ovzkernel-PAE-devel.i686 : Pacote de desenvolvimento para compi

    : kernel com o kernel PAE corresponden

    ovzkernel-debug.i686 : The Linux kernel compiled with debug con

    ovzkernel-debug.x86_64 : The Linux kernel compiled with debug c

    ovzkernel-devel.i686 : Pacote de desenvolvimento para compilar

    : correspondentes ao kernel.

    ovzkernel-devel.x86_64 : Pacote de desenvolvimento para compila

    : correspondentes ao kernel.

    ovzkernel-ent.i686 : The Linux kernel compiled for huge mem cap

    ovzkernel-ent-debug.i686 : The Linux ent kernel compiled with d

    ovzkernel-ent-devel.i686 : Development package for building ker

    : the ent kernel.

    ovzkernel-xen.i686 : O kernel do Linux compilado para operaes

    : virtuais Xen

    ovzkernel-xen.x86_64 : O kernel do Linux compilado para opera

    : virtuais Xen

    http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_4http://scardini.net/?p=58#codesyntax_4http://scardini.net/?p=58#codesyntax_4http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_3http://scardini.net/?p=58#codesyntax_3http://scardini.net/?p=58#codesyntax_3
  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    6/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    6/11scardini.net/?p=58

    ovzkernel-xen-devel.i686 : Pacote de desenvolvimento para compi

    : correspondentes ao kernel.

    ovzkernel-xen-devel.x86_64 : Pacote de desenvolvimento para com

    : correspondentes ao kernel.

    [root@centos /]#

    Podemos ver varias opes de kernel com suporte a OpenVZ. Para entender o quesignifica cada um dele basta entender os atributos anexados ao nome ovzkernel:

    i686 Kernel para arquitetura de 32 bits

    x86_64 Kernel para arquitetura de 64 bits

    PAE Kernel para arquitetura de 32 bits com Physical Address Extension (PAE)

    ativo. (>4GB RAM)

    ent Kernel com suporte a grande capacidade de memria

    xen Kernel com suporte a tecnologia de virtualizao XEN

    devel headers para compilao de mdulos do kernel correspondente. Por

    exemplo: ovzkernel-devel.x86_64 ovzkernel.x86_64

    debug Kernel compilado com smbolos de debug

    Para a minha mquina vamos instalar o kernel ovzkernel.x86_64 (opo de 64 bits), e os

    headers ovzkernel-devel.x86_64 do mesmo kernel. No seu caso voc deve escolher o

    kernel adequeado para o seu sistema dentre as opes retornadas no comando acima.

    Aps escolher o kernel, proceda a instalao do mesmo:

    Cdigo

    yum install ovzkernel.x86_64*

    yum install ovzkernel-devel.x86_64**

    *ovzkernel.x86_64 deve ser substituido pelo kernel adequado para seu sistema

    **ovzkernel-devel.x86_64 mdulo necessrio para compilar mdulos do kernel (opcional)

    Agora Vamos preceder algumas alteraes na configurao da mquina para o perfeito

    funcionamento do kernel OpenVZ que instalamos. Primeiro vamos verificar se o kernel

    padro o novo kernel instalado, para isto abra o arquivo grub.conf :

    Cdigo

    vim /etc/grub.conf

    http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_6http://scardini.net/?p=58#codesyntax_6http://scardini.net/?p=58#codesyntax_6http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_5http://scardini.net/?p=58#codesyntax_5http://scardini.net/?p=58#codesyntax_5
  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    7/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    7/11scardini.net/?p=58

    Se necessrio altere a propriedade default para selecionar o kernel OpenVZ instalado. Na

    imagem acima est selecionada a entrada de ndice 0 (zero) da lista (kernel destacado em

    laranja).

    Desative o SELinux:

    Cdigo

    vim /etc/selinux/config

    Mude a varivel SELINUX para disabled:

    Cdigo

    # This file controls the state of SELinux on the system.

    # SELINUX= can take one of these three values:

    # enforcing - SELinux security policy is enforced.

    # permissive - SELinux prints warnings instead of enforcing.

    # disabled - SELinux is fully disabled.

    SELINUX=disabled

    # SELINUXTYPE= type of policy in use. Possible values are:

    # targeted - Only targeted network daemons are protected.# strict - Full SELinux protection.

    SELINUXTYPE=targeted

    # SETLOCALDEFS= Check local definition changes

    Configu ra o de boot da m quin a

    http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_8http://scardini.net/?p=58#codesyntax_8http://scardini.net/?p=58#codesyntax_8http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_7http://scardini.net/?p=58#codesyntax_7http://scardini.net/?p=58#codesyntax_7http://scardini.net/wp-content/uploads/2010/09/grub_conf.png
  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    8/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    8/11

    SETLOCALDEFS=0

    Faa uma cpia do arquivo sysctl.conf e em seguida edite o original:

    Cdigo

    cp -f /etc/sysctl.conf /etc/sysctl.conf.bkp

    vim /etc/sysctl.confO original deve ficar assim:

    Cdigo

    net.ipv4.ip_forward = 1

    net.ipv4.conf.default.proxy_arp = 0

    net.ipv4.conf.all.rp_filter = 1

    kernel.sysrq = 1net.ipv4.conf.default.send_redirects = 1

    net.ipv4.conf.all.send_redirects = 0

    Instale as ferramentas de gerenciamento do OpenVZ:

    Cdigo

    yum install vzctl vzquota

    Confirme a instalao dos pacotes e das dependncias.

    Reinicie o CentOS.

    3 Criando Nossos Containers

    Aps a reinicializao do sistema, sua mquina estar pronta para o uso do OpenVZ.

    Antes de iniciarmos a criao do nosso primeiro container, vamos entender um pouco

    mais sobre o OpenVZ. Ao contrrio de tantas outras tecnologias que virtualizam o

    hardware, o OpenVZ virtualiza um espao de software, e em consequencia disto a

    instalao de um sistema operacional nos containers no seguem uma instalao padro

    a partir de uma mdia. Cada container criado a partir de um template do sistema

    desejado.

    Estes templates podem ser obtidos a partir no site do projeto OpenVZ ou voc pode criar o

    seu prprio template.

    Os templates pre-criados fornecidos pelo projeto OpenVZ pode ser encontrados aqui:

    http://download.openvz.org/template/precreated/

    http://download.openvz.org/template/precreated/http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_11http://scardini.net/?p=58#codesyntax_11http://scardini.net/?p=58#codesyntax_11http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_10http://scardini.net/?p=58#codesyntax_10http://scardini.net/?p=58#codesyntax_10http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_9http://scardini.net/?p=58#codesyntax_9http://scardini.net/?p=58#codesyntax_9
  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    9/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    9/11scardini.net/?p=58

    Voc tambm poder encontrar templetes criados por contribuio da comunidade aqui:

    http://download.openvz.org/contrib/template/precreated/

    Para nossos containers vamos baixar um template do CentOS 5, disponvel no seguinte

    link:

    wget http://download.openvz.org/template/precreated/centos-5-x86_64.tar.gz

    Cada template baixado, deve ser salvo na pasta: /vz/template/cache

    Vamos ento baixar nosso template:

    Cdigo

    cd /vz/template/cache

    wget http://download.openvz.org/template/precreated/centos-5-x86_64.tar.gz

    Aps baixar nosso template, vamos criar o nosso primeiro container:

    Cdigo

    vzctl create 101 \

    --ostemplate centos-5-x86_64 \

    --conf basic \

    --ipadd 10.0.0.101 \

    --hostname c101.localhost

    Com isto nosso primeiro container foi criado. Atribuimos a ele o ID 101. Utilizamos como

    template o centos-5-x86_64 baixado anteriomente (centos-5-x86_64.tar.gz). Selecionamos

    a configurao bsica de hardware (basic) e atribuimos o ip 10.0.0.101 para nosso

    container. Ainda no comando de criao atribuimos para o container o nome

    c101.localhost.

    Vamos agora prosseguir com a configurao de nosso container recm criado. Vamos

    atribuir um nome, um servidor de nomes e uma cota de disco:

    Cdigo

    vzctl set 101 \

    --name c101 \

    --nameserver "192.168.226.129" \

    --diskspace 10G:10G \

    --save

    Com isto concluimos o nosso primeiro container. Vamos criar nosso segundo container:

    http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_14http://scardini.net/?p=58#codesyntax_14http://scardini.net/?p=58#codesyntax_14http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_13http://scardini.net/?p=58#codesyntax_13http://scardini.net/?p=58#codesyntax_13http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_12http://scardini.net/?p=58#codesyntax_12http://scardini.net/?p=58#codesyntax_12http://scardini.net/wget%20http://download.openvz.org/template/precreated/centos-5-x86_64.tar.gzhttp://download.openvz.org/contrib/template/precreated/
  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    10/11

    9/12/12

    10/11scardini.net/?p=58

    Cdigo

    vzctl create 102 \

    --ostemplate centos-5-x86_64 \

    --conf basic \

    --ipadd 10.0.0.102 \

    --hostname c102.localhostvzctl set 102 \

    --name c102 \

    --nameserver "192.168.226.129" \

    --diskspace 10G:10G \

    --save

    Com os containers criados, vamos aos comandos bsicos de manipulao dos memsos:

    Para iniciar ( ligar ) um container:

    vzctl start ID

    Para entrar em container:

    vzctl enter 101

    ou

    ssh ip_do_container

    para parar um container:

    vzctl stop ID

    para destruir um container:

    vzctl destroy ID

    para definir a senha do root nos containers criados:

    vzctl set ID userpasswd root:nova_senha save

    Em todos os comando o ID deve ser substituido pelo ID do container desejado. No nosso

    caso 101 ou 102.

    Publicado em Linux e Afins porCristiano Scardini. Marque Link Permanente[http://scardini.net/?p=58] .

    http://scardini.net/?p=58http://scardini.net/?author=1http://scardini.net/?cat=1http://scardini.net/wp-content/plugins/wp-synhighlight/About.htmlhttp://scardini.net/?p=58#codesyntax_15http://scardini.net/?p=58#codesyntax_15http://scardini.net/?p=58#codesyntax_15
  • 7/22/2019 Virtualizando Com o OpenVZ _ Blog Do Scardini

    11/11

    9/12/12 Virtualizando com o OpenVZ | Blog do Scardini

    Comentrios encerrados.