O OpenVZ é um kernel linux modificado para permitir o isolamento de uma série de recursos entre cada ambiente. Ele permite: Isolamento dos ambientes, impedindo interferências e garantindo a segurança de um ambiente sobre o outro gerenciamento dos recursos, limitando ou garantindo para determinados ambientes recursos de CPU, RAM, disco e rede checkpointing – permitindo que os ambientes sejam “gravados” e “congelados” em um estado, podendo ser reassumido futuramente. É conhecido como paravirtualização, ou ainda virtualização baseada em containers.
Link bacana que aborda um pouco mais sobre VPS’s
http://www.kerodicas.com/dicas/artigo=47608/
Passo 1 – Instalando o repositório OpenVZ para o CentOS 6
# cd /etc/yum.repos.d/ # wget http://download.openvz.org/openvz.repo # rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ
Passo 2 – Instalando os pacotes necessários
# yum install vzkernel vim bridge-utils xorg-x11-xauth libcanberra-gtk2 vzctl vzquota virt-what system-config-firewall-tui.noarch
Passo 3 – Configurando a rede como Bridge
OBS: Caso venha configurar os Containers como Bridge
# cd /etc/sysconfig/network-scripts/
# vim ifcfg-eth0 DEVICE="eth0" HWADDR="MAC" NM_CONTROLLED="no" ONBOOT="yes" BRIDGE="br0"
OBS: No meu caso estou usando um IP fixo determinado como 192.168.1.30
# vim ifcfg-br0 DEVICE="br0" TYPE="Bridge" BOOTPROTO="static" ONBOOT="yes" IPADDR="192.168.1.30" NETMASK="255.255.255.0" GATEWAY="192.168.1.1" IPV6INIT="NO" NAME="Bridge eth0" NM_CONTROLLED="no" DELAY="0" USERCTL="no"
Rede configurada.
Passo 4 – Desabilitando o Selinux
# vim /etc/selinux/config
SELINUX=disabled
Passo 5 – Configurando o arquivo sysctl.conf
# vim /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux # # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details. # Controls IP packet forwarding net.ipv4.ip_forward = 1 # Controls source route verification net.ipv4.conf.default.rp_filter = 1 # Do not accept source routing net.ipv4.conf.default.accept_source_route = 0 # Controls the System Request debugging functionality of the kernel #kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. kernel.core_uses_pid = 1 # Controls the use of TCP syncookies net.ipv4.tcp_syncookies = 1 # Disable netfilter on bridges. net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 # CONFIGURAÇÃO PARA OPENVZ 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 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1
Passo 6 – Criando um Volume Lógico de 100GB com o rótulo chamado openvz
OBS: Lembrando que o meu servidor ja está com o LVM ativo, e o nome do meu Grupo de Volumes é storage_lvm
# lvcreate -L 100G -n openvz storage_lvm Logical volume "openvz" created [root@virtualizador /]# lvdisplay --- Logical volume --- LV Name /dev/storage_lvm/openvz VG Name storage_lvm LV UUID 4S4tHY-upIj-bci2-GlOF-xy9D-J2nf-H2tMp5 LV Write Access read/write LV Status available # open 0 LV Size 100,00 GiB Current LE 25600 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
# mkfs.ext4 /dev/storage_lvm/openvz # mkdir /openvz # mount /dev/storage_lvm/openvz /openvz/ # cd /openvz # mkdir dump lock private root template vztmp
Configurando o arquivo fstab
# vim /etc/fstab
/dev/storage_lvm/openvz /openvz ext4 defaults 0 0
OBS: Agora todos os templates, containers e backups serão armazenados dentro do diretório /openvz
Passo 7 – Alterando algumas configurações dentro do arquivo vz.conf
# vi /etc/vz/vz.conf
## Global parameters VIRTUOZZO=yes LOCKDIR=/openvz/lock DUMPDIR=/openvz/dump VE0CPUUNITS=1000 NEIGHBOUR_DEVS=all ## Fail if there is another machine in the network with the same IP ERROR_ON_ARPFAIL="no" ## Template parameters TEMPLATE=/openvz/template ## Defaults for containers VE_ROOT=/openvz/root/$VEID VE_PRIVATE=/openvz/private/$VEID IPV6="no"
# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.30 virtualizador virtualizador.d2d.com.br
Passo 8 – Desabilitando o firewall
# system-config-firewall-tui
Passo 9 – Reinicie o servidor
# init 6
Passo 10 – Instalando o Openvz Panel 2.1
wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh
OBS: Pode ir tomar um café…
Passo 11 – Com o servidor reiniciado, vamos brincar um pouco com o Openvz Para acessar o Openvz Panel, utilize o IP do servidor Openvz. No meu caso é: http://192.168.1.30:3000
Passo 12 – Liberando os pacotes INPUT/OUTPUT entre as redes (Servidor Openvz e Containers)
OBS: Faça um script para sempre inicar junto com o Sistema Operacional
OBS: Rede 192.168.100.1/28 pertencem a rede das VPS’s, definida dentro do OpenVZ Panel
# iptables -t nat -A POSTROUTING -o br0 -s 192.168.100.0/28 -j MASQUERADE
Definindo um range de IP’s dentro do Openvz Panel
Pronto até aqui qualquer vps que for adicionada irá trocar seus pacotes com qualquer rede que chega até o servidor Openvz.
Rede Bridge e Pública
Neste passo remova a regra abaixo definida acima para encaminhamento dos pacotes vindo da rede do servidor Openvz
# iptables -t nat -D POSTROUTING -o br0 -s 192.168.100.0/24 -j MASQUERADE
Agora Basta realizar as configurações abaixo no servidor Openvz
OBS: No meu caso estou criando as regras para a VPS de ID 100. Um outro ponto é que para chegar neste passo é preciso que a rede esteja configurada como Bridge
# vzctl start 100 # vzctl set 100 --netif_add eth0 --save # vzctl exec 100 ifconfig eth0 192.168.1.210/24 # brctl addif br0 veth100.0 # vzctl exec 100 ip route add default via 192.168.1.1 dev eth0
Instalando uma VPS
Hostname: vps1
Tamanho: 20Gb
S.Operacional: CentOS 6
IP Bridge: 192.168.1.210/24
Gateway: 192.168.1.1
DNS: 192.168.1.1 192.168.1.9
A instalação será feita pelo Openvz Panel e a otimização feita por linha de comando
Agora pelo terminal vamos fazer as otimizações
# vzctl enter 101
[root@vps1 /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/simfs 20G 621M 19G 4% / none 128M 4.0K 128M 1% /dev none 128M 0 128M 0% /dev/shm
# exit
# vim /etc/vz/conf/101.conf
# vzctl set 101 --privvmpages 1024:2048M --save UB limits were set successfully CT configuration saved to /etc/vz/conf/101.conf
O primeiro valor é a quantidade de memória garantida a VPS. Essa é a quantidade de memória que a VPS, independentemente da situação, pode utilizar. O segundo valor é o máximo de memória que a VPS pode utilizar. É possível também limitar a porcentagem de CPU destinada a cada VPS através do parâmetro cpulimit.
# vzctl set 101 --cpulimit 25% --save Setting CPU limit: 100 CT configuration saved to /etc/vz/conf/101.conf
Note que se a máquina possuir dois processadores, o valor total é 200%. Limitando disco Podemos limitar o uso de disco entre VE’s através do parâmetro diskspace.
# vzctl set 101 --diskspace 20G:40G --save CT configuration saved to /etc/vz/conf/101.conf
Limitando o uso de Swap
# vzctl set 101 --swappages 0:1024M --save
Alguns outros parâmetros:
--numproc : Número máximo de processos --ioprio : Prioridade para realizar I/O. Valor entre 0 e 7 --numtcpsock : Número máximo de sockets TCP --numothersock : Número máximo de sockets não TCP
Reiniciando a VPS
# vzctl restart 101
Agora basta configurar a rede da VPS dentro do servidor Openvz
# vzctl set 101 --netif_add eth0 --save Configure veth devices: veth101.0 CT configuration saved to /etc/vz/conf/101.conf # vzctl exec 101 ifconfig eth0 192.168.1.210/24 # brctl addif br0 veth101.0 # vzctl exec 101 ip route add default via 192.168.1.1 dev eth0
OBS: Lembrando que se a VPS for reiniciada perderá a configuração de rede, neste caso faça a reconfiguração novamente com os comandos abaixo:
# vzctl exec 101 ifconfig eth0 192.168.1.210/24 # brctl addif br0 veth101.0 # vzctl exec 101 ip route add default via 192.168.1.1 dev eth0
Passo 13 – Instalando uma nova VPS para atribuição de IP por DHCP
Hostname: vps2
Tamanho: 10Gb
S.Operacional: CentOS 6
IP Bridge: DHCP
DNS: 192.168.1.1 192.168.1.9
Configurando a rede por DHCP
# vzctl set 102 --netif_add eth0 --save Configure veth devices: veth102.0 CT configuration saved to /etc/vz/conf/102.conf # ifconfig veth102.0 0 # brctl addif br0 veth102.0 # vzctl enter 102 entered into CT 102
Na VPS2 execute o comando dhclient eth0
[root@vps2 /]# dhclient eth0 [root@vps2 /]# ifconfig eth0 Link encap:Ethernet HWaddr 00:18:51:22:88:41 inet addr:192.168.1.160 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::218:51ff:fe22:8841/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:27 errors:0 dropped:0 overruns:0 frame:0 TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2218 (2.1 KiB) TX bytes:984 (984.0 b) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Lembrando que se for reiniciada a VPS será preciso recriar as configurações abaixo no servidor Openvz
# ifconfig veth102.0 0 # brctl addif br0 veth102.0
Passo 14 – Comandos de Administração: Entrando na VPS:
# vzctl enter 101
Para sair, basta digitar: # exit (Retorna para a máquina principal) Para desligar a VPS:
# vzctl stop 101
Para reiniciar a VPS:
# vzctl restart 101
Para destruir e remover a VPS:
# vzctl destroy 101
Para obter uma lista de todas as VPS e o seu status, digite:
# vzlist -a
Iniciando a VPS junto com o sistema operacional
# vzctl set 101 --onboot yes --save
Configurando o hostname
# vzctl set 101 --hostname vps-new --save
Definindo o DNS para VPS
# vzctl set 101 --nameserver 10.1.1.43 --save Saved parameters for VPS 101
Removendo a VPS do servidor
vzctl destroy 101
Definindo a senha root da VPS
vzctl exec 101 passwd
OBS: Se quiser um servidor robusto de virtualização, você ainda pode instalar o KVM que roda perfeitamente junto com o OpenVZ
Basta instalar os pacotes do KVM
# yum install libvirt libvirt-client qemu-kvm virt-manager virt-viewer qemu-kvm-tools xorg-x11-xauth libcanberra-gtk2
Templates podem ser encontrados no link abaixo:
http://wiki.openvz.org/Download/template/precreated
Fonte do Tutorial:
http://wiki.openvz.org
http://code.google.com/p/ovz-web-panel/wiki/Installation
No responses yet