Machine virtuel Debian sur un cloud Opennebula
J'essaie de monter un cloud avec le logiciel libre Opennebula, en suite lancer un serveur virtuel Debian 6 sur ce cloud. Je choisis à utiliser KVM comme logiciel de virtualisation.
Matériel
Il faut préparer au moins 2 machines:
- Front-End: Opennebula serveur. Sur cette machine on manipule les actions sur les machines virtuels. Sur mon cas son IP est 192.168.104.120
- VMHost: Opennebula virtuel host. Sur cette machine les serveurs virtuels marchent. Sur mon cas son IP est 192.168.104.166
On peut y avoir plusieurs VMHost qui connectent à un Front-End
Les VMHost doivent avoir la possibilité de supporter la virtulisation dans ses CPU. Elles doivent avoir le flag vmx dans cpuinfo
#cat /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl '''vmx''' est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
Installation le cloud
Heuresement il existe déjà des paquets de Debian.
il faut ajouter cette ligne dans /etc/apt/sources.list
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
Sur le Front-End lance
aptitude install opennebula
Sur VMHost lance
aptitude install opennebula-node
Et voila. C'est tout pour l'installation
Configuration
Quand on installe opennebula, il crée un spécial utilisateur oneadmin. Il faut utiliser cet utilisateur pour manipuler le cloud
Sur la Front-End
Ajouter le VMHost au cloud
#su - oneadmin oneadmin@brochet:~$ onehost add 192.168.104.166 im_kvm vmm_kvm tm_ssh oneadmin@brochet:~$ onehost list ID NAME CLUSTER RVM TCPU FCPU ACPU TMEM FMEM STAT 11 192.168.104.166 default 2 200 192 140 2.9G 2.3G on
sur la VMHost
Il faut que user oneadmin sur le Front-End puisse faire un ssh sur le VMHost sans avoir besoin de taper mdp. Donc ajouter la clé public de user oneadmin de Front-End dans .ssh/authorized-keys de oneadmin sur VMHost
editer /etc/default/libvirt-bin
# Start libvirtd to handle qemu/kvm: start_libvirtd="yes" # options passed to libvirtd, add "-l" to listen on tcp libvirtd_opts="-d" /etc/init.d/libvirt-bin restart
Il faut auusi ajouter un bridge br0. Editer le fichier /etc/network/interface et ajouter
auto br0 iface br0 inet static address 192.168.104.166 netmask 255.255.255.0 network 192.168.150.0 boadcast 192.168.104.255 bridge_ports eth0 bridge_stp off bridge_fd 1
Lancer une machine virtuelle
D'abord il faut créer un réseau virtuel
oneadmin@brochet:~$vi vmnet.template NAME = "Private LAN" TYPE = FIXED BRIDGE = br0 LEASES = [IP=192.168.104.230] LEASES = [IP=192.168.104.231] LEASES = [IP=192.168.104.232] LEASES = [IP=192.168.104.233] LEASES = [IP=192.168.104.234] # Custom Attributes to be used in Context GATEWAY= 192.168.104.1 DNS= 192.168.104.1 oneadmin@brochet:~$onevnet create vmnet.template oneadmin@brochet:~$ onevnet list ID USER NAME TYPE BRIDGE P #LEASES 3 oneadmin Private LAN Fixed br0 N 2
En suite on peut lancer une machine virtuel. Pour tester il y a une petite image ttylinux de test à télécharger ici
wget http://dev.opennebula.org/attachments/download/170/ttylinux.tar.gz
Dans ce fichier il y a une image ttylinux.img. On le met dans /opt/nebula/ttylinux.img
On crée un fichier config de la machine virtuelle
oneadmin@brochet:~$ vi ttylinux.one NAME = ttylinux CPU = 0.1 MEMORY = 64 DISK = [ source = "/opt/nebula/ttylinux.img", target = "hda", readonly = "no" ] NIC = [ NETWORK = "Private LAN" ] FEATURES=[ acpi="no" ] oneadmin@brochet:~$ onevm create ttylinux.one oneadmin@brochet:~$ onevm list ID USER NAME STAT CPU MEM HOSTNAME TIME 39 oneadmin ttylinux runn 0 64M 192.168.104.166 00 18:37:46
On a une machine virtuelle avec ID=39
Pour voir quelle IP cette machine a, on utilise la command onevnet
oneadmin@brochet:~$ onevnet list ID USER NAME TYPE BRIDGE P #LEASES 3 oneadmin Private LAN Fixed br0 N 3 oneadmin@brochet:~$ onevnet show 3 LEASES INFORMATION LEASE=[ IP=192.168.104.230, MAC=02:00:c0:a8:68:e6, USED=0, VID=-1 ] LEASE=[ IP=192.168.104.231, MAC=02:00:c0:a8:68:e7, USED=0, VID=-1 ] LEASE=[ IP=192.168.104.232, MAC=02:00:c0:a8:68:e8, USED=1, VID=37 ] LEASE=[ IP=192.168.104.233, MAC=02:00:c0:a8:68:e9, USED=1, VID=38 ] LEASE=[ IP=192.168.104.234, MAC=02:00:c0:a8:68:ea, USED=1, VID=39 ]
Alors la machine 39 a IP=192.168.104.234
On peut faire un ssh dessus. Le mdp est password
oneadmin@brochet:~$ ssh root@192.168.104.234 root@192.168.104.234's password: Chop wood, carry water. #