Tags:
,
view all tags
---+!! Guida di installazione (in unica pagina) dell'infrastruttura di cloud per il progetto Marche Cloud %TOC% <br /> ---+ Testbed ---++ Tabella Hostnames / IPs dei server che compongono l'infrastruttura pilota | *HOSTNAME* | *IP eth0* | *IP eth1* | | mcloud01.regionemarche.intra | 192.168.200.21 | 10.101.8.21 | | mcloud02.regionemarche.intra | 192.168.200.22 | 10.101.8.22 | | mcloud03.regionemarche.intra | 192.168.200.23 | 10.101.8.23 | | mcloud04.regionemarche.intra | 192.168.200.24 | 10.101.8.24 | <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> # vgdisplay --- Volume group --- VG Name nova-volumes System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 557,37 GiB PE Size 4,00 MiB Total PE 142687 Alloc PE / Size 55748 / 217,77 GiB Free PE / Size 86939 / 339,61 GiB VG UUID 6x1Q85-hjml-folN-VzIo-0Atn-f2H9-x1hZ4m # lvs LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert lv_nova nova-volumes -wi-ao-- 200,00g lv_root nova-volumes -wi-ao-- 9,77g lv_swap nova-volumes -wi-ao-- 8,00g </verbatim> * Controllare il setup di rete (due reti fisiche distinte eth0 ed eth1) <verbatim> # ifconfig eth0 Link encap:Ethernet HWaddr 00:25:90:4A:A9:08 inet addr:131.154.101.103 Bcast:131.154.101.255 Mask:255.255.255.0 inet6 addr: fe80::225:90ff:fe4a:a908/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1614529 errors:1 dropped:0 overruns:0 frame:1 TX packets:158071 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:262985425 (250.8 MiB) TX bytes:51794928 (49.3 MiB) Interrupt:28 Memory:fbbe0000-fbc00000 eth1 Link encap:Ethernet HWaddr 00:25:90:4A:A9:09 inet addr:131.154.100.146 Bcast:131.154.100.255 Mask:255.255.255.0 inet6 addr: fe80::225:90ff:fe4a:a909/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:142407 errors:0 dropped:0 overruns:0 frame:0 TX packets:540 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:12482666 (11.9 MiB) TX bytes:49631 (48.4 KiB) Interrupt:29 Memory:fbce0000-fbd00000 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:39919 errors:0 dropped:0 overruns:0 frame:0 TX packets:39919 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:32028240 (30.5 MiB) TX bytes:32028240 (30.5 MiB) </verbatim> * Verificare la presenza dei repository EPEL, se non sono presenti installarli (sia =epel= che =epel-testing=) <verbatim> [root@clstr-09 ~]# ll /etc/yum.repos.d/ totale 36 -rw-r--r--. 1 root root 1926 26 giu 11:30 CentOS-Base.repo -rw-r--r--. 1 root root 637 26 giu 11:30 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 626 26 giu 11:30 CentOS-Media.repo -rw-r--r--. 1 root root 2593 26 giu 11:30 CentOS-Vault.repo -rw-r--r--. 1 root root 145 16 nov 17:40 cnaf-local.repo -rw-r--r--. 1 root root 200 16 nov 17:40 egi-trustanchors.repo -rw-r--r--. 1 root root 957 9 mag 2012 epel.repo -rw-r--r--. 1 root root 1056 9 mag 2012 epel-testing.repo -rw-r--r--. 1 root root 1250 28 set 21:00 puppetlabs.repo </verbatim> <br /> ---+ 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 il servizio =glusterd= venga avviato di default al riavvio del server <verbatim> # chkconfig glusterd 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 (con hostname rispettivamente =hostname1.domain=, =hostname2.domain=, =hostname3.domain=, =hostname4.domain=) eseguire sull'host =hostname1.domain= : <verbatim> # gluster peer probe hostname2.domain # gluster peer probe hostname3.domain # gluster peer probe hostname4.domain </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 =hostname1.domain= si otterrà: <verbatim> # gluster peer status Number of Peers: 3 Hostname: hostname2.domain Uuid: 2088ff36-dbf9-44a3-9b3b-8a3a94d64cd4 State: Peer in Cluster (Connected) Hostname: hostname3.domain Uuid: ce7b0621-4068-43e4-b2a5-585c23ade1de State: Peer in Cluster (Connected) Hostname: hostname4.domain Uuid: ae5dfd23-4a65-a2e6-be85-3e5c11abe5cd 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 1000G (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 1000 Gigabyte: <verbatim> # lvcreate -L 1000G -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 _hostname1.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 hostname1.domain * 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 hostname2.domain:/mnt/brick-glance hostname3.domain:/mnt/brick-glance hostname4.domain:/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> hostname1.domain:/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 hostname1.domain, hostname2.domain, hostname3.domain * 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 hostname1.domain:/mnt/brick-nova hostname2.domain:/mnt/brick-nova hostname3.domain:/mnt/brick-nova hostname4.domain:/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 =/var/lib/nova/instances=): <verbatim> hostname1.domain:/volume-nova /var/lib/nova/instances glusterfs defaults 1 1 </verbatim> Montare il volume condiviso: <verbatim> # mount –a </verbatim> ---+ Keystone ---++ Installazione Keystone *Server designato per l'installazione:* hostname1.domain. * 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@hostname1.domain/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 e del tenant per i servizi Per comodità in questa sezione si utilizzeranno delle variabili d'ambiente settate come segue: <verbatim> # export ADMIN_TOKEN=<ADMIN_TOKEN_VALUE> export OS_USERNAME=adminUser export OS_PASSWORD=<PASSWORD> export OS_TENANT_NAME=adminTenant export ENDPOINT=http://openstack-01.cnaf.infn.it:35357/v2.0/ export OS_AUTH_URL=http://openstack-01.cnaf.infn.it:5000/v2.0/ </verbatim> Dove <ADMIN_TOKEN_VALUE> è il valore del parametro =admin_token= contenuto nel file =/etc/keystone/keystone.conf= . ---+++ 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 | db2cf825309c49989595fc2ff915dc7e | | name | adminTenant | +-------------+----------------------------------+ export ADMIN_TENANT_ID=db2cf825309c49989595fc2ff915dc7e </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 | None | | enabled | True | | id | 7d6a3a42c37948b88e2fa692b63587cd | | name | adminUser | | password | $6$rounds=40000$NxZyxUfO8VRj3gR.$zt9GJKwMDOUMDHCMhqAqJje3JAJmqqTXADZkXll.usGHEsEpAMgKsnZEfF0itF75ooyY1/tjxXBJq9MaQXnfo. | | tenantId | db2cf825309c49989595fc2ff915dc7e | +----------+-------------------------------------------------------------------------------------------------------------------------+ </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 | 2f196d11ff954c67befc3f190195f47c | | name | admin | +----------+----------------------------------+ # export ADMIN_ROLE_ID=2f196d11ff954c67befc3f190195f47c </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 "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 | 73016aa2c9ca4aeba3736cf44cc8433b | | name | service | +-------------+----------------------------------+ # export SERVICE_TENANT_ID=73016aa2c9ca4aeba3736cf44cc8433b </verbatim> <br /> ---++ 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 | None | | enabled | True | | id | 90ee5ac051eb4d1eaa543243987968a6 | | name | glance | | password | $6$rounds=40000$LApm.pXGC43cDMhN$J1mDpXad5r2YYNoMKK/P5t0VwXQidKauP/oHaVH5Nm9E7zGQLYamwa1Xxvh0FRcjOvhDtTSZ97CToKV6pWFPA1 | | tenantId | 73016aa2c9ca4aeba3736cf44cc8433b | +----------+-------------------------------------------------------------------------------------------------------------------------+ export GLANCE_USER_ID=90ee5ac051eb4d1eaa543243987968a6 </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 | None | | enabled | True | | id | 9b2d55e2f8164be5a9805a39588f4659 | | name | nova | | password | $6$rounds=40000$jAXTAHvAnF4MBz7O$pr99MMc4gpfOOlYDO7dTTCy7Ai.XZ72P1GbMXHpj1ri7s9qIdnE67QPDkkfynEUyHXBNsrnsnHzmF9fvGo66r1 | | tenantId | 73016aa2c9ca4aeba3736cf44cc8433b | +----------+-------------------------------------------------------------------------------------------------------------------------+ export NOVA_USER_ID=9b2d55e2f8164be5a9805a39588f4659 </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 | c2b7f0514dde412ea6c1fccac6437bb7 | | name | keystone | | type | identity | +-------------+----------------------------------+ export KEYSTONE_SERVICE_ID=c2b7f0514dde412ea6c1fccac6437bb7 export KEYSTONE5000=http://openstack-01.cnaf.infn.it:5000/v2.0 </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://openstack-01.cnaf.infn.it:35357/v2.0/ | | id | 93c84640b7384911afdd27dda19ea69c | | internalurl | http://openstack-01.cnaf.infn.it:5000/v2.0 | | publicurl | http://openstack-01.cnaf.infn.it:5000/v2.0 | | region | RegionOne | | service_id | c2b7f0514dde412ea6c1fccac6437bb7 | +-------------+----------------------------------------------+ </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 | 5bfe94c4ff80410ab60b635cc99e2476 | | name | nova | | type | compute | +-------------+----------------------------------+ export NOVA_COMPUTE_SERVICE_ID=5bfe94c4ff80410ab60b635cc99e2476 </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://openstack-01.cnaf.infn.it:8774/v2/%(tenant_id)s | | id | 6168989f6fd2429d8f15d62c940a2fc2 | | internalurl | http://openstack-01.cnaf.infn.it:8774/v2/%(tenant_id)s | | publicurl | http://openstack-01.cnaf.infn.it:8774/v2/%(tenant_id)s | | region | RegionOne | | service_id | 5bfe94c4ff80410ab60b635cc99e2476 | +-------------+--------------------------------------------------------+ </verbatim> Dove <CLOUD_CONTROLLER_HOSTNAME> è l'hostname del Cloud Controller (Nova). Nel nostro caso è "openstack-01.cnaf.infn.it". ---+++ 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 | f99ba2241e014295aa3ecfcda6633100 | | name | volume | | type | volume | +-------------+----------------------------------+ export NOVA_VOLUME_SERVICE_ID=f99ba2241e014295aa3ecfcda6633100 </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://openstack-01.cnaf.infn.it:8776/v1/%(tenant_id)s | | id | 78b405450a5d432b8a4c61bc1abc52d9 | | internalurl | http://openstack-01.cnaf.infn.it:8776/v1/%(tenant_id)s | | publicurl | http://openstack-01.cnaf.infn.it:8776/v1/%(tenant_id)s | | region | RegionOne | | service_id | f99ba2241e014295aa3ecfcda6633100 | +-------------+--------------------------------------------------------+ </verbatim> Dove <CLOUD_CONTROLLER_HOSTNAME> è l'hostname del Cloud Controller (Nova). Nel nostro caso è "openstack-01.cnaf.infn.it". ---+++ 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 | 6c02494e7a534c91a7a01228a4093e63 | | name | glance | | type | image | +-------------+----------------------------------+ export GLANCE_IMAGE_SERVICE_ID=6c02494e7a534c91a7a01228a4093e63 </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://openstack-01.cnaf.infn.it:9292/v1 | | id | 2251cae28faf450a8f86292a237e4fcf | | internalurl | http://openstack-01.cnaf.infn.it:9292/v1 | | publicurl | http://openstack-01.cnaf.infn.it:9292/v1 | | region | RegionOne | | service_id | 6c02494e7a534c91a7a01228a4093e63 | +-------------+------------------------------------------+ </verbatim> Dove <GLANCE_SERVER_HOSTNAME> è l'hostname del server sui è installato il servizio Glance. Nel nostro caso è "openstack-01.cnaf.infn.it". <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> [root@clstr-09 ~]# keystone tenant-list +----------------------------------+-------------+---------+ | id | name | enabled | +----------------------------------+-------------+---------+ | 8f74bb88623e41619a4c020baed3caa0 | adminTenant | True | | d6e9133d43b5440eae0db744c00bbca7 | service | True | +----------------------------------+-------------+---------+ [root@clstr-09 ~]# keystone user-list +----------------------------------+-----------+---------+-------+ | id | name | enabled | email | +----------------------------------+-----------+---------+-------+ | 30fc09b098b0451f8ec3861cf96f3422 | nova | True | | | 71228944d88b477188528c47942bcdb8 | adminUser | True | | | 7f3e370e94b54d8fa6ddbb02d5903f43 | glance | True | | +----------------------------------+-----------+---------+-------+ [root@clstr-09 ~]# keystone service-list +----------------------------------+----------+----------+---------------------------+ | id | name | type | description | +----------------------------------+----------+----------+---------------------------+ | 11279e60f5054500a1a0a4ea99016721 | glance | image | Glance Image Service | | 25197e8149da4bc199fc3e8476f4c5ba | volume | volume | Nova Volume Service | | 990589efda944f379888edc97f17cb75 | keystone | identity | Keystone Identity Service | | dbe9d50403c541f9b277e1c26b6e7946 | nova | compute | Nova Compute Service | +----------------------------------+----------+----------+---------------------------+ [root@clstr-09 ~]# keystone endpoint-list +----------------------------------+-----------+----------------------------------------------------+----------------------------------------------------+----------------------------------------------------+----------------------------------+ | id | region | publicurl | internalurl | adminurl | service_id | +----------------------------------+-----------+----------------------------------------------------+----------------------------------------------------+----------------------------------------------------+----------------------------------+ | 20fef2ceae314842aade705eb6c3ed17 | RegionOne | http://clstr-09.cnaf.infn.it:8774/v2/%(tenant_id)s | http://clstr-09.cnaf.infn.it:8774/v2/%(tenant_id)s | http://clstr-09.cnaf.infn.it:8774/v2/%(tenant_id)s | dbe9d50403c541f9b277e1c26b6e7946 | | 8868e9748ad4481cac64ab0e3d33e614 | RegionOne | http://clstr-09.cnaf.infn.it:8776/v1/%(tenant_id)s | http://clstr-09.cnaf.infn.it:8776/v1/%(tenant_id)s | http://clstr-09.cnaf.infn.it:8776/v1/%(tenant_id)s | 25197e8149da4bc199fc3e8476f4c5ba | | 8953d51657d8482a9037671db111f718 | RegionOne | http://clstr-09.cnaf.infn.it:5000/v2.0 | http://clstr-09.cnaf.infn.it:5000/v2.0 | http://clstr-09.cnaf.infn.it:35357/v2.0/ | 990589efda944f379888edc97f17cb75 | +----------------------------------+-----------+----------------------------------------------------+----------------------------------------------------+----------------------------------------------------+----------------------------------+ [root@clstr-09 ~]# keystone catalog Service: volume +-------------+-----------------------------------------------------------------------+ | Property | Value | +-------------+-----------------------------------------------------------------------+ | adminURL | http://clstr-09.cnaf.infn.it:8776/v1/8f74bb88623e41619a4c020baed3caa0 | | id | 8868e9748ad4481cac64ab0e3d33e614 | | internalURL | http://clstr-09.cnaf.infn.it:8776/v1/8f74bb88623e41619a4c020baed3caa0 | | publicURL | http://clstr-09.cnaf.infn.it:8776/v1/8f74bb88623e41619a4c020baed3caa0 | | region | RegionOne | +-------------+-----------------------------------------------------------------------+ Service: compute +-------------+-----------------------------------------------------------------------+ | Property | Value | +-------------+-----------------------------------------------------------------------+ | adminURL | http://clstr-09.cnaf.infn.it:8774/v2/8f74bb88623e41619a4c020baed3caa0 | | id | 20fef2ceae314842aade705eb6c3ed17 | | internalURL | http://clstr-09.cnaf.infn.it:8774/v2/8f74bb88623e41619a4c020baed3caa0 | | publicURL | http://clstr-09.cnaf.infn.it:8774/v2/8f74bb88623e41619a4c020baed3caa0 | | region | RegionOne | +-------------+-----------------------------------------------------------------------+ Service: identity +-------------+------------------------------------------+ | Property | Value | +-------------+------------------------------------------+ | adminURL | http://clstr-09.cnaf.infn.it:35357/v2.0/ | | id | 8953d51657d8482a9037671db111f718 | | internalURL | http://clstr-09.cnaf.infn.it:5000/v2.0 | | publicURL | http://clstr-09.cnaf.infn.it:5000/v2.0 | | region | RegionOne | +-------------+------------------------------------------+ </verbatim> ---+ Glance ---++ Installazione Glance *Server designato per l'installazione:* hostname1.domain. * 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 =myslq -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 * To begin troubleshooting, look at the logs in the =/var/log/glance/registry.log= or =/var/log/glance/api.log= * You can find the version of the installation by using the =glance --version= command. The version number 2012.1 corresponds with the Essex release. * Obtain a test image <verbatim> # mkdir /stackimages # cd /stackimages # wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img # glance index # glance add name=cirros-0.3.0-x86_64 disk_format=qcow2 container_format=bare < /stackimages/cirros-0.3.0-x86_64-disk.img Uploading image 'cirros-0.3.0-x86_64' ================================================================================================================================================================================[100%] 23.2M/s, ETA 0h 0m 0s Added new image with ID: a08912a4-3c73-4b17-9d96-bed2d1290d3d # glance index ID Name Disk Format Container Format Size ------------------------------------ ------------------------------ -------------------- -------------------- -------------- a08912a4-3c73-4b17-9d96-bed2d1290d3d cirros-0.3.0-x86_64 qcow2 bare 9761280 </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> <pre></pre> <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-compute openstack-network mysql dnsmasq-utils python-keystone-auth-token </verbatim> * Requisiti di configurazione per RHEL * Assicurarsi che nel file =/etc/qpidd.conf= sia settato =auth=no= . * Attraverso il comando openstack-config settare a False il parametro =force_dhcp_release= : <verbatim> # openstack-config --set /etc/nova/nova.conf DEFAULT force_dhcp_release False </verbatim> *Nota bene:* non viene mostrato nessun output ma modificato il file di configurazione. * Se si intende utilizzare immagini che non usano una singola partizione, eseguire il seguente comando: <verbatim> # openstack-config --set /etc/nova/nova.conf DEFAULT libvirt_inject_partition -1 </verbatim> *Nota bene:* non viene mostrato nessun output ma modificato il file di configurazione. <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* * Modificare due file in =/etc/nova= nel seguente modo. * Contentuto completo di =nova.conf= : <verbatim> [DEFAULT] # LOG/STATE logdir = /var/log/nova verbose = True state_path = /var/lib/nova lock_path = /var/lib/nova/tmp # AUTHENTICATION auth_strategy = keystone # SCHEDULER #compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler # VOLUMES volume_group = <VOLUME_NAME> #volume_name_template = volume-%08x iscsi_helper = tgtadm # DATABASE del Cloud Controller sql_connection = mysql://nova:<YOUR_NOVADB_PASSWORD>@openstack-01.cnaf.infn.it/nova # COMPUTE libvirt_type = kvm connection_type = libvirt #instance_name_template = instance-%08x #api_paste_config=/etc/nova/api-paste.ini #allow_resize_to_same_host=True # APIS #osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions #ec2_dmz_host=192.168.206.130 #s3_host=192.168.206.130 # GLANCE image_service=nova.image.glance.GlanceImageService glance_api_servers=192.168.206.130:9292 # NETWORK network_manager = nova.network.manager.FlatDHCPManager force_dhcp_release = True dhcpbridge_flagfile = /etc/nova/nova.conf firewall_driver = nova.virt.libvirt.firewall.IptablesFirewallDriver # Change my_ip to match each host my_ip = <THIS_SERVER_IP> public_interface = eth0 #vlan_interface = eth0 flat_network_bridge = virbr0 flat_interface = eth0 fixed_range = 192.168.122.0/24 # NOVNC CONSOLE vnc_enabled = true vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = 131.154.100.111 novncproxy_base_url=http://openstack-01.cnaf.infn.it:6080/vnc_auto.html xvpvncproxy_base_url=http://openstack-01.cnaf.infn.it:6081/console # Qpid qpid_hostname = openstack-01.cnaf.infn.it rpc_backend = nova.rpc.impl_qpid # OTHER dhcpbridge = /usr/bin/nova-dhcpbridge injected_network_template = /usr/share/nova/interfaces.template libvirt_xml_template = /usr/share/nova/libvirt.xml.template libvirt_nonblocking = True libvirt_inject_partition = -1 vpn_client_template = /usr/share/nova/client.ovpn.template credentials_template = /usr/share/nova/novarc.template root_helper = sudo nova-rootwrap remove_unused_base_images = True </verbatim> Dove: * <VOLUME_NAME> è il nome del volume fisico del server che si sta configurando * <YOUR_NOVADB_PASSWORD> è 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= e =qpid_hostname= "openstack-01.cnaf.infn.it" è il server che ospita il Cloud Controller * nel parametro =flat_network_bridge= "virbr0" è l'interfaccia di rete virtuale del server che si sta configurando <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 = <KEYSTONE_SERVICE_IP> service_port = 5000 auth_host = <KEYSTONE_SERVICE_IP> auth_port = 35357 auth_protocol = http auth_uri = http://<KEYSTONE_SERVICE_IP>:5000/ admin_tenant_name = service admin_user = nova admin_password = <NOVA_PASSWORD> </verbatim> Dove: * <KEYSTONE_SERVICE_IP> è l'IP del server che ospita Keystone (nel caso del prototipo è l'IP di openstack-01.cnaf.infn.it) * <NOVA_PASSWORD> è la password che è stata associata all'utente del servizio Nova in Keystone <verbatim></verbatim> * *Nota bene:* il comando =nova-manage= potrebbe dare in output alcuni messaggi di Warning su metodi deprecati. <verbatim></verbatim> * Per far partire i servizi di Nova ed inizializzare il DB, lanciare i seguenti comandi: <verbatim> # for svc in api objectstore compute network volume scheduler cert; do echo openstack-nova-$svc; service openstack-nova-$svc stop ; chkconfig openstack-nova-$svc on; done # nova-manage db sync # for svc in api objectstore compute network volume scheduler cert; do echo openstack-nova-$svc; /etc/init.d/openstack-nova-$svc start ; done </verbatim> * Sul Cloud controller verificare lo stato dei servizi Nova compute: <verbatim> # nova-manage service list Binary Host Zone Status State Updated_At nova-cert openstack-01.cnaf.infn.it nova enabled :-) 2012-10-15 14:46:04 nova-consoleauth openstack-01.cnaf.infn.it nova enabled :-) 2012-10-15 14:45:54 nova-console openstack-01.cnaf.infn.it nova enabled :-) 2012-10-15 14:46:04 nova-scheduler openstack-01.cnaf.infn.it nova enabled :-) 2012-10-15 14:45:55 nova-compute openstack-01.cnaf.infn.it nova enabled :-) 2012-10-15 14:45:54 nova-volume openstack-01.cnaf.infn.it nova enabled :-) 2012-10-15 14:45:55 nova-network openstack-01.cnaf.infn.it nova enabled :-) 2012-10-15 14:46:01 nova-compute openstack-02.cnaf.infn.it nova enabled :-) 2012-10-15 14:45:57 nova-network openstack-02.cnaf.infn.it nova enabled :-) 2012-10-15 14:46:03 nova-compute openstack-03.cnaf.infn.it nova enabled :-) 2012-10-15 14:46:02 nova-network openstack-03.cnaf.infn.it nova enabled :-) 2012-10-15 14:46:02 </verbatim> ---++ Configurazione 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> * Configurare l'interfaccia =eth1= in promiscue mode <verbatim> ip link set eth1 promisc on </verbatim> Da un server: * 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 # nova-manage network list id IPv4 IPv6 start address DNS1 DNS2 VlanID project uuid 1 192.168.122.0/24 None 192.168.122.2 8.8.4.4 None None None 03f392b7-16bd-4ea0-a1c0-897fdebd1f0c </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 /> ---+ TODO Installare e impostare l'avvio automatico dei servizi legati a ISCSI * 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:* non è possibile usare il comando =chkconfig= per far partire il servizio =iscsid= in automatico all'avvio del server, quindi è necessario farlo partire manualmente ad ogni riavvio, utilizzando il comando =service iscsid force-start= . <br /> -- Main.MatteoManzali - 2012-11-19
Edit
|
Attach
|
PDF
|
H
istory
:
r22
|
r6
<
r5
<
r4
<
r3
|
B
acklinks
|
V
iew topic
|
More topic actions...
Topic revision: r4 - 2012-11-20
-
PaoloVeronesi
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