Xen com multi bridge e LVM
Aqui demonstro como subir um ambiente virtualizado com Xen, utilizando um servidor com quatro interfaces de rede, sendo que cada interface estará conectada a cada máquina virtual. Essa abordagem garante maior segurança e desempenho. Além disso, as máquinas virtuais serão criadas em volumes virtuais, que podem ser redimensionados de acordo com a necessidade.
Parte 5: Criando uma VM para um servidor web
Execute o comando abaixo. Escolha o hostname, endereço de IP e tamanhos das partições de acordo com suas necessidades:
# xen-create-image --hostname web --ip 192.168.0.7 --size 30GB --memory 512MB --swap 512
# cat /etc/xen/web.cfg
Repare que na linha:
vif = [ 'ip=192.168.0.7,mac=00:16:3E:28:2C:3D,bridge=eth0' ]
estamos declarando que a bridge utilizada será a eth0.
A linha:
extra="clocksource=jiffies"
é um workaround para um problema de sincronismo entre Dom0 e DomU.
Crie as outras três máquinas virtuais conforme suas necessidades, e em nos arquivos de configuração de cada uma, altere o nome da bridge que ela utilizará. Por exemplo:
Servidor de base de dados:
Servidor DNS:
Servidor Samba:
Claro que os exemplos são hipotéticos, somente para exemplificar.
Suba todas as VMs usando o comando:
# xm create /etc/xen/nome_da_vm.cfg
Verifique se elas estão rodando:
# xm list
Finalmente, verifique como as bridges estão sendo utilizadas:
# brctl show
# xen-create-image --hostname web --ip 192.168.0.7 --size 30GB --memory 512MB --swap 512
General Information -------------------- Hostname : web Distribution : lenny Partitions : swap 512 (swap) / 30GB (ext3) Image type : full Memory size : 512MB Kernel path : /boot/vmlinuz-2.6.26-2-xen-amd64 Initrd path : /boot/initrd.img-2.6.26-2-xen-amd64 Networking Information ---------------------- IP Address 1 : 192.168.0.7 [MAC: 00:16:3E:28:2C:3D] Netmask : 255.255.255.0 Broadcast : 192.168.0.255 Gateway : 192.168.0.1 Creating swap on /dev/vg0/web-swap Done Creating ext3 filesystem on /dev/vg0/web-disk Done Installation method: debootstrap Done Running hooks Done No role scripts were specified. Skipping Creating Xen configuration file Done All done Logfile produced at: /var/log/xen-tools/web.logEdite o arquivo /etc/xen/web.cfg e deixe-o como está abaixo.
# cat /etc/xen/web.cfg
#
# Configuration file for the Xen instance web, created
# by xen-tools 3.9 on Thu Jul 1 09:10:10 2010.
#
#
# Kernel + memory size
#
kernel = '/boot/vmlinuz-2.6.26-2-xen-amd64'
ramdisk = '/boot/initrd.img-2.6.26-2-xen-amd64'
memory = '512'
#
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'phy:/dev/vg0/web-swap,xvda1,w',
'phy:/dev/vg0/web-disk,xvda2,w',
]
#
# Hostname
#
name = 'web'
#
# Networking
#
vif = [ 'ip=192.168.0.7,mac=00:16:3E:28:2C:3D,bridge=eth0' ]
#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
# Workaround para clocksource/0: Time went backwards
extra="clocksource=jiffies"
# Configuration file for the Xen instance web, created
# by xen-tools 3.9 on Thu Jul 1 09:10:10 2010.
#
#
# Kernel + memory size
#
kernel = '/boot/vmlinuz-2.6.26-2-xen-amd64'
ramdisk = '/boot/initrd.img-2.6.26-2-xen-amd64'
memory = '512'
#
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'phy:/dev/vg0/web-swap,xvda1,w',
'phy:/dev/vg0/web-disk,xvda2,w',
]
#
# Hostname
#
name = 'web'
#
# Networking
#
vif = [ 'ip=192.168.0.7,mac=00:16:3E:28:2C:3D,bridge=eth0' ]
#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
# Workaround para clocksource/0: Time went backwards
extra="clocksource=jiffies"
Repare que na linha:
vif = [ 'ip=192.168.0.7,mac=00:16:3E:28:2C:3D,bridge=eth0' ]
estamos declarando que a bridge utilizada será a eth0.
A linha:
extra="clocksource=jiffies"
é um workaround para um problema de sincronismo entre Dom0 e DomU.
Crie as outras três máquinas virtuais conforme suas necessidades, e em nos arquivos de configuração de cada uma, altere o nome da bridge que ela utilizará. Por exemplo:
Servidor de base de dados:
vif = [ 'ip=192.168.0.8,mac=00:16:3E:28:2C:3E,bridge=eth1' ]
Servidor DNS:
vif = [ 'ip=192.168.0.9,mac=00:16:3E:28:2C:3F,bridge=eth2' ]
Servidor Samba:
vif = [ 'ip=192.168.0.10,mac=00:16:3E:28:2D:3E,bridge=eth3' ]
Claro que os exemplos são hipotéticos, somente para exemplificar.
Suba todas as VMs usando o comando:
# xm create /etc/xen/nome_da_vm.cfg
Verifique se elas estão rodando:
# xm list
Name ID Mem VCPUs State Time(s) Domain-0 0 1958 8 r----- 4673.4 bases 26 512 1 -b---- 9.4 ns1 25 512 1 -b---- 4.5 samba 28 512 1 -b---- 3.5 web 27 512 1 -b---- 14.1O exemplo acima é a saída do servidor da universidade, rodando 4 VMs. Sua saída pode ser diferente disso.
Finalmente, verifique como as bridges estão sendo utilizadas:
# brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.001517ab0566 no peth0
vif27.0
eth1 8000.001517ab0567 no peth1
vif26.0
eth2 8000.002219bd581b no peth2
vif25.0
eth3 8000.002219bd581d no peth3
vif28.0
Podemos notar que em cada bridge foi criada uma interface virtual "vifxx.x" que está atendendo especificamente a uma VM.