Recentemente Libersoft ha rilasciato un plugin nell’Ecosystem di OpenNebula per integrare are uno storage MooseFS: attraverso questo plugin sono sfruttate le potenzialità di snapshot di MooseFS per il deploy delle immagini, cosa che rende il sistema estremamente veloce. Inoltre, seguendo questa installazione, installeremo anche OpenNebula all’interno dello sotrage MooseFS in modo da renderlo
In questo howto faremo riferimento ai precedenti articoli per creare un cloud controller/storage controller: in pratica il nostro server fungerà sia da controller per OpenNebula, sia da controller per MooseFS.
Nel mio caso ho installato il sistema usando come distribuzione Ubuntu Linux 10.2 LTS, partendo da una installazione di base.
Installazione del controller MooseFS
In Ubuntu non è presente un pacchetto per MooseFS, per cui è necessario compilarlo manualmente. Innanzi tutto, quindi, installiamo i tools per la compilazione:
apt-get install gcc build-essential
Quindi installiamo le librerie FUSE, prerequisito per la compilazione i tools per montare il filesystem moosefs:
apt-get install libfuse-dev fuse-utils libfuse2
A questo punto possiamo procedere con la compilazione di MooseFS come spiegato in questo articolo
Per maggiore sicurezza consiglio di abilitare il metadata server anche sul controller così come spiegato in questo articolo.
In questo articolo non tratteremo l’installazione dei chunk server (i nodi di storage di MooseFS), diamo per buono che ce ne siano e siano collegato al controller.
A questo punto creiamo la directory con il mountpoint di moosefs e montiamo il filesystem:
mkdir -p /srv/vms mfsmount /srv/vms -H 127.0.0.1 -P 9421
Ricordiamoci di aggiungere i comandi per avviare i tre demoni di MooseFS e per montare lo storage all’interno di /etc/rc.local per far si che avvenga tutto in automatico il filesystem all’avvio; attenzione che è necessario eseguire queste operazioni prima di lanciare il demone di OpenNebula.
Installazione di OpenNebula
A questo punto installiamo OpenNebula, anche in questo caso compilando i sorgenti i modalità utente come spiegato in questo articolo; l’unica cosa a cui dobbiamo prestare attenzione è la directory di installazione che dovrà essere /srv/vms/one.
Le uniche differenze quindi stanno nella creazione dell’utente:
groupadd cloud useradd -d /srv/vms/one -s /bin/bash -g cloud -m oneadmin mkdir /srv/vms/one /srv/vms/deply /srv/vms/images chown -R oneadmin:cloud /srv/vms/
nel file .profile
.profile export ONE_AUTH='/srv/vms/one/.one/one_auth' export ONE_LOCATION='/srv/vms/one' export ONE_XMLRPC='http://localhost:2633/RPC2' export PATH=$PATH':/srv/vms/one/bin'
E nella compliazione di OpenNebula
./install.sh -d /srv/vms/one
Installazione del plugin per MooseFS
Ultima cosa da fare è installare il plugin di MooseFS come spiegato nella pagina dedicata.
Eseguiamo il download:
https://github.com/libersoft/opennebula-tm-moosefs/tarball/master
estraiamo la directory `tm_moosefs` in `/srv/vms/one/etc/` e la directory `tm_commands/moosefs` in `/srv/vms/one/lib/tm_commands`
A questo punto modifichiamo il file di configurazione di OpenNebula:
/srv/vms/one/etc/oned.conf
HOST_MONITORING_INTERVAL = 60
VM_POLLING_INTERVAL = 60
VM_DIR=/srv/vms/deploy
IMAGE_REPOSITORY_PATH = /srv/vms/images
SCRIPTS_REMOTE_DIR=/tmp/one
DB = [ backend = "mysql",
server = "localhost",
port = 0,
user = "oneadmin",
passwd = "oneadmin",
db_name = "opennebula" ]
VNC_BASE_PORT = 5000
DEBUG_LEVEL=3
NETWORK_SIZE = 254
MAC_PREFIX = "00:03"
DEFAULT_IMAGE_TYPE = "OS"
DEFAULT_DEVICE_PREFIX = "hd"
IM_MAD = [
name = "im_xen",
executable = "one_im_ssh",
arguments = "xen" ]
VM_MAD = [
name = "vmm_xen",
executable = "one_vmm_ssh",
arguments = "xen",
default = "vmm_ssh/vmm_ssh_xen.conf",
type = "xen" ]
TM_MAD = [
name = "tm_moosefs",
executable = "one_tm",
arguments = "tm_moosefs/tm_moosefs.conf" ]
HM_MAD = [
executable = "one_hm" ]
VM_HOOK = [
name = "image",
on = "DONE",
command = "image.rb",
arguments = "$VMID"
HOST_HOOK = [
name = "error",
on = "ERROR",
command = "host_error.rb",
arguments = "$HID -r n",
remote = "no" ]
VM_HOOK = [
name = "on_failure_resubmit",
on = "FAILED",
command = "/usr/bin/env onevm resubmit",
arguments = "$VMID" ]
Ricordiamoci che per aggiungere i nodi host, bisogna usare il tm_moosefs:
onehost create host01 im_xen vmm_xen tm_moosefs