Tags:
,
view all tags
---+!! Guida di installazione dell'infrastruttura di cloud per il progetto Marche Cloud Ver. 0.2 - 2012-11-20 %TOC% <br /> ---+ Testbed ---++ Tabella Hostnames / IPs dei server che compongono l'infrastruttura pilota | *HOSTNAME* | *IP eth0* | *IP eth1* | *IP eth2* | | mcloud01.regionemarche.intra | 192.168.200.21 | 10.101.8.21 | non configurato | | mcloud02.regionemarche.intra | 192.168.200.22 | 10.101.8.22 | non configurato | | mcloud03.regionemarche.intra | 192.168.200.23 | 10.101.8.23 | non configurato | | mcloud04.regionemarche.intra | 192.168.200.24 | 10.101.8.24 | non configurato | <br /> ---++ Controlli preliminari dell'ambiente software da effettuare su ogni server * Controllare il sistema operativo installato (deve essere Centos 6.3) <verbatim> # cat /etc/redhat-release CentOS release 6.3 (Final) </verbatim> * Controllare la corretta configurazione del volume group (un unico volume group con nome =nova-volumes=) e dei logical volumes <verbatim> # vgs VG #PV #LV #SN Attr VSize VFree nova-volumes 1 3 0 wz--n- 1.64t 849.76g # lvs LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert lv_root nova-volumes -wi-ao-- 10.00g lv_swap nova-volumes -wi-ao-- 15.90g </verbatim> * Controllare il setup di rete (tre reti fisiche distinte eth0, eth1 ed eth2) <verbatim> # ifconfig eth0 Link encap:Ethernet HWaddr B4:B5:2F:5C:FE:70 inet addr:192.168.200.21 Bcast:192.168.200.255 Mask:255.255.255.0 inet6 addr: fe80::b6b5:2fff:fe5c:fe70/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:49059623 errors:0 dropped:0 overruns:0 frame:0 TX packets:20760293 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:47573641634 (44.3 GiB) TX bytes:49395841919 (46.0 GiB) Interrupt:92 eth1 Link encap:Ethernet HWaddr B4:B5:2F:5C:FE:71 inet addr:10.101.8.21 Bcast:10.101.9.255 Mask:255.255.254.0 inet6 addr: fe80::b6b5:2fff:fe5c:fe71/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:85066 errors:0 dropped:0 overruns:0 frame:0 TX packets:58474 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:14284835 (13.6 MiB) TX bytes:42927456 (40.9 MiB) Interrupt:96 eth2 Link encap:Ethernet HWaddr B4:B5:2F:5C:FE:72 inet6 addr: fe80::b6b5:2fff:fe5c:fe72/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:762806 errors:0 dropped:0 overruns:0 frame:0 TX packets:174684 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:78052445 (74.4 MiB) TX bytes:11460443 (10.9 MiB) Interrupt:100 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:10325996 errors:0 dropped:0 overruns:0 frame:0 TX packets:10325996 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3852026297 (3.5 GiB) TX bytes:3852026297 (3.5 GiB) </verbatim> <br /> ---++ Operazioni preliminari effettuate su tutti i server * Verifica del risoluzione degli hostname. E' stato modificato il file =/etc/hosts.conf= come segue per una corretta risoluzione. <verbatim> # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.200.21 mcloud01.regionemarche.intra mcloud01 192.168.200.22 mcloud02.regionemarche.intra mcloud02 192.168.200.23 mcloud03.regionemarche.intra mcloud03 192.168.200.24 mcloud04.regionemarche.intra mcloud04 </verbatim> * Installazione di alcuni pacchetti si S.O. mancanti, ma utili per il lavoro di installazione e configurazione: <verbatim> yum install openssh-clients system-config-lvm vim-enhanced xorg-x11-xauth ntp avahi </verbatim> * Configurazione servizio =ntp=. La sincronizzazione dei server è essenziale per il corretto funzionamento di openstack. Al file di configurazione =/etc/ntp.conf= è stato aggiunta la riga =server 10.101.12.49= e successivamente riavviato il servizio. <verbatim> # chkconfig ntpd on # service ntp restart </verbatim> * Installazione del repository EPEL <verbatim> # rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm # yum clean all # yum update </verbatim> * I quattro server sono inoltre stati configurati per l'accesso via ssh senza password ed è stato installato il software *clusterssh* con il comando =yum install -y clusterssh= * I servizi =iptables= e =SELinux= risultavano abilitati e sono stati spenti. * Per disattivare completamente |SELinux occorre editare =/etc/sysconfig/selinux=, mettere =SELINUX=disabled= e fare il reboot dei server. Per iptables: <verbatim> # /etc/init.d/iptables stop # chkconfig iptables off </verbatim> * La lista dei repository a questo punto sarà la seguente: <verbatim> # ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel.repo epel-testing.repo </verbatim> * Operazioni preliminari per l'avvio del servizio =libvirtd= : <verbatim> /etc/init.d/messagebus restart /etc/init.d/avahi-daemon restart /etc/init.d/libvirtd restart /sbin/chkconfig messagebus on /sbin/chkconfig avahi-daemon on </verbatim> <br /> ---+ GlusterFS Il sito ufficiale di !GlusterFE è http://www.gluster.org/. La documentazione per !GlusterFS è disponibile in http://www.gluster.org/community/documentation/index.php/Gluster_3.2_Filesystem_Administration_Guide Al momento dell'installazione, nel repository EPEL era disponibile la versione !GlusterFS 3.2. La seguente documentazione riporta le operazioni fatte sui server a disposizione e non sostituisce la documentazione ufficiale di !GlusterFS. ---++ Installazione pacchetti GlusterFS Installare tramite =yum= i pacchetti del server !GestioneServiziGenerali.GlusterFS sui nodi che comporranno il filesystem distribuito <verbatim> # yum install glusterfs-fuse glusterfs-server glusterfs-vim </verbatim> Far partire il servizio =glusterd= appena installato <verbatim> # /etc/init.d/glusterd start </verbatim> Permettere che i servizi =glusterd= e =glusterfsd= vengano avviati di default al riavvio dei server <verbatim> # chkconfig glusterd on # chkconfig glusterfsd on </verbatim> <br /> ---++ Creazione di un trusted storage pool Prima di configurare un volume !GestioneServiziGenerali.GlusterFS è necessario creare un trusted storage pool, contenente i server che comporranno il volume. Per permettere la condivisione del filesystem tra i nodi desiderati eseguire, su uno qualsiasi dei nodi, il comando =gluster peer probe <HOSTNAME_NODE>= per ognuno degli altri nodi. Ad esempio in un pool di quattro nodi (come nell'infrastruttura MarcheCloud) eseguire sull'host =192.168.200.21= : <verbatim> # gluster peer probe 192.168.200.22 # gluster peer probe 192.168.200.23 # gluster peer probe 192.168.200.24 </verbatim> Per controllare che la creazione del pool sia andata a buon fine, lanciare il comando =gluster peer status= su uno dei nodi. In output verrà visualizzata la composizione del pool. Ad esempio lanciandolo su =192.168.200.21= si otterrà: <verbatim> # gluster peer status Number of Peers: 3 Hostname: 192.168.200.23 Uuid: c170f9ab-21f9-4382-98a7-cdff443fc696 State: Peer in Cluster (Connected) Hostname: 192.168.200.24 Uuid: 2a4733bf-f1e6-4e68-a526-7c52da574c23 State: Peer in Cluster (Connected) Hostname: 192.168.200.22 Uuid: 55e2e264-4359-417d-9da2-ab7032b9a293 State: Peer in Cluster (Connected) </verbatim> <br /> ---++ Creazione delle unità base di storage (Brick) In !GestioneServiziGenerali.GlusterFS un Brick è l'unità base dello storage, rappresentata da una directory su un server del trusted storage pool. ---+++ Creazione Brick per GLANCE Nota bene: * I nodi che compongono il volume condiviso per GLANCE sono 3 in modalità di replica * Per GLANCE si è reputata sufficiente una dimensione di 300G (Gigabyte) per ciascun brick * Si è scelto lv_glance come nome del volume logico * Si è scelto /mnt/brick-glance come directory dove montare il volume logico Ripetere il seguente set di istruzioni per *ognuno dei nodi* che si intende utilizzare per comporre il filesystem per il servizio GLANCE (Image Repository) di !OpenStack. 1. Creare un volume logico di 300 Gigabyte: <verbatim> # lvcreate -L 300G -n lv_glance <VOLUME_NAME> </verbatim> dove <VOLUME_NAME> è il nome del volume fisico sul quale si intende creare il volume logico. Per capire quali sono i volumi fisici disponibili sul server lanciare il comando =vgdisplay= Per controllare la corretta creazione del volume logico, digitare il comando =lvs= che fornirà in output la lista dei volumi logici disponibili sul server. <pre></pre> 1. Formattare la partizione appena creata (ad esempio su filesystem ext4): <verbatim> # mkfs.ext4 <LV_PATH> </verbatim> dove <LV_PATH> è il percorso del volume logico ricavabile tramite il comando =lvdisplay= . <pre></pre> 1. Creare la directory dove si intende montare il volume appena creato: <verbatim> # mkdir /mnt/brick-glance </verbatim> <pre></pre> 1. Per consentire che il volume logico sia montato all'avvio del server, editare il file =/etc/fstab= aggiungendo la seguente riga: <verbatim> <LV_PATH> /mnt/brick-glance ext4 defaults 1 1 </verbatim> <pre></pre> 1. Montare il volume: <verbatim> # mount –a </verbatim> ---+++ Creazione Brick per NOVA Nota bene: * I nodi che compongono il volume condiviso per NOVA sono 4 in modalità di replica distribuita * Per NOVA si è reputata sufficiente una dimensione di 800G (Gigabyte) per ciascun brick * Si è scelto lv_nova come nome del volume logico * Si è scelto /mnt/brick-glance come directory dove montare il volume logico Ripetere il seguente set di istruzioni per *ognuno dei nodi* che si intende utilizzare per comporre il filesystem per il servizio NOVA (Compute) di !OpenStack. 1. Creare un volume logico di 800 Gigabyte: <verbatim> # lvcreate -L 800G -n lv_nova <VOLUME_NAME> </verbatim> <pre></pre> 1. Formattare la partizione appena creata (ad esempio su filesystem ext4): <verbatim> # mkfs.ext4 <LV_PATH> </verbatim> <pre></pre> 1. Creare la directory dove si intende montare il volume appena creato: <verbatim> # mkdir /mnt/brick-nova </verbatim> <pre></pre> 1. Editare il file =/etc/fstab= aggiungendo la seguente riga: <verbatim> <LV_PATH> /mnt/brick-nova ext4 defaults 1 1 </verbatim> <pre></pre> 1. Montare il volume: <verbatim> # mount –a </verbatim> <br /> ---++ Creazione del volume condiviso I Brick vengono utlizzati per comporre il volume di storage condiviso sui nodi. La creazione del volume può essere effettuata su uno qualsiasi dei nodi che compongono il trusted storage pool. Ciascun Brick è identificato dalla combinazione del nome del server con la directory da esportare, nel seguente formato _hostname.domain:/mnt/mydir_ . ---+++ Creazione del volume condiviso per GLANCE Nota bene: * I nodi che compongono il volume condiviso per GLANCE sono 3 in modalità di replica * Il servizio GLANCE sarà installato sul server 192.168.200.21 * Si è scelto volume_glance come nome del volume condiviso Creare il volume condiviso tramite il seguente comando: <verbatim> # gluster volume create volume-glance replica 3 transport tcp \ 192.168.200.22:/mnt/brick-glance \ 192.168.200.23:/mnt/brick-glance \ 192.168.200.24:/mnt/brick-glance </verbatim> Far partire il vomune appena creato: <verbatim> # gluster volume start volume-glance </verbatim> Per controllare il corretto avvio del volume, digitare: <verbatim> # gluster volume info </verbatim> *Sul server che ospiterà il servizio GLANCE* (Image repository) montare il volume creato. Editare il file =/etc/fstab= (se necessario creare la directory =/var/lib/glance/images=): <verbatim> 192.168.200.21:/volume-glance /var/lib/glance/images glusterfs defaults 1 1 </verbatim> Montare il volume condiviso: <verbatim> # mount –a </verbatim> ---+++ Creazione del volume condiviso per NOVA Nota bene: * I nodi che compongono il volume condiviso per NOVA sono 4 in modalità di replica distribuita * Il servizio NOVA sarà installato sui server 192.168.200.22, 192.168.200.23 e 192.168.200.24 * Si è scelto volume_nova come nome del volume condiviso Creare il volume condiviso tramite il seguente comando: <verbatim> # gluster volume create volume-nova replica 2 transport tcp \ 192.168.200.21:/mnt/brick-nova \ 192.168.200.22:/mnt/brick-nova \ 192.168.200.23:/mnt/brick-nova \ 192.168.200.24:/mnt/brick-nova </verbatim> Far partire il vomune appena creato: <verbatim> # gluster volume start volume-nova </verbatim> *Sui server che ospiteranno il servizio NOVA* (Compute) montare il volume creato. Editare il file =/etc/fstab= (se necessario creare la directory con il comando =mkdir -p /var/lib/nova/instances=): <verbatim> <IP_ETH0>:/volume-nova /var/lib/nova/instances glusterfs defaults 1 1 </verbatim> Montare il volume condiviso: <verbatim> # mount –a </verbatim> ---++ Riepilogo configurazione del filesystem I volumi di !GlusterFS risulteranno essere i seguenti: <verbatim> # gluster volume info Volume Name: volume-nova Type: Distributed-Replicate Status: Started Number of Bricks: 2 x 2 = 4 Transport-type: tcp Bricks: Brick1: 192.168.200.21:/mnt/brick-nova Brick2: 192.168.200.22:/mnt/brick-nova Brick3: 192.168.200.23:/mnt/brick-nova Brick4: 192.168.200.24:/mnt/brick-nova Volume Name: volume-glance Type: Replicate Status: Started Number of Bricks: 3 Transport-type: tcp Bricks: Brick1: 192.168.200.22:/mnt/brick-glance Brick2: 192.168.200.23:/mnt/brick-glance Brick3: 192.168.200.24:/mnt/brick-glance </verbatim> A questo punto avremo le seguenti configurazioni sui vari server. ---+++ mcloud01 <verbatim> # cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu May 17 04:42:07 2012 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/nova--volumes-lv_root / ext4 defaults 1 1 UUID=81dfe44d-f37c-494c-8181-6fec7c785b66 /boot ext4 defaults 1 2 /dev/mapper/nova--volumes-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/nova-volumes/lv_nova /mnt/brick-nova ext4 defaults 1 1 192.168.200.21:/volume-glance /var/lib/glance/images glusterfs defaults 1 1 # mount /dev/mapper/nova--volumes-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) /dev/mapper/nova--volumes-lv_nova on /mnt/brick-nova type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) 192.168.200.21:/volume-glance on /var/lib/glance/images type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072) # df -mh Filesystem Size Used Avail Use% Mounted on /dev/mapper/nova--volumes-lv_root 9.9G 1.4G 8.1G 15% / tmpfs 63G 0 63G 0% /dev/shm /dev/sda1 1008M 75M 883M 8% /boot /dev/mapper/nova--volumes-lv_nova 788G 197M 748G 1% /mnt/brick-nova 192.168.200.21:/volume-glance 296G 191M 281G 1% /var/lib/glance/images </verbatim> ---+++ mcloud02 <verbatim> # cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed May 16 17:06:15 2012 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/nova--volumes-lv_root / ext4 defaults 1 1 UUID=7c003c6b-aa96-4075-9cda-6fba7cc4b710 /boot ext4 defaults 1 2 /dev/mapper/nova--volumes-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/nova-volumes/lv_glance /mnt/brick-glance ext4 defaults 1 1 /dev/nova-volumes/lv_nova /mnt/brick-nova ext4 defaults 1 1 192.168.200.22:/volume-nova /var/lib/nova/instances glusterfs defaults 1 1 # mount /dev/mapper/nova--volumes-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/mapper/nova--volumes-lv_glance on /mnt/brick-glance type ext4 (rw) /dev/mapper/nova--volumes-lv_nova on /mnt/brick-nova type ext4 (rw) 192.168.200.22:/volume-nova on /var/lib/nova/instances type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072) # df -mh Filesystem Size Used Avail Use% Mounted on /dev/mapper/nova--volumes-lv_root 9.9G 886M 8.5G 10% / tmpfs 63G 0 63G 0% /dev/shm /dev/sda1 1008M 75M 883M 8% /boot /dev/mapper/nova--volumes-lv_glance 296G 191M 281G 1% /mnt/brick-glance /dev/mapper/nova--volumes-lv_nova 788G 197M 748G 1% /mnt/brick-nova 192.168.200.22:/volume-nova 1.6T 393M 1.5T 1% /var/lib/nova/instances </verbatim> ---+++ mcloud03 <verbatim> # cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu May 17 03:26:21 2012 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/nova--volumes-lv_root / ext4 defaults 1 1 UUID=cc735352-9441-48e3-bc4b-35399db82c27 /boot ext4 defaults 1 2 /dev/mapper/nova--volumes-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/nova-volumes/lv_glance /mnt/brick-glance ext4 defaults 1 1 /dev/nova-volumes/lv_nova /mnt/brick-nova ext4 defaults 1 1 192.168.200.23:/volume-nova /var/lib/nova/instances glusterfs defaults 1 1 # mount /dev/mapper/nova--volumes-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/mapper/nova--volumes-lv_glance on /mnt/brick-glance type ext4 (rw) /dev/mapper/nova--volumes-lv_nova on /mnt/brick-nova type ext4 (rw) 192.168.200.23:/volume-nova on /var/lib/nova/instances type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072) # df -mh Filesystem Size Used Avail Use% Mounted on /dev/mapper/nova--volumes-lv_root 9.9G 886M 8.5G 10% / tmpfs 63G 0 63G 0% /dev/shm /dev/sda1 1008M 75M 883M 8% /boot /dev/mapper/nova--volumes-lv_glance 296G 191M 281G 1% /mnt/brick-glance /dev/mapper/nova--volumes-lv_nova 788G 197M 748G 1% /mnt/brick-nova 192.168.200.23:/volume-nova 1.6T 393M 1.5T 1% /var/lib/nova/instances </verbatim> ---+++ mcloud04 <verbatim> # cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed May 16 18:06:47 2012 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/nova--volumes-lv_root / ext4 defaults 1 1 UUID=893f9415-1029-42e2-acf7-1a0cd3ccff29 /boot ext4 defaults 1 2 /dev/mapper/nova--volumes-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/nova-volumes/lv_glance /mnt/brick-glance ext4 defaults 1 1 /dev/nova-volumes/lv_nova /mnt/brick-nova ext4 defaults 1 1 192.168.200.24:/volume-nova /var/lib/nova/instances glusterfs defaults 1 1 # mount /dev/mapper/nova--volumes-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/mapper/nova--volumes-lv_glance on /mnt/brick-glance type ext4 (rw) /dev/mapper/nova--volumes-lv_nova on /mnt/brick-nova type ext4 (rw) 192.168.200.24:/volume-nova on /var/lib/nova/instances type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072) # df -mh Filesystem Size Used Avail Use% Mounted on /dev/mapper/nova--volumes-lv_root 9.9G 886M 8.5G 10% / tmpfs 63G 0 63G 0% /dev/shm /dev/sda1 1008M 75M 883M 8% /boot /dev/mapper/nova--volumes-lv_glance 296G 191M 281G 1% /mnt/brick-glance /dev/mapper/nova--volumes-lv_nova 788G 197M 748G 1% /mnt/brick-nova 192.168.200.24:/volume-nova 1.6T 393M 1.5T 1% /var/lib/nova/instances </verbatim> ---+ Installazione servizi di !OpenStack !OpenStack è una suite di servizi. Nell'ambito del progetto sono stati installati i servizi minimi essenziali al raggiungimento degli obiettivi del progetto stesso e provati alcuni altri servizi e scenari di interesse per prendere familiarità e capire le potenzialità di alcune componenti. Questi scenari verranno descritti nella sezione *Use case* della presente guida. La release di !OpenStack al momento disponibile nel repository EPEL è la *Folsom* (code 2012.2) rilasciata nell'Ottobre 2012. Le seguenti istruzioni sono da considerarsi come un'aggiunta e una guida passo passo all'installazione e configurazione dei servizi partendo dalla documentazione ufficiale di !Openstack disponibile in http://docs.openstack.org/folsom/openstack-compute/install/yum/content/ e http://docs.openstack.org/folsom/openstack-compute/admin/content/ ---+ Keystone ---++ Installazione Keystone *Server designato per l'installazione:* 192.168.200.21. * Installare Keystone tramite il gestore di pacchetti =yum= : <verbatim> # yum install openstack-utils openstack-keystone python-keystoneclient </verbatim> * Installare il server =mysql=: <verbatim> # yum install mysql mysql-server MySQL-python </verbatim> * Permettere che il servizio =mysqld= venga avviato di default al riavvio del server ed avviare il servizio: <verbatim> # chkconfig mysqld on # service mysqld start </verbatim> * Inserire la password di =root= : <verbatim> # mysqladmin -u root password ******* </verbatim> <br /> ---++ Configurazione keystone * Rimuovere, se esiste, il file =/var/lib/keystone/keystone.db= (cioè il DB sqlite). Verrà utilizzato !MySQL che permette a più Keystone di utilizzare lo stesso DB e al DB stesso di essere replicato utilizzando le feature di !MySQL. * Per creare il DB keystone e l'utente keystone che ha completo accesso al DB stesso, digitare il comando: <verbatim> # openstack-db --init --service keystone </verbatim> * Controllare in =/etc/keystone/keystone.conf= che esista una riga del tipo: <verbatim> connection = mysql://keystone:keystone@192.168.200.21/keystone </verbatim> *Nota bene:* in =keystone:keystone= il primo keystone è il nome utente, il secondo è la password. Utilizzando il comando =openstack-db --init --service keystone= per l'inizializzazione del DB keystone verranno utilizzati quei valori di default. * Inizializzare il parametro =admin_token= contenuto all'interno del file =/etc/keystone/keystone.conf= , attraverso il comando: <verbatim> # openstack-config --set /etc/keystone/keystone.conf \ DEFAULT admin_token $(openssl rand -hex 10) </verbatim> * Assicurarsi che il servizio sia attivo al boot ed riavviarlo attraverso i seguenti comandi: <verbatim> # chkconfig openstack-keystone on # service openstack-keystone restart </verbatim> * Infine inizializzare il DB keystone: <verbatim> # keystone-manage db_sync </verbatim> <br /> ---++ Creazione di tenant, utente e ruolo per l'amministratore Per comodità in questa sezione si utilizzerà uno script che farà l'export di determinate variabili. Creare il file =.keystonrc= e modificarlo come segue: <verbatim> export ADMIN_TOKEN= export OS_USERNAME=<ADMIN_USER> export OS_PASSWORD=<ADMIN_PASSWORD> export OS_TENANT_NAME=<ADMIN_TENANT> export ENDPOINT=http://<KEYSTONE_HOSTNAME>:35357/v2.0/ export OS_AUTH_URL=http://<KEYSTONE_HOSTNAME>:5000/v2.0/ export ADMIN_USER_ID= export ADMIN_TENANT_ID= export ADMIN_ROLE_ID= export SERVICE_TENANT_ID= export GLANCE_PASSWORD= export GLANCE_USER_ID= export NOVA_PASSWORD= export NOVA_USER_ID= export KEYSTONE_SERVICE_ID= export KEYSTONE5000=http://<KEYSTONE_HOSTNAME>:5000/v2.0 export NOVA_SERVICE_ID= export NOVA_VOLUME_SERVICE_ID= export GLANCE_IMAGE_SERVICE_ID= export OBJECT_STORAGE_SERVICE_ID= </verbatim> Dove: * <KEYSTONE_HOSTNAME> è l'hostname che ospita il servizio Keystone * <ADMIN_USER> è l'utente admin, nel nostro caso "adminUser" * <ADMIN_PASSWORD> è la password dell'utente admin * <ADMIN_TENANT> è il tenant di amministrazione, nel nostro caso "adminTenant" Per poter utilizzare queste variabili d'ambiente lanciare il seguente comando: <verbatim> # source .keystonerc </verbatim> N.B. *I campi vuoti dello script verranno riempiti man mano che verranno lanciate le seguenti istruzioni, si imposteranno le password e si otterranno gli ID. Ad ogni ID ottenuto, modificare il file =.keystonerc= (inserendo l'ID ed eventualmente la password associata) e rifarne il =source= .* ---+++ Creazione del tenant "adminTenant" *Definizione di tenant*: _Un tenant è un contenitore usato per raggruppare risorse o utenti._ * Creare il tenant lanciando il comando: <verbatim> keystone --token $ADMIN_TOKEN \ --endpoint $ENDPOINT tenant-create \ --name adminTenant --description "Admin Tenant" \ --enabled true +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Admin Tenant | | enabled | True | | id | 7e266325c0ca4e01aa0a12f54c00adc5 | | name | adminTenant | +-------------+----------------------------------+ </verbatim> ---+++ Creazione dell'utente "adminUser" * Creare l'utente lanciando il seguente comando: <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT user-create \ --tenant_id $ADMIN_TENANT_ID --name $OS_USERNAME \ --pass $OS_PASSWORD --enabled true +----------+-------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +----------+-------------------------------------------------------------------------------------------------------------------------+ | email | | | enabled | True | | id | 5267588ce6694b1da88144a11e586106 | | name | adminUser | | password | $6$rounds=40000$Xb2oWYG4gq64Yu/n$gjvQ/8Gr7hRgbT.Yd7xNWdHxJX8.O.9qD7bvcgTTqz0e8Hh4s0a/D2LSCMCuGh7XBK0vsYBFTq6nYrVrLWT../ | | tenantId | 7e266325c0ca4e01aa0a12f54c00adc5 | +----------+-------------------------------------------------------------------------------------------------------------------------+ </verbatim> Dove <ADMIN_TENANT_ID> è l'ID del tenant appena creato, mentre <ADMIN_PASSWORD> è la password scelta per l'utente "adminUser". ---+++ Creazione del ruolo "admin" * Creare il ruolo lanciando il seguente comando: <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT role-create --name admin +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | 154531bb41554dbebfeff2da47283909 | | name | admin | +----------+----------------------------------+ </verbatim> ---+++ Assegnazione del ruolo "admin" all'utente "AdminUser" * Assegnare il ruolo tramite il seguente comando: <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT user-role-add \ --user_id $ADMIN_USER_ID --tenant_id $ADMIN_TENANT_ID \ --role_id $ADMIN_ROLE_ID </verbatim> Dove <ADMIN_USER_ID> e <ADMIN_TENANT_ID> sono rispettivamente gli ID di user e tenant appena creati. $ADMIN_ROLE_ID è invece l'id del ruolo "admin" esportato nell'istruzione precedente. *Nota bene:* non viene visualizzato nulla se il comando ha successo. ---++ Creazione del tenant per i servizi ---+++ Creazione del tenant "service": Questo tenant conterrà tutti gli utenti dei servizi che si desidera far conoscere al service catalog. * Creare il tenant lanciando il comando: <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT tenant-create \ --name service --description "Service Tenant" --enabled true +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Service Tenant | | enabled | True | | id | 7735e801ccd0429ca14186abe6a166bf | | name | service | +-------------+----------------------------------+ </verbatim> ---++ Creazione ed inserimento degli utenti associati ai servizi Una volta creato il "Service Tenant", si andrà ad inserire al suo interno un utente per ogni servizio che si vuole aggiungere. ---+++ Creazione ed inserimento dell'utente associato a Glance * Creare l'utente tramite il seguente comando: <verbatim> keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT user-create \ --tenant_id $SERVICE_TENANT_ID --name glance \ --pass <GLANCE_PASSWORD> --enabled=true +----------+-------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +----------+-------------------------------------------------------------------------------------------------------------------------+ | email | | | enabled | True | | id | a9a8771522494fa9aa608089a94ca998 | | name | glance | | password | $6$rounds=40000$ZYeLs6pJqUlrjH/K$fgMJjrAAqJitScxk0KQCud6Y0MjwRWyZHjdR2UExGouHoSV9jm6FWVbvumdg0oQumeGh5V169YqTvnMVR8CTU1 | | tenantId | 7735e801ccd0429ca14186abe6a166bf | +----------+-------------------------------------------------------------------------------------------------------------------------+ </verbatim> Dove <GLANCE_PASSWORD> è la password che si desidera associare all'utente del servizio Glance. * Assegnare il ruolo tramite il seguente comando: <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT user-role-add \ --user_id $GLANCE_USER_ID --tenant_id $SERVICE_TENANT_ID \ --role_id $ADMIN_ROLE_ID </verbatim> *Nota bene:* non viene visualizzato nulla se il comando ha successo. ---+++ Creazione ed inserimento dell'utente associato a Nova * Creare l'utente tramite il seguente comando: <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT user-create \ --tenant_id $SERVICE_TENANT_ID --name nova \ --pass <NOVA_PASSWORD> --enabled true +----------+-------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +----------+-------------------------------------------------------------------------------------------------------------------------+ | email | | | enabled | True | | id | 19cc0bbdb5a247cdab8864d86e6a3506 | | name | nova | | password | $6$rounds=40000$aPJ5bn7ouUXikgAQ$lFTSOLNxboBTPoQjdjiRvbrUuMjLlca53C44mckVRs7NYHHX7BeXpBQhvmOvKtkmA9KmgVBkYLWDYHVqg86Dd/ | | tenantId | 7735e801ccd0429ca14186abe6a166bf | +----------+-------------------------------------------------------------------------------------------------------------------------+ </verbatim> Dove <NOVA_PASSWORD> è la password che si desidera associare all'utente del servizio Nova. * Assegnare il ruolo tramite il seguente comando: <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT user-role-add \ --user_id $NOVA_USER_ID --tenant_id $SERVICE_TENANT_ID \ --role_id $ADMIN_ROLE_ID </verbatim> *Nota bene:* non viene visualizzato nulla se il comando ha successo. <br /> ---++ Definizione dei servizi Keystone agisce anche come catalogo dei servizi per permettere alle altre componenti !OpenStack di conoscere quali sono gli endpoint dei vari servizi !OpenStack. * Verificare che il file =/etc/keystone/keystone.conf= contenga la seguente riga: <verbatim> [catalog] driver = keystone.catalog.backends.sql.Catalog </verbatim> ---+++ Definizione del servizio identity (Keystone) * Creare il servizio "keystone": <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT service-create \ --name=keystone --type=identity --description="Keystone Identity Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Keystone Identity Service | | id | 7ba50cacbf9d48ce89bb3a48600025e0 | | name | keystone | | type | identity | +-------------+----------------------------------+ </verbatim> * Creare l'endpoint per il servizio "keystone": <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT endpoint-create \ --region RegionOne --service_id=$KEYSTONE_SERVICE_ID \ --publicurl=$KEYSTONE5000 --internalurl=$KEYSTONE5000 \ --adminurl=$ENDPOINT +-------------+-----------------------------------+ | Property | Value | +-------------+-----------------------------------+ | adminurl | http://192.168.200.21:35357/v2.0/ | | id | b34e2e479dcf49dda776857e26f58998 | | internalurl | http://192.168.200.21:5000/v2.0 | | publicurl | http://192.168.200.21:5000/v2.0 | | region | RegionOne | | service_id | 7ba50cacbf9d48ce89bb3a48600025e0 | +-------------+-----------------------------------+ </verbatim> ---+++ Definizione del servizio compute (Nova) Il servizio compute richiede un endpoint specifico per ogni tenant. La stringa =%(tenant_id)s= ed i singoli apici che racchiudono i valori di =publicurl=, =internalurl= e =adminurl= devono essere digitati esattamente come mostrato sia per l'endpoint *compute* che per l'endpoint *volume* e l'endpoint *object storage* (paragrafi successivi). * Creare il servizio "nova": <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT service-create \ --name=nova --type=compute --description="Nova Compute Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Nova Compute Service | | id | 77faae0db3f741b0b14cd926ccdcc0d7 | | name | nova | | type | compute | +-------------+----------------------------------+ </verbatim> * Creare l'endpoint per il servizio "nova": <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT endpoint-create \ --region RegionOne --service_id=$NOVA_SERVICE_ID \ --publicurl='http://<CLOUD_CONTROLLER_HOSTNAME>:8774/v2/%(tenant_id)s' \ --internalurl='http://<CLOUD_CONTROLLER_HOSTNAME>:8774/v2/%(tenant_id)s' \ --adminurl='http://<CLOUD_CONTROLLER_HOSTNAME>:8774/v2/%(tenant_id)s' +-------------+---------------------------------------------+ | Property | Value | +-------------+---------------------------------------------+ | adminurl | http://192.168.200.21:8774/v2/%(tenant_id)s | | id | d5205b8e45b24871aaa88376da990a0a | | internalurl | http://192.168.200.21:8774/v2/%(tenant_id)s | | publicurl | http://192.168.200.21:8774/v2/%(tenant_id)s | | region | RegionOne | | service_id | 77faae0db3f741b0b14cd926ccdcc0d7 | +-------------+---------------------------------------------+ </verbatim> Dove <CLOUD_CONTROLLER_HOSTNAME> è l'hostname del Cloud Controller (Nova). Nel nostro caso è _192.168.200.21_ . ---+++ Definizione del servizio volume (Volume) Il servizio volume richiede un endpoint specifico per ogni tenant. * Creare il servizio "volume": <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT service-create \ --name=volume --type=volume --description="Nova Volume Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Nova Volume Service | | id | 307b3276f0304684beeabefbc5cfedce | | name | volume | | type | volume | +-------------+----------------------------------+ </verbatim> * Creare l'endpoint per il servizio "volume": <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT endpoint-create \ --region RegionOne --service_id=$NOVA_VOLUME_SERVICE_ID \ --publicurl='http://<CLOUD_CONTROLLER_HOSTNAME>:8776/v1/%(tenant_id)s' \ --internalurl='http://<CLOUD_CONTROLLER_HOSTNAME>:8776/v1/%(tenant_id)s' \ --adminurl='http://<CLOUD_CONTROLLER_HOSTNAME>:8776/v1/%(tenant_id)s' +-------------+---------------------------------------------+ | Property | Value | +-------------+---------------------------------------------+ | adminurl | http://192.168.200.21:8776/v1/%(tenant_id)s | | id | 51fa841e57a248c89124a1d340f0b4f8 | | internalurl | http://192.168.200.21:8776/v1/%(tenant_id)s | | publicurl | http://192.168.200.21:8776/v1/%(tenant_id)s | | region | RegionOne | | service_id | 307b3276f0304684beeabefbc5cfedce | +-------------+---------------------------------------------+ </verbatim> Dove <CLOUD_CONTROLLER_HOSTNAME> è l'hostname del Cloud Controller (Nova). Nel nostro caso è _192.168.200.21_ . ---+++ Definizione del servizio image (Glance) * Creare il servizio "glance": <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT service-create \ --name=glance --type=image --description="Glance Image Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Glance Image Service | | id | ec3e65796067413ea32c3c34c0a85d09 | | name | glance | | type | image | +-------------+----------------------------------+ </verbatim> * Creare l'endpoint per il servizio "glance": <verbatim> # keystone --token $ADMIN_TOKEN --endpoint $ENDPOINT endpoint-create \ --region RegionOne --service_id=$GLANCE_IMAGE_SERVICE_ID \ --publicurl=http://<GLANCE_SERVER_HOSTNAME>:9292/v1 \ --internalurl=http://<GLANCE_SERVER_HOSTNAME>:9292/v1 \ --adminurl=http://<GLANCE_SERVER_HOSTNAME>:9292/v1 +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://192.168.200.21:9292/v1 | | id | 57f6a5ebe7694f438b984970a7c8c1eb | | internalurl | http://192.168.200.21:9292/v1 | | publicurl | http://192.168.200.21:9292/v1 | | region | RegionOne | | service_id | ec3e65796067413ea32c3c34c0a85d09 | +-------------+----------------------------------+ </verbatim> Dove <GLANCE_SERVER_HOSTNAME> è l'hostname del server sui è installato il servizio Glance. Nel nostro caso è _192.168.200.21_ . <br /> ---++ Troubleshooting Keystone * Per le principali operazioni di troubleshooting riferirsi alla [[http://docs.openstack.org/trunk/openstack-compute/install/yum/content/verifying-identity-install.html][guida]]. <verbatim> # keystone tenant-list +----------------------------------+-------------+---------+ | id | name | enabled | +----------------------------------+-------------+---------+ | 14998a053eb745bb852d7a593812da2f | MCloud | True | | 7735e801ccd0429ca14186abe6a166bf | service | True | | 7e266325c0ca4e01aa0a12f54c00adc5 | adminTenant | True | +----------------------------------+-------------+---------+ # keystone user-list +----------------------------------+------------+---------+----------------+ | id | name | enabled | email | +----------------------------------+------------+---------+----------------+ | 19cc0bbdb5a247cdab8864d86e6a3506 | nova | True | | | 5267588ce6694b1da88144a11e586106 | adminUser | True | | | 6301ae88f3e14c6ab71e5fed8425f566 | mcloudUser | True | user@marche.it | | a9a8771522494fa9aa608089a94ca998 | glance | True | | +----------------------------------+------------+---------+----------------+ # keystone service-list +----------------------------------+----------+----------+---------------------------+ | id | name | type | description | +----------------------------------+----------+----------+---------------------------+ | 307b3276f0304684beeabefbc5cfedce | volume | volume | Nova Volume Service | | 77faae0db3f741b0b14cd926ccdcc0d7 | nova | compute | Nova Compute Service | | 7ba50cacbf9d48ce89bb3a48600025e0 | keystone | identity | Keystone Identity Service | | ec3e65796067413ea32c3c34c0a85d09 | glance | image | Glance Image Service | +----------------------------------+----------+----------+---------------------------+ # keystone endpoint-list +----------------------------------+-----------+---------------------------------------------+---------------------------------------------+---------------------------------------------+----------------------------------+ | id | region | publicurl | internalurl | adminurl | service_id | +----------------------------------+-----------+---------------------------------------------+---------------------------------------------+---------------------------------------------+----------------------------------+ | 51fa841e57a248c89124a1d340f0b4f8 | RegionOne | http://192.168.200.21:8776/v1/%(tenant_id)s | http://192.168.200.21:8776/v1/%(tenant_id)s | http://192.168.200.21:8776/v1/%(tenant_id)s | 307b3276f0304684beeabefbc5cfedce | | 57f6a5ebe7694f438b984970a7c8c1eb | RegionOne | http://192.168.200.21:9292/v1 | http://192.168.200.21:9292/v1 | http://192.168.200.21:9292/v1 | ec3e65796067413ea32c3c34c0a85d09 | | b34e2e479dcf49dda776857e26f58998 | RegionOne | http://192.168.200.21:5000/v2.0 | http://192.168.200.21:5000/v2.0 | http://192.168.200.21:35357/v2.0/ | 7ba50cacbf9d48ce89bb3a48600025e0 | | d5205b8e45b24871aaa88376da990a0a | RegionOne | http://192.168.200.21:8774/v2/%(tenant_id)s | http://192.168.200.21:8774/v2/%(tenant_id)s | http://192.168.200.21:8774/v2/%(tenant_id)s | 77faae0db3f741b0b14cd926ccdcc0d7 | +----------------------------------+-----------+---------------------------------------------+---------------------------------------------+---------------------------------------------+----------------------------------+ # keystone catalog Service: volume +-------------+----------------------------------------------------------------+ | Property | Value | +-------------+----------------------------------------------------------------+ | adminURL | http://192.168.200.21:8776/v1/7e266325c0ca4e01aa0a12f54c00adc5 | | id | 51fa841e57a248c89124a1d340f0b4f8 | | internalURL | http://192.168.200.21:8776/v1/7e266325c0ca4e01aa0a12f54c00adc5 | | publicURL | http://192.168.200.21:8776/v1/7e266325c0ca4e01aa0a12f54c00adc5 | | region | RegionOne | +-------------+----------------------------------------------------------------+ Service: image +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminURL | http://192.168.200.21:9292/v1 | | id | 57f6a5ebe7694f438b984970a7c8c1eb | | internalURL | http://192.168.200.21:9292/v1 | | publicURL | http://192.168.200.21:9292/v1 | | region | RegionOne | +-------------+----------------------------------+ Service: compute +-------------+----------------------------------------------------------------+ | Property | Value | +-------------+----------------------------------------------------------------+ | adminURL | http://192.168.200.21:8774/v2/7e266325c0ca4e01aa0a12f54c00adc5 | | id | d5205b8e45b24871aaa88376da990a0a | | internalURL | http://192.168.200.21:8774/v2/7e266325c0ca4e01aa0a12f54c00adc5 | | publicURL | http://192.168.200.21:8774/v2/7e266325c0ca4e01aa0a12f54c00adc5 | | region | RegionOne | +-------------+----------------------------------------------------------------+ Service: identity +-------------+-----------------------------------+ | Property | Value | +-------------+-----------------------------------+ | adminURL | http://192.168.200.21:35357/v2.0/ | | id | b34e2e479dcf49dda776857e26f58998 | | internalURL | http://192.168.200.21:5000/v2.0 | | publicURL | http://192.168.200.21:5000/v2.0 | | region | RegionOne | +-------------+-----------------------------------+ </verbatim> ---+ Glance ---++ Installazione Glance *Server designato per l'installazione:* 192.168.200.21. * Installare Glance tramite il gestore di pacchetti =yum= : <verbatim> # yum install python-swiftclient --enablerepo=epel-testing # yum install openstack-glance openstack-glance-doc </verbatim> <br /> ---++ Configurazione Glance * Rimuovere, se esiste, il file =/var/lib/glance/glance.db= (cioè il DB sqlite). Verrà utilizzato !MySQL. * Collegarsi su !MySQL da linea di comando lanciando =mysql -u root -p= e digitando la password dell'utente root. * Creare il DB glance: <verbatim> mysql> CREATE DATABASE glance; </verbatim> * Creare l'utente "glance" che ha completo accesso al DB "glance" appena creato. <verbatim> mysql> GRANT ALL ON glance.* TO 'glance'@'%' IDENTIFIED BY '<YOUR_GLANCEDB_PASSWORD>'; </verbatim> Dove <YOUR_GLANCEDB_PASSWORD> è la password scelta per l'utente "glance" del DB. * Provare ad accedere a !MySQL da locale con l'utente "glance" appena creato tramite il comando =mysql -u glance -p= digitando la password. Nel caso di accesso negato, accedere a !MySQL da root ed eliminare l'utente anonimo con i seguenti comandi: <verbatim> mysql> DROP USER ''@'localhost'; mysql> flush privileges; </verbatim> Questo problema è dovuto ad [[http://bugs.mysql.com/bug.php?id=31061][un bug di !MySQL]] ---+++ Editare i file di configurazione di Glance * Modificare le seguenti righe nel file =/etc/glance/glance-api-paste.ini= : <verbatim> [filter:authtoken] admin_tenant_name = service admin_user = glance admin_password = <GLANCE_PASSWORD> </verbatim> *Nota bene:* * =service= è il tenant "service" creato durante la configurazione di Keystone * =glance= è l'utente del tenant "service" associato al servizio Glance * =<GLANCE_PASSWORD>= è la password scelta per l'utente "glance" creato nel tenant "service", non la password identificata da <YOUR_GLANCEDB_PASSWORD> * Modificare le seguenti righe nel file =/etc/glance/glance-api.conf= : <verbatim> [paste_deploy] config_file = /etc/glance/glance-api-paste.ini flavor = keystone </verbatim> * Riavviare il servizio =openstack-glance-api= per rendere effettive le precedenti modifiche: <verbatim> # service openstack-glance-api restart </verbatim> * Modificare le seguenti righe nel file =/etc/glance/glance-registry.conf= : <verbatim> [keystone_authtoken] auth_host = 127.0.0.1 auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = glance admin_password = <GLANCE_PASSWORD> [paste_deploy] flavor = keystone </verbatim> Verificare che =sql_connection= punti al DB !MySQL piuttosto che a sqlite: <verbatim> sql_connection = mysql://glance:<YOUR_GLANCEDB_PASSWORD>@localhost/glance </verbatim> *Nota bene:* inserendo esplicitamente l'hostname del server al posto di localhost sono stati verificati problemi di connessione. * Modificare le seguenti righe nel file =/etc/glance/glance-registry-paste.ini= : <verbatim> [filter:authtoken] admin_tenant_name = service admin_user = glance admin_password = <GLANCE_PASSWORD> </verbatim> Verificare che la sezione =pipeline:glance-registry= contenga =pipeline= settato come segue: <verbatim> [pipeline:glance-registry] pipeline = authtoken auth-context context registryapp </verbatim> * Riavviare i servizi =openstack-glance-registry= e =openstack-glance-api= per rendere effettive le precedenti modifiche: <verbatim> # service openstack-glance-registry restart # service openstack-glance-api restart </verbatim> * Inizializzare il DB "glance": <verbatim> # glance-manage db_sync </verbatim> * Infine modificare il proprietario della directory =/var/lib/glance= : <verbatim> # chown -R glance:glance /var/lib/glance </verbatim> <br /> ---++ Troubleshooting Glance * Scaricare un'immagine di test ed aggiungerla al repository di glance per verificare il corretto funzionamento del servizio: <verbatim> # cd /stackimages # wget \ https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img # glance add name=cirros-0.3.0-x86_64 \ disk_format=qcow2 container_format=bare < \ /stackimages/cirros-0.3.0-x86_64-disk.img Added new image with ID: 691109ac-9673-4195-a27f-8211a49bfdcb # glance index ID Name Disk Format Container Format Size ------------------------------------ ------------------------------ -------------------- -------------------- -------------- 691109ac-9673-4195-a27f-8211a49bfdcb cirros-0.3.0-x86_64 qcow2 bare 9761280 # ls /var/lib/glance/images/ 691109ac-9673-4195-a27f-8211a49bfdcb lost+found # glance show 691109ac-9673-4195-a27f-8211a49bfdcb URI: http://192.168.200.21:9292/v1/images/691109ac-9673-4195-a27f-8211a49bfdcb Id: 691109ac-9673-4195-a27f-8211a49bfdcb Public: No Protected: No Name: cirros-0.3.0-x86_64 Status: active Size: 9761280 Disk format: qcow2 Container format: bare Minimum Ram Required (MB): 0 Minimum Disk Required (GB): 0 Owner: 7e266325c0ca4e01aa0a12f54c00adc5 Created at: 2012-11-22T07:49:33 Updated at: 2012-11-22T07:49:34 </verbatim> <br /> ---+ Cloud Controller ---++ Configurare il DB !MySQL sul Cloud Controller * Collegarsi a !MySQL da linea di comando con =mysql -u root -p= digitando la password di root. * Creare il DB "nova". <verbatim> mysql> CREATE DATABASE nova; </verbatim> * Creare l'utente "nova" che ha completo accesso al DB appena creato. <verbatim> mysql> GRANT ALL ON nova.* TO 'nova'@'%' IDENTIFIED BY '<YOUR_NOVADB_PASSWORD>'; </verbatim> Dove <YOUR_NOVADB_PASSWORD> è la password scelta per l'utente "nova" del DB. <br /> ---++ Installare il Cloud Controller * Installare il server di messaging queue. I servizi !OpenStack comunicano tra di loro attraverso AMQP (Advanced Message Queue Protocol) usando un server di messaging. Su Fedora, RHEL e !CentOS il server di messaging maggiormente testato è Apache Qpid. <verbatim> # yum install openstack-utils memcached qpid-cpp-server </verbatim> * Installare i pacchetti di nova e le dipendenze verranno installate automaticamente: <verbatim> # yum install openstack-nova </verbatim> * Far partire il servizio =qpidd= e configurarlo affinchè si avvi al boot del server <verbatim> # /etc/init.d/qpidd start # chkconfig qpidd on </verbatim> <br /> ---++ Configurazione dei servizi di Nova: * Il servizio =openstack-nova-metadata-api= va in conflitto con il servizio =openstack-nova-api= , quindi è conveniente disabilitarlo, inoltre non si vuole che il Cloud Controller funga da Compute Node, quindi disabilitiamo anche il servizio =openstack-nova-compute= . Nei files =/etc/init.d/openstack-nova-metadata-api= e =/etc/init.d/openstack-nova-compute= modificare la funzione start() come segue: <verbatim> [...] start() { echo "This service must be stopped!" exit [...] </verbatim> * Seguire le istruzioni al paragrafo *Configurazione del servizio Compute* -> *Servizio nova* . *Nota bene:* seguire solo i punti riferiti al cambio proprietario ed alla modifica dei due files, poi tornare a questo paragrafo. <verbatim> </verbatim> * Impostare l'avvio automatico dei servizi nova, tranne i servizi appena disabilitati: <verbatim> # for svc in api console network scheduler cert \ consoleauth novncproxy volume objectstore \ xvpvncproxy; do chkconfig \ openstack-nova-$svc on; done </verbatim> * Fermare i servizi nova, sincronizzare il database e far ripartire i servizi: <verbatim> # for s in `ls /etc/init.d/openstack-nova-*`; \ do $s stop ; done # nova-manage db sync # for s in `ls /etc/init.d/openstack-nova-*`; \ do $s start ; done </verbatim> <br /> ---++ Aggiungere nova tra gli utenti sudoers: * A causa di un bug, quando si prova ad eliminare un volume di Nova da Dashboard o da CLI, le risorse del sistema vengono monopolizzate dal processo gluster a causa dell'esecuzione di un dd sul volume che si intende cancellare. La causa scatenante è la non appartenenza dell'utente nova (utente con cui viene lanciato il dd) tra gli utenti sudoers. Per risolvere questo problema appendere la riga =nova ALL = (root) NOPASSWD: /bin/dd= al file =/etc/sudoers= . <br /> ---++ Installare e impostare l'avvio automatico dei servizi legati a ISCSI (sul Cloud Controller) * Per poter fare l'attach di un volume nova ad l'instanza di una macchina virtuale è necessario installare ed avviare il servizio =yum install scsi-target-utils= sul Cloud Controller. Controllare quindi che sia installato attraverso il seguente comando: <verbatim> yum install scsi-target-utils </verbatim> * Inserire alla fine del file =/etc/tgt/targets.conf= la riga: <verbatim> include /var/lib/nova/volumes/* </verbatim> * Far partire il servizio: <verbatim> service tgtd start </verbatim> * Settare l'avvio automatico: <verbatim> chkconfig tgtd on </verbatim> <br /> ---+ Nova ---++ Configurazione dell'Hypervisor (KVM) * Installare i pacchetti per la virtualizzazione: <verbatim> # yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python \ python-virtinst libvirt-client bridge-utils libguestfs-tools # yum groupinstall Virtualization "Virtualization Client" \ "Virtualization Platform" "Virtualization Tools" # yum install openstack-utils memcached qpid-cpp-server \ openstack-nova-compute openstack-nova-network mysql dnsmasq-utils \ python-keystone-auth-token </verbatim> * Requisito di configurazione per RHEL: assicurarsi che nel file =/etc/qpidd.conf= sia settato =auth=no= . <br /> ---++ Configurazione del servizio Compute ---+++ Servizio *libvirtd* * Editare il file =/etc/libvirt/libvirtd.conf= e assicurarsi siano impostati i seguenti valori: <verbatim> # OPENSTACK LIVE MIGRATION listen_tls = 0 listen_tcp = 1 auth_tcp = "none" </verbatim> * Editare il file =/etc/sysconfig/libvirtd= e assicurarsi che ci siano le impostazioni come seguono: <verbatim> LIBVIRTD_ARGS="--listen" </verbatim> * Far partire =libvirtd=: <verbatim> # chkconfig libvirtd on # /etc/init.d/libvirtd restart </verbatim> * Viene aggiunta anche una interfaccia di rete virtuale, chiamata di default =virbr0=. Il comando =ifconfig= dovrebbe mostrarla nel suo output: <verbatim> virbr0 Link encap:Ethernet HWaddr 52:54:00:54:65:A1 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:45 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:7585 (7.4 KiB) </verbatim> ---+++ Servizio *nova* * Cambiare il propietario della cartella =nova= : <verbatim> # chown -R nova:nova /etc/nova </verbatim> * Modificare due file in =/etc/nova= nel seguente modo. * Contentuto completo di =nova.conf= : <verbatim> [DEFAULT] logdir = /var/log/nova state_path = /var/lib/nova lock_path = /var/lib/nova/tmp verbose = False # kvm compute_driver = libvirt.LibvirtDriver libvirt_type = kvm libvirt_nonblocking = True libvirt_inject_partition = -1 libvirt_xml_template = /usr/share/nova/libvirt.xml.template # sql sql_connection = mysql://nova:PASSWORD_UTENTE_DB_NOVA@192.168.200.21/nova # authentication auth_strategy = keystone # network manager network_manager = nova.network.manager.FlatDHCPManager force_dhcp_release = False dhcp_lease_time = 120 dhcpbridge = /usr/bin/nova-dhcpbridge dhcpbridge_flagfile = /etc/nova/nova.conf firewall_driver = nova.virt.libvirt.firewall.IptablesFirewallDriver my_ip = THIS_SERVER_IP fixed_range = 192.168.122.0/24 public_interface = eth1 flat_network_bridge = virbr0 flat_interface = eth2 multi_host = True auto_assign_floating_ip = True injected_network_template = /usr/share/nova/interfaces.template allow_same_net_traffic=true # no vnc console vnc_enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = THIS_SERVER_IP novncproxy_base_url=http://10.101.8.21:6080/vnc_auto.html xvpvncproxy_base_url=http://10.101.8.21:6081/console # qpid qpid_hostname = 10.101.8.21 rpc_backend = nova.rpc.impl_qpid # glance image_service=nova.image.glance.GlanceImageService glance_api_servers=10.101.8.21:9292 cache_images=true # other vpn_client_template = /usr/share/nova/client.ovpn.template credentials_template = /usr/share/nova/novarc.template rootwrap_config = /etc/nova/rootwrap.conf remove_unused_base_images = True # quota quota_cores=20 quota_instances=20 max_cores=24 # volumes volume_group = nova-volumes iscsi_helper = tgtadm </verbatim> Dove: * <PASSWORD_UTENTE_DB_NOVA> è la password dell'utente "nova" del DB "nova" del Cloud Controller * <THIS_SERVER_IP> è l'IP del server che si sta configurando * nei parametri =sql_connection= , =glance_api_servers= , =novncproxy_base_url= , =xvpvncproxy_base_url= e =qpid_hostname= l'ip _10.101.8.21_ è il server che ospita il Cloud Controller e il servizio Keystone * nel parametro =fixed_range= il valore 192.168.122.0/24 indica il range di IP che possono essere assegnati alle macchine virtuali * nel parametro =flat_network_bridge= "virbr0" è l'interfaccia di rete virtuale del server che si sta configurando e si appoggia all'interfaccia fisica eth2 <verbatim></verbatim> * Parte finale di =/etc/nova/api-paste.ini= (la parte precedente rimane invariata): <verbatim> [...] [filter:authtoken] paste.filter_factory = keystone.middleware.auth_token:filter_factory service_protocol = http service_host = 192.168.200.21 service_port = 5000 auth_host = 192.168.200.21 auth_port = 35357 auth_protocol = http auth_uri = http:// 192.168.200.21:5000/ admin_tenant_name = service admin_user = nova admin_password = NOVA_PASSWORD </verbatim> Dove: * <NOVA_PASSWORD> è la password che è stata associata all'utente del servizio Nova in Keystone <verbatim> </verbatim> * Per far partire i servizi di Nova per i Compute Nodes ed inizializzare il DB, lanciare i seguenti comandi: <verbatim> # for s in `ls /etc/init.d/openstack-nova-*`; do $s stop ; done # chkconfig openstack-nova-compute on # chkconfig openstack-nova-network on # nova-manage db sync # /etc/init.d/openstack-nova-compute start # /etc/init.d/openstack-nova-network start </verbatim> * Sul Cloud controller verificare lo stato dei servizi Nova compute: <verbatim> # nova-manage service list Binary Host Zone Status State Updated_At nova-consoleauth mcloud01.regionemarche.intra nova enabled :-) 2012-12-03 14:03:54 nova-console mcloud01.regionemarche.intra nova enabled :-) 2012-12-03 14:03:48 nova-volume mcloud01.regionemarche.intra nova enabled :-) 2012-12-03 14:03:50 nova-scheduler mcloud01.regionemarche.intra nova enabled :-) 2012-12-03 14:03:56 nova-compute mcloud02.regionemarche.intra nova enabled :-) 2012-12-03 14:03:49 nova-network mcloud02.regionemarche.intra nova enabled :-) 2012-12-03 14:03:51 nova-cert mcloud01.regionemarche.intra nova enabled :-) 2012-12-03 14:03:54 nova-network mcloud01.regionemarche.intra nova enabled :-) 2012-12-03 14:03:55 nova-compute mcloud04.regionemarche.intra nova enabled :-) 2012-12-03 14:03:49 nova-network mcloud04.regionemarche.intra nova enabled :-) 2012-12-03 14:03:57 nova-compute mcloud03.regionemarche.intra nova enabled :-) 2012-12-03 14:03:48 nova-network mcloud03.regionemarche.intra nova enabled :-) 2012-12-03 14:03:55 </verbatim> ---++ Configurazione del servizio =nova-network= *NB*: SU TUTTI I SERVER * Verificare che ci sia il bridge sulla =192.168.122.0= con il comando =ifconfig= (*NB*: il servizio =libvirtd= deve essere running). <verbatim> # ifconfig virbr0 virbr0 Link encap:Ethernet HWaddr 52:54:00:83:66:9B inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:67 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:5681 (5.5 KiB) </verbatim> *NB*: DA UN QUALSIASI SERVER UNA VOLTA SOLA * Creare la rete con =nova-manage= <verbatim> # nova-manage network list # nova-manage network create private --multi_host=T \ --fixed_range_v4=192.168.122.0/24 --bridge_interface=virbr0 \ --num_networks=1 --network_size=256 --dns1=10.101.12.10 \ --dns2=10.101.12.11 # nova-manage network list id IPv4 IPv6 start address DNS1 DNS2 VlanID project uuid 6 192.168.122.0/24 None 192.168.122.2 10.101.12.10 10.101.12.11 None None a51798f8-3c2a-48f3-ad19-54ab2048bf7e </verbatim> * Il servizio Compute usa i concetti di gruppi di sicurezza per controllare che i protocolli di rete (TCP, UDP, ICMP), le porte e gli indirizzi IP permettano di accedere alle istanze. * Per mostrare la lista dei gruppi di sicurezza usare il seguente comando: <verbatim> # nova secgroup-list +---------+-------------+ | Name | Description | +---------+-------------+ | default | default | +---------+-------------+ </verbatim> * Abilitare l'accesso sulla porta TCP 22 (SSH) per tutti gli indirizzi di Nova: <verbatim> # nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | tcp | 22 | 22 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+ </verbatim> * Abilitare il traffico ICMP (ping) per tutti gli IP di Nova: <verbatim> # nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | icmp | -1 | -1 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+ </verbatim> * Abilitare il traffico sulle porte 80 e 443 (necessario all'applicazione di SCS): <verbatim> # nova secgroup-add-rule default tcp 80 80 0.0.0.0/0 # nova secgroup-add-rule default tcp 443 443 0.0.0.0/0 </verbatim> <br /> ---++ Installare e impostare l'avvio automatico dei servizi legati a ISCSI (su ogni Compute Node) * Per poter fare l'attach di un volume nova ad l'instanza di una macchina virtuale è necessario installare ed avviare il servizio =iscsi-initiator-utils= su ogni Compute Node. Controllare quindi che sia installato attraverso il seguente comando: <verbatim> # yum install iscsi-initiator-utils </verbatim> * Far partire il servizio: <verbatim> # service iscsid force-start </verbatim> * *Nota bene:* è necessario modificare lo script =/etc/init.d/iscsid= per poter far partire in automatico iscsid in automatico all'avvio del server in modalità =force-start= . Modificare i case start e restart dello switch all'interno dello script in modo tale che risulti come segue: <verbatim> [...] start) # rh_status_q && exit 0 # $1 force_start ;; [...] restart) # $1 stop force_start ;; [...] </verbatim> * Impostare l'avvio automatico: <verbatim> # chkconfig iscsid on </verbatim> <br /> ---+ Dashboard ---++ Installazione della Dashboard Nei passi successivi si assume di avere gia' installati e configurati Identity Service (Keystone) e il compute service (Nova). * Installare i seguenti pacchetti: <verbatim> yum install memcached mod_wsgi openstack-dashboard novnc openstack-nova-novncproxy </verbatim> * Far partire il servizio openstack-nova-novncproxy e farlo partire il automatico: <verbatim> # service openstack-nova-novncproxy start # chkconfig openstack-nova-novncproxy on </verbatim> * *Su ogni compute node* installare novnc: <verbatim> # yum install novnc </verbatim> ---++ Configurazione della Dashboard * Verificare le impostazioni di *memcached* presenti nel file =/etc/sysconfig/memcached=. Di default si presentano come di seguito: <verbatim> # cat /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="" </verbatim> * Modificare il valore della variabile =CACHE_BACKEND= nel file =/etc/openstack-dashboard/local_settings= in modo da essere coerente con le configurazioni di *memcached* sopra riportate. In questo caso la variabile sara' settata con: <verbatim> CACHE_BACKEND = 'memcached://127.0.0.1:11211/' </verbatim> * Aggiungere le seguenti variabili (impostandole a =True= o =False= nel caso i servizi siano disponibili o meno): <verbatim> # SWIFT : da impostare a True quando SWIFT sara' configurato SWIFT_ENABLED = False # QUANTUM e' previsto essere un componente ad-hoc dalla prossima release di openstack (Folsom) QUANTUM_ENABLED = False </verbatim> * Avviare i servizi (=memcached= e =httpd=): <verbatim> # /etc/init.d/memcached start Starting memcached: [ OK ] # chkconfig memcached on # /etc/init.d/httpd start Starting httpd: [ OK ] # chkconfig httpd on </verbatim> ---++ Utilizzo della Dashboard Per verificare il funzionamento della Dashboard, andare su http://10.101.8.21/dashboard e loggarsi con le credenziali =adminUser= e relativa password. <br /> ---+ Casi d'uso ---++ Configurazione degli indirizzi IP Floating pubblici * Ad ogni istanza virtuale viene automaticamente assegnato un IP privato (appartenente alla sottorete creata al punto precedente). E' possibile assegnare indirizzi pubblici alle istanze. In tal caso verificare la presenza della seguente riga nel file =nova.conf= : <verbatim> public_interface = eth1 </verbatim> * Far ripartire il servizio =nova-network= dopo aver cambiato il =nova.conf= . ---+++ Abilitazione di IP forwarding * Di default l'IP forwarding è disabilitato sulla maggior parte delle distribuzioni Linux. Per poter assegnare indirizzi pubblici alle macchine è necessario che l'IP forwarding sia abilitato. Verificare se è abilitato tramite il seguente comando: <verbatim> # sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0 </verbatim> * In questo esempio è disabilitato. e' possibile abilitarlo al volo usando il seguente comando: <verbatim> # sysctl -w net.ipv4.ip_forward=1 </verbatim> *Al fine di rendere permanente questa modifica, editare il file =/etc/sysctl.conf= inserendo o modificando la seguente riga: <verbatim> net.ipv4.ip_forward = 1 </verbatim> ---+++ Creare una lista di floating IP * Nova può gestire una lista di IP pubblici che possano essere assegnati alle istanze virtuali. Per aggiungere un IP alla lista: <verbatim> # nova-manage floating create <AVAILABLE_PUBLIC_IP> </verbatim> Dove <AVAILABLE_PUBLIC_IP> è un IP disponibile. <verbatim></verbatim> * E' possibile aggiungere una sottorete tramite: <verbatim> # nova-manage floating create --ip_range=<SUBNET> </verbatim> Dove <SUBNET> è una sottorete disponibile (es. 131.154.100.0/24). Per la gestione della lista di IP pubblici sono disponibili i seguenti comandi: * =nova-manage floating list= : mostra la lista degli IP pubblici inseriti * =nova-manage floating create <IP>= : aggiunge un IP alla lista * =nova-manage floating create --ip-range=<SUBNET>= : aggiunge una sottorete alla lista * =nova-manage floating delete <IP>= : rimuove un IP dalla lista * =nova-manage floating delete --ip-range=<SUBNET>= : rimuove una sottorete dalla lista * Nel caso del pilota !MarcheCloud è stata creata la seguente lista di floating IP: <verbatim> # nova-manage floating create --ip_range=10.101.8.128/25 # nova-manage floating list None 10.101.8.129 None nova eth1 None 10.101.8.130 None nova eth1 None 10.101.8.131 None nova eth1 None 10.101.8.132 None nova eth1 [....] None 10.101.8.254 None nova eth1 </verbatim> ---+++ Assegnazione IP ad una macchina virtuale * Nel caso in cui non sia abilitata l'assegnazione automatica dei floating IP alle macchine virtuali in fase di istanziazione (verificabile dalla presenza nel file =/etc/nova/nova.conf= della riga =auto_assign_floating_ip = True= ), è possibile assegnare manualmente un IP ad un'istanza. Per assegnare un IP ad un'istanza è necessario prima assegnare l'IP al progetto, attraverso il seguente comando: <verbatim> # nova floating-ip-create # nova-manage floating list 14998a053eb745bb852d7a593812da2f 10.101.8.129 None nova eth1 None 10.101.8.130 None nova eth1 None 10.101.8.131 None nova eth1 None 10.101.8.132 None nova eth1 [....] None 10.101.8.254 None nova eth1 </verbatim> *Nota bene:* il progetto a cui viene assegnato l'IP è il tenant con cui ci si è autenticati. * Ora è possibile assegnare uno degli IP (nel nostro caso uno solo, il 10.101.8.129) ad una macchina virtuale specificando l'id della VM, come segue: <verbatim> # nova list +--------------------------------------+-----------------------+--------+-------------------------------------+ | ID | Name | Status | Networks | +--------------------------------------+-----------------------+--------+-------------------------------------+ | 44806b1a-6157-417d-8437-ef36871bb6fd | Osuse_instance_andrea | ACTIVE | private=192.168.122.4 | +--------------------------------------+-----------------------+--------+-------------------------------------+ # nova add-floating-ip 44806b1a-6157-417d-8437-ef36871bb6fd 10.101.8.129 # nova list +--------------------------------------+-----------------------+--------+-------------------------------------+ | ID | Name | Status | Networks | +--------------------------------------+-----------------------+--------+-------------------------------------+ | 44806b1a-6157-417d-8437-ef36871bb6fd | Osuse_instance_andrea | ACTIVE | private=192.168.122.4, 10.101.8.129 | +--------------------------------------+-----------------------+--------+-------------------------------------+ # nova-manage floating list 14998a053eb745bb852d7a593812da2f 10.101.8.129 44806b1a-6157-417d-8437-ef36871bb6fd nova eth1 None 10.101.8.130 None nova eth1 None 10.101.8.131 None nova eth1 None 10.101.8.132 None nova eth1 [....] None 10.101.8.254 None nova eth1 </verbatim> ---++ Gestione gruppi sicurezza Per accedere, tramite dashboard, alla pagina di gestione dei gruppi di sicurezza andare in =Project= -> =Access & Security= . La seconda tabella di questa pagina permette la gestione dei gruppi di sicurezza: *per poter utilizzare una qualsiasi porta di un'istanza è necessario aggiungere tale porta al rispettivo gruppo di sicurezza*. Ad esempio per poter accedere ad una web application installata nell'istanza è necessario aggiungere la porta 80 tra le regole di sicurezza del gruppo associato a quell'istanza. <br /> ---++ Live migration Con *Live Migration* si intende la possibilita' da parte dell'amministratore di !OpenStack di migrare una VM da un Compute Node ad un altro senza discontinuita' di servizio. Questa operazione e' utile per fare manutenzione su un Compute Node. * La directory =/var/lib/nova/instances= deve essere condivisa tra tutti i Compute Node; * =libvitrd= deve essere configurato per supportare la migrazione live (vedere istruzione nella installazione del Compute Node). Nel seguente esempio, la vm con id =44806b1a-6157-417d-8437-ef36871bb6fd= viene migrata dal compute node =mcloud02.regionemarche.intra= a =mcloud03.regionemarche.intra= . <verbatim> # nova show 44806b1a-6157-417d-8437-ef36871bb6fd +-------------------------------------+------------------------------------------------------------+ | Property | Value | +-------------------------------------+------------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-SRV-ATTR:host | mcloud02.regionemarche.intra | | OS-EXT-SRV-ATTR:hypervisor_hostname | mcloud02.regionemarche.intra | | OS-EXT-SRV-ATTR:instance_name | instance-0000002a | | OS-EXT-STS:power_state | 1 | | OS-EXT-STS:task_state | None | | OS-EXT-STS:vm_state | active | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2012-11-29T16:36:58Z | | flavor | MCloud Flavor (6) | | hostId | bdafa05a4a5a5e92b059ab59db5bf40cce604edcd547930a1cf0efb0 | | id | 44806b1a-6157-417d-8437-ef36871bb6fd | | image | Osuse_mcloud_281112 (28a1a678-1410-4235-a697-6de2e4fade51) | | key_name | None | | metadata | {} | | name | Osuse_instance_andrea | | private network | 192.168.122.4, 10.101.8.130 | | progress | 0 | | security_groups | [{u'name': u'default'}] | | status | ACTIVE | | tenant_id | 7e266325c0ca4e01aa0a12f54c00adc5 | | updated | 2012-11-29T17:07:46Z | | user_id | 5267588ce6694b1da88144a11e586106 | +-------------------------------------+------------------------------------------------------------+ # nova live-migration 44806b1a-6157-417d-8437-ef36871bb6fd mcloud03.regionemarche.intra # nova show 44806b1a-6157-417d-8437-ef36871bb6fd +-------------------------------------+------------------------------------------------------------+ | Property | Value | +-------------------------------------+------------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-SRV-ATTR:host | mcloud03.regionemarche.intra | | OS-EXT-SRV-ATTR:hypervisor_hostname | mcloud03.regionemarche.intra | | OS-EXT-SRV-ATTR:instance_name | instance-0000002a | | OS-EXT-STS:power_state | 1 | | OS-EXT-STS:task_state | None | | OS-EXT-STS:vm_state | active | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2012-11-29T16:36:58Z | | flavor | MCloud Flavor (6) | | hostId | bdafa05a4a5a5e92b059ab59db5bf40cce604edcd547930a1cf0efb0 | | id | 44806b1a-6157-417d-8437-ef36871bb6fd | | image | Osuse_mcloud_281112 (28a1a678-1410-4235-a697-6de2e4fade51) | | key_name | None | | metadata | {} | | name | Osuse_instance_andrea | | private network | 192.168.122.4, 10.101.8.130 | | progress | 0 | | security_groups | [{u'name': u'default'}] | | status | ACTIVE | | tenant_id | 7e266325c0ca4e01aa0a12f54c00adc5 | | updated | 2012-11-29T17:07:46Z | | user_id | 5267588ce6694b1da88144a11e586106 | +-------------------------------------+------------------------------------------------------------+ </verbatim> <br /> -- Main.MatteoManzali - 2012-11-19
Edit
|
Attach
|
PDF
|
H
istory
:
r22
|
r16
<
r15
<
r14
<
r13
|
B
acklinks
|
V
iew topic
|
More topic actions...
Topic revision: r14 - 2012-12-03
-
MatteoManzali
Home
Site map
CEMon web
CREAM web
Cloud web
Cyclops web
DGAS web
EgeeJra1It web
Gows web
GridOversight web
IGIPortal web
IGIRelease web
MPI web
Main web
MarcheCloud web
MarcheCloudPilotaCNAF web
Middleware web
Operations web
Sandbox web
Security web
SiteAdminCorner web
TWiki web
Training web
UserSupport web
VOMS web
WMS web
WMSMonitor web
WeNMR web
MarcheCloud Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Edit
Attach
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback