NAT networks in Ovirt

By j0lly, gio 20 novembre 2014, in category Sysadmin

kvm, libvirt, nat, ovirt

Questo blog è prima di tutto un luogo dove pubblicare i miei appunti, in modo che servano a me e, all'occorrenza a chiunque si possa trovare nella mia stessa situazione.

Scrivo in italiano perché, nel 90% dei casi, quello di cui tratto è sicuramente già stato scritto da qualcuno, e probabilmente in maniera più chiara della mia :P.

Quindi, Di seguito la rodata procedura per attivare un network virtuale su oVirt 3.5.

Grazie al nuovo Hook per oVirt che gestisce il NAT lato Gui, è decisamente molto più semplice creare una rete Nattata su oVirt; per schematizzare, questi sono i passaggi:

Qui ricapitolo le specifiche della mia infrastruttura:

Host = Centos 7

Engine = Centos 6 [attualmente non supportato Centos 7 come Engine] Self Hosted

Ovirt = 3.5 Version

vdsm-hook-extnet = 4.16.7-1.gitdb83943.el7.noarch

Installazione dell'Hook

Se come me, avete installato il repository di oVirt 3.5,

Su tutti gli host del cluster, installate semplicemente l'hook:

yum install -y vdsm-hook-extnet

Sull'engine, abilitate l'hook:

engine-config -s CustomDeviceProperties='{type=interface;prop={extnet=^[a-zA-Z0-9_ ---]+$}}'

Non ricordo se sia necessario un reboot dell'host, ma non credo..

Creazione di una rete Nat, per ogni Host Ora è necessario creare una rete NAT direttamente via Virsh, perché oVirt  non supporta ancora questo tipo di rete:

Per prima cosa, è necessario, se ancora non ce l'abbiamo, un utente autorizzato ad accedere all'hypervisor:

saslpasswd2 -a libvirt root

digitate la password per due volte, ed abilitate l'accesso a libvirt via SASL [richiesto da ovirt]. Creare una rete Nat classica con ovirt, usate un xml per utilizzare il comando net-define; il mio è molto semplice:

<network>
 <name>cluster_nat</name>
 <forward mode='nat'>
  <nat>
   <port start='1024' end='65535'/>
  </nat>
 </forward>
 <bridge name='virbr1' stp='on' delay='0' />
 <ip address='172.16.31.1' netmask='255.255.255.0'>
 </ip>
</network>

L'importante è che vi ricordiate il nome che avete dato al network, e di non creare una virtual interface già esistente [virbr1].

NB

Aggiungete il dhcp se non ne avete già uno nella rete Nat che andate a creare, altrimenti dovrete restartare il network e le VM che ci girano dentro se volete aggiungere il DHCP alla configurazione!

Loggatevi in virsh, nel vostro Hypervisor, create la rete, settatela in auto-start e lanciatela (su tutti i nodi del cluster):

virsh
connect qemu:///system
net-define _nome_del_file_xml_
net-autostart _cluster_nat _
net-start _cluster_nat_

Questi passaggi vanno fatti su tutti gli host del cluster che intendete fornire di un NAT.

Assicuratevi che la nuova rete sia un & running e che tra le periferiche sia listata la nuova interfaccia.

NB

Se utilizzate iptables (che viene autogestito dall'engine quando create nuovi virtual network) dovrete creare le regole a mano, perché VDSM non è in grado di gestire questa rete.

aggiunta del profilo vNIC tramite GUI

Non resta che collegarsi alla console di amministrazione di oVirt e creare un profilo ad-hoc per gestire questa rete; l'hook installato aggiunge una  _custom property _che permette la gestione del NAT.

Loggatevi e create un nuovo profile in uno dei vostri networks:

ovirt

Nel profilo, aggiungete la proprietà extnet, e come valore, inserite il nome che avete dato al network via virsh:

ovirt

Perfect! ora potete aggiungere il nic alle vostre VM:

ovirt

Et voilà, il NAT network è servito!

Stay Tuned