Tags:
, view all tags

Casi d'uso di OpenStack


Gestione di un volumi su VM in modo che agiscano da storage persistente

Per fornire alle VM uno spazio dove salvare i dati in maniera persistente, si crea un volume Nova sul server che ospita il servizio Nova Volume, si associa ad una VM e lo si monta sulla VM. I file scritti in questo volume rimarranno persistenti. Quando l'associazione tra il volume e la VM verrà tolta e il volume verrà associato ad un'altra VM, questa vedrà i file salvati in precedenza sulla prima VM.

  • Sul server che ospita il servizio Nova Volume (openstack-01.cnaf.infn.it nel prototipo in esempio), creare un volume di 10 GB:
    # nova volume-create --display_name <VOLUME_NAME> 10  
    
    Dove <VOLUME_NAME> è il nome del volume che si vuole creare.

  • Mostrare tutti i volumi esistenti:
    # nova volume-list
    

  • Un volume in stato "available" può essere associato ad una istanza col seguente comando:
    # nova volume-attach <INSTANCE_ID> <VOLUME_ID> <MOUNT_POINT>
    
    Dove:
    • <INSTANCE_ID> è l'id dell'istanza che si vuole associare al volume
    • <VOLUME_ID> è l'id del volume ottenuto col comando nova volume-list
    • <MOUNT_POINT> è la partizione della macchina virtuale che verrà montata (ad esempio /dev/vdc)

  • Il Compute Node dove gira l'istanza gestisce una connessione iSCSI e crea una sessione. Per verificare che la sessione sia stata creata:
    # iscsiadm -m session
    
    con output del tipo:
    tcp: [1] 172.16.40.244:3260,1 iqn.2010-10.org.openstack:volume-1
    

  • Loggarsi sulla instanza e verificare che lo spazio sia visibile con i comandi dmesg | tail e fdisk -l . L'output di quest'ultimo dovrebbe contenere delle righe del tipo:
    Disk /dev/vdc: 10.7 GB, 10737418240 bytes
    16 heads, 63 sectors/track, 20805 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x9dbd69c6
    

  • Configurare lo spazio col seguente comando interattivo:
    # fdisk /dev/vdc
    
    Di seguito i passi da seguire:
    1. Digitare n per creare una nuova partizione
    2. Digitare p per creare una partizione primaria
    3. Digitare 1 per designarla come la prima partizione
    4. Premere ENTER due volte per accettare il default del primo e ultimo cilindro.
    5. Digitare t, selezionando la nuova partizione
    6. Digitare 83 per settare il tipo della partizione a 83 (tipo Linux)
    7. Digitare p per visualizzare il setup della partizione. La prima partizione è chiamata /dev/vdc1
    8. Digitare w per scrivere la partition table ed uscire da fdisk
    9. Infine formattare la partizione e montarla
      • # mkfs.ext4 /dev/vdc1
      • # mkdir /extraspace
      • # mount /dev/vdc1 /extraspace

  • L'associazione tra volume e istanza può essere eliminata tramite il comando:
    # nova volume-detach <INSTANCE_ID> <VOLUME_ID>
    

  • In questo modo il volume è disponibile per essere associato ad un'altra istanza, sulla quale sarà sufficiente montare il volume per poterlo utilizzare:
    # mkdir /extraspace
    # mount /dev/vdc1 /extraspace 
    

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 177cf5e0-66c1-4bb8-9122-0530e1e919d9 viene migrata dal compute node openstack-03.cnaf.infn.it a openstack-02.cnaf.infn.it.

# nova show 177cf5e0-66c1-4bb8-9122-0530e1e919d9
+-------------------------------------+----------------------------------------------------------+
|               Property              |                          Value                           |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-SRV-ATTR:host                | openstack-03.cnaf.infn.it                                |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                     |
| OS-EXT-SRV-ATTR:instance_name       | instance-000000b6                                        |
| OS-EXT-STS:power_state              | 1                                                        |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| config_drive                        |                                                          |
| created                             | 2012-10-18T06:47:31Z                                     |
| flavor                              | m1.small                                                 |
[...]

# nova live-migration 177cf5e0-66c1-4bb8-9122-0530e1e919d9 openstack-02.cnaf.infn.it 

# nova show 177cf5e0-66c1-4bb8-9122-0530e1e919d9
+-------------------------------------+----------------------------------------------------------+
|               Property              |                          Value                           |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-SRV-ATTR:host                | openstack-02.cnaf.infn.it                                |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                     |
| OS-EXT-SRV-ATTR:instance_name       | instance-000000b6                                        |
| OS-EXT-STS:power_state              | 1                                                        |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| config_drive                        |                                                          |
| created                             | 2012-10-18T06:47:31Z                                     |
| flavor                              | m1.small                                                 |
[...]

Configurazione degli indirizzi IP Floating pubblici

Indirizzi IP pubblici e privati

  • 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 :

public_interface = eth0

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:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

In questo esempio è disabilitato. e' possibile abilitarlo al volo usando il seguente comando:

# sysctl -w net.ipv4.ip_forward=1

Al fine di rendere permanente questa modifica, editare il file /etc/sysctl.conf inserendo o modificando la seguente riga:

net.ipv4.ip_forward = 1

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:

# nova-manage floating create <AVAILABLE_PUBLIC_IP>

Dove <AVAILABLE_PUBLIC_IP> è un IP disponibile. E' possibile aggiungere una sottorete tramite:

# nova-manage floating create --ip_range=<SUBNET>

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 : aggiunge un IP alla lista
    • nova-manage floating create --ip-range= : aggiunge una sottorete alla lista
    • nova-manage floating delete : rimuove un IP dalla lista
    • nova-manage floating delete --ip-range= : rimuove una sottorete dalla lista

Esempio creazione lista

Questa operazione viene fatta a livello globale, non per progetto. Di seguito viene creata una lista con 4 ip pubblici:

# nova-manage floating create 131.154.100.217

# nova-manage floating create 131.154.100.218

# nova-manage floating create 131.154.100.219

# nova-manage floating create 131.154.100.220

#  nova-manage floating list
None    131.154.100.217 None    nova    eth0
None    131.154.100.218 None    nova    eth0
None    131.154.100.219 None    nova    eth0
None    131.154.100.220 None    nova    eth0

Assegnazione ip a progetto

Con le credenziali di progetto (o da dashboard) e' possibile assegnare uno o piu' ip (ancora disponibili) della lista precedentemente creata ad un progetto (nell'esempio al progetto con id db2cf825309c49989595fc2ff915dc7e):
#  keystone tenant-list
+----------------------------------+-------------+---------+
|                id                |     name    | enabled |
+----------------------------------+-------------+---------+
| 590b1b53b3ad41bd976d2bb69cc0aca3 | IGI         | True    |
| 73016aa2c9ca4aeba3736cf44cc8433b | service     | True    |
| db2cf825309c49989595fc2ff915dc7e | adminTenant | True    |
+----------------------------------+-------------+---------+

# nova floating-ip-create

# nova floating-ip-create

# nova-manage floating list
db2cf825309c49989595fc2ff915dc7e        131.154.100.217 None    nova    eth0
db2cf825309c49989595fc2ff915dc7e        131.154.100.218 None    nova    eth0
None    131.154.100.219 None    nova    eth0
None    131.154.100.220 None    nova    eth0

Assegnazione ip a vm

Nell'esempio viene assegnato l'ip 131.154.100.217 (precedentemente assegnato al progetto) alla vm con id 05f84edc-010c-4cb6-b8f5-ecd963da7a65
# nova list
+--------------------------------------+-------------------------+--------+------------------------+
|                  ID                  |           Name          | Status |        Networks        |
+--------------------------------------+-------------------------+--------+------------------------+
| 05f84edc-010c-4cb6-b8f5-ecd963da7a65 | ubuntu-prova            | ACTIVE | private=192.168.122.11 |
| 0983f56f-46a3-435a-a693-ee53ad4f457b | cirros                  | ACTIVE | private=192.168.122.9  |
| 15620634-7ff0-4073-90de-c698bc484e3b | fedora-multi            | ACTIVE | private=192.168.122.16 |
| 177cf5e0-66c1-4bb8-9122-0530e1e919d9 | winxp-multi             | ACTIVE | private=192.168.122.8  |
| 31afe870-2040-434f-9bd4-54418eb0acb4 | prova-per-volume-centos | ACTIVE | private=192.168.122.5  |
| 4dcc9def-9de7-448d-9702-8eaf291d3fe6 | winxp-multi             | ACTIVE | private=192.168.122.6  |
| 509275a8-0b09-48ac-87d0-be7660315bdd | fedora                  | ACTIVE | private=192.168.122.21 |
| 55f71a66-0467-49d0-9294-a146f858b549 | centos                  | ACTIVE | private=192.168.122.23 |
| 9c49c426-78bb-4dbd-95a9-7589164692e4 | prova-per-volume        | ACTIVE | private=192.168.122.37 |
| a72edc8f-5c48-4996-9eee-c14e210475e7 | winxp-multi             | ACTIVE | private=192.168.122.2  |
| b0ccebdf-222b-4278-8b07-9752a842209f | centos-multi            | ACTIVE | private=192.168.122.17 |
| bc9b9310-bd95-4b6d-99c2-6ab676483734 | ubuntu                  | ACTIVE | private=192.168.122.7  |
| c0164413-03ae-478f-9650-22af081dc3a2 | centos-multi            | ACTIVE | private=192.168.122.18 |
| cc5835b9-da48-4c43-9d16-c42d20442f75 | ubuntu-multi            | ACTIVE | private=192.168.122.10 |
| f834ed8f-9c3c-457d-8688-5584c59e0510 | ubuntu-multi            | ACTIVE | private=192.168.122.12 |
| f8ce484e-52b2-4322-a198-85322a2488c6 | winxp                   | ACTIVE | private=192.168.122.22 |
| fb60ac70-8a62-4ceb-bc86-1d85426d0fe4 | fedora-multi            | ACTIVE | private=192.168.122.13 |
+--------------------------------------+-------------------------+--------+------------------------+

# nova add-floating-ip  05f84edc-010c-4cb6-b8f5-ecd963da7a65 131.154.100.217

# nova list
+--------------------------------------+-------------------------+--------+-----------------------------------------+
|                  ID                  |           Name          | Status |                 Networks                |
+--------------------------------------+-------------------------+--------+-----------------------------------------+
| 05f84edc-010c-4cb6-b8f5-ecd963da7a65 | ubuntu-prova            | ACTIVE | private=192.168.122.11, 131.154.100.217 |
| 0983f56f-46a3-435a-a693-ee53ad4f457b | cirros                  | ACTIVE | private=192.168.122.9                   |
| 15620634-7ff0-4073-90de-c698bc484e3b | fedora-multi            | ACTIVE | private=192.168.122.16                  |
| 177cf5e0-66c1-4bb8-9122-0530e1e919d9 | winxp-multi             | ACTIVE | private=192.168.122.8                   |
| 31afe870-2040-434f-9bd4-54418eb0acb4 | prova-per-volume-centos | ACTIVE | private=192.168.122.5                   |
| 4dcc9def-9de7-448d-9702-8eaf291d3fe6 | winxp-multi             | ACTIVE | private=192.168.122.6                   |
| 509275a8-0b09-48ac-87d0-be7660315bdd | fedora                  | ACTIVE | private=192.168.122.21                  |
| 55f71a66-0467-49d0-9294-a146f858b549 | centos                  | ACTIVE | private=192.168.122.23                  |
| 9c49c426-78bb-4dbd-95a9-7589164692e4 | prova-per-volume        | ACTIVE | private=192.168.122.37                  |
| a72edc8f-5c48-4996-9eee-c14e210475e7 | winxp-multi             | ACTIVE | private=192.168.122.2                   |
| b0ccebdf-222b-4278-8b07-9752a842209f | centos-multi            | ACTIVE | private=192.168.122.17                  |
| bc9b9310-bd95-4b6d-99c2-6ab676483734 | ubuntu                  | ACTIVE | private=192.168.122.7                   |
| c0164413-03ae-478f-9650-22af081dc3a2 | centos-multi            | ACTIVE | private=192.168.122.18                  |
| cc5835b9-da48-4c43-9d16-c42d20442f75 | ubuntu-multi            | ACTIVE | private=192.168.122.10                  |
| f834ed8f-9c3c-457d-8688-5584c59e0510 | ubuntu-multi            | ACTIVE | private=192.168.122.12                  |
| f8ce484e-52b2-4322-a198-85322a2488c6 | winxp                   | ACTIVE | private=192.168.122.22                  |
| fb60ac70-8a62-4ceb-bc86-1d85426d0fe4 | fedora-multi            | ACTIVE | private=192.168.122.13                  |
+--------------------------------------+-------------------------+--------+-----------------------------------------+

-- EnricoFattibene - 2012-10-17

Edit | Attach | PDF | History: r6 < r5 < r4 < r3 < r2 | Backlinks | Raw View | More topic actions...
Topic revision: r4 - 2012-10-22 - EnricoFattibene
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platformCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback