Installation et configuration d 'OpenStack (Havana) dans Oracle® Solaris

Quitter la vue de l'impression

Mis à jour : Mai 2016
 
 

Configuration de l'agent Neutron L3

Cette section explique comment créer un réseau virtuel qui représente un réseau externe. Sur ce réseau virtuel, le DHCP n'est pas utilisé. A la place, des adresses IP flottantes sont créées. Ces adresses IP flottantes sont affectées à un locataire spécifique et peuvent être affectées à des instances de machine virtuelle Nova en vue de leur utilisation par les utilisateurs dépendant de ce locataire. L'agent Neutron L3 crée automatiquement des mappages NAT bi-univoques entre les adresses affectées aux instances Nova et les adresses IP flottantes.

L'implémentation Oracle Solaris 11.2 de OpenStack Neutron prend en charge un routeur de fournisseur avec modèle de déploiement de réseaux privés. Dans cet un modèle de déploiement, chaque locataire peut disposer d'au moins un réseau privé, et tous les réseaux locataires partagent le même routeur. L'administrateur de données crée, possède et gère le routeur. Le routeur n'est pas visible dans la vue de la topologie réseau du locataire. Etant donné qu'il n'y a qu'un routeur, les réseaux locataires ne peuvent pas utiliser le chevauchement des adresses IP. L'administrateur crée les réseaux privés pour le compte des locataires.

Par défaut, le routeur, dans ce modèle, empêche le routage entre les réseaux privés qui font partie d'un même locataire : les instances de machine virtuelle à l'intérieur d'un réseau privé ne peuvent pas communiquer avec les instances de machine virtuelle d'un autre réseau privé, même en faisant partie du même locataire. Pour modifier ce comportement, définissez allow_forwarding_between_networks sur True dans le fichier de configuration /etc/neutron/l3_agent.ini et redémarrez le service SMF neutron-l3-agent.

Dans ce modèle, le routeur fournit la connectivité des instances de machine virtuelle du locataire au monde extérieur. Le routeur effectue une NAT bidirectionnelle sur l'interface qui connecte le routeur au réseau externe. Les locataires créent autant d'adresses IP flottantes que nécessaire ou qu'autorisées par le quota d'IP flottantes, puis associent ces IP flottantes aux instances de machine virtuelle qui requièrent une connectivité avec l'extérieur.

La figure suivante illustre le modèle de déploiement Neutron {ENT :OS11u2}. Une description suit la figure.

Figure 9  Routeur de fournisseur avec modèle de réseaux privés

image:Deux locataires, chacun avec deux réseaux internes et deux instances de machine virtuelle

Dans le modèle présenté dans la figure précédente, chaque locataire dispose de deux réseaux internes et de deux instances de machine virtuelle.

Locataire A
  • Réseau HR avec sous-réseau 192.168.100.0/24 et passerelle 192.168.100.1

  • Réseau ENG sous-réseau 192.168.101.0/24 et passerelle 192.168.101.1

  • VM1 connectée à HR avec une adresse IP fixe de 192.168.100.3

  • VM2 connectée à ENG avec une adresse IP fixe de 192.168.101.3

Locataire B
  • Réseau IT avec sous-réseau 192.168.102.0/24 et passerelle 192.168.102.1

  • Réseau ACCT avec sous-réseau 192.168.103.0/24 et passerelle 192.168.103.1

  • VM3 connectée à IT avec une adresse IP fixe de 192.168.102.3

  • VM4 connectée à ACCT avec une adresse IP fixe de 192.168.103.3

Le tableau NAT bidirectionnelle est configuré comme indiqué dans le tableau suivant.

IP interne
IP flottante
192.168.100.3
10.134.13.40
192.168.101.3
10.134.13.9

Toutes les interfaces de passerelle sont instanciées sur le noeud qui exécute le service SMF neutron-l3-agent. Bien qu'un Cloud puisse avoir plusieurs instances Neutron, seul un neutron-l3-agent par Cloud est nécessaire.

Le réseau externe est un réseau fournisseur associé au sous-réseau qui 10.134.13.0/24, qui est accessible par l'extérieur. Les locataires créeront les adresses IP flottantes à partir de ce réseau et les associeront à leurs instances de machine virtuelle. VM1 et VM2 ont des adresses IP flottantes 10.134.13.40 et 10.134.13.9 qui leur sont associées respectivement. VM1 et VM2 sont accessibles par l'extérieur via ces adresses IP.

Le diagramme suivant illustre la façon dont les ressources de locataire sont configurées dans un noeud de réseau et deux noeuds de calcul. Les descriptions de certaines fonctions suivent la figure.

Figure 10  Configuration de l'agent Neutron L3

image:Réseaux internes et instances configurés dans les noeuds de réseau et de calcul
VNIC

Interface réseau virtuelle.

l3e...

L'agent L3 a créé une VNIC sur le réseau externe ("e") où la NAT bidirectionnelle se produit.

l3i...

L'agent L3 a créé une VNIC sur le réseau interne ("i") qui dispose de l'adresse IP de la passerelle par défaut.

La liste ci-dessous présent les modalités d'utilisation des adresses IP dans cet exemple de configuration.

10.134.13.1

Passerelle par défaut

10.134.13.2 - 10.134.13.7

Adresses IP réservées pour exposer les APIs {ENT :OST} (telles que Nova, Cinder, Glance) aux locataires.

10.134.13.9 - 10.134.13.254

Adresses IP flottantes pour les instances de machine virtuelle du locataire

Configuration de l'agent Neutron L3

Cette procédure explique comment utiliser le locataire de servicea fin de créer un routeur, un réseau externe et un sous-réseau externe qui seront utilisés par tous les locataires du centre de données.

Cette procédure est exécutée par l'administrateur de centre de données. Vous devez utiliser la ligne de commande pour configurer le routeur unique partagé et associer des réseaux et des sous-réseaux de différents locataires, car le tableau de bord OpenStack vous permet de gérer les ressources d'un seul locataire à la fois.

Reportez-vous à la Figure 10 pendant l'exécution des opérations ci-après.

Avant de commencer

Vous devez terminer la configuration des réseaux internes avant d'effectuer cette procédure.

  1. Activez la fonctionnalité filtre IP de Solaris.
    network# svcadm enable ipfilter
  2. Activez le transfert IP sur tout l'hôte.
    network# ipadm set-prop -p forwarding=on ipv4
    network# ipadm set-prop -p forwarding=on ipv6
  3. Assurez-vous qu'EVS est correctement configuré et qu'il dispose de l'ID du VLAN requise pour le réseau externe.

    Dans l'exemple suivant, l'ID et les valeurs de plage VLAN sont basées sur la configuration EVS effectuée à l'Step 9.

    network# evsadm show-controlprop -p vlan-range,l2-type
    PROPERTY     PERM    VALUE         DEFAULT    HOST
    l2-type      rw      vlan          vlan       --
    vlan-range   rw      13,1000-2000  --         --
    
  4. Assurez-vous que le locataire de service existe.
    network# keystone tenant-list
  5. Créez le routeur de fournisseur.

    Le routeur de fournisseur est créé comme l'utilisateur neutron OpenStack sous le locataire de service.

    Notez l'UUID (id) du nouveau routeur. Vous en aurez besoin à l'étape suivante.

    network# export OS_USERNAME=neutron
    network# export OS_PASSWORD=neutron-password
    network# export OS_TENANT_NAME=service
    network# export OS_AUTH_URL=http://controller-name:5000/v2.0
    network# neutron router-create provider_router
    Created a new router:
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | True                                 |
    | external_gateway_info |                                      |
    | id                    | 181543df-40d1-4514-ea77-fddd78c389ff |
    | name                  | provider_router                      |
    | status                | ACTIVE                               |
    | tenant_id             | f164220cb02465db929ce520869895fa     |
    +-----------------------+--------------------------------------+
  6. Mettez à jour le fichier de configuration de l'agent L3.

    Mettez à jour la valeur de routeur_id dans le fichier /etc/neutron/l3_agent.ini, à l'aide de l'UUID (id) de routeur de l'étape précédente.

    router_id = 181543df-40d1-4514-ea77-fddd78c389ff  
  7. Activez le service SMF neutron-l3-agent.
    network# svcadm enable neutron-l3-agent
  8. Créez un réseau externe.

    Le réseau virtuel est créé en tant qu'utilisateur neutron {ENT :OST} sous le locataire de service.

    network# neutron net-create --provider:network_type=vlan \
    --provider:segmentation_id=13 --router:external=true external_network
    Created a new network:
    +--------------------------+--------------------------------------+
    | Field                    | Value                                |
    +--------------------------+--------------------------------------+
    | admin_state_up           | True                                 |
    | id                       | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f |
    | name                     | external_network                     |
    | provider:network_type    | vlan                                 |
    | provider:segmentation_id | 13                                   |
    | router:external          | True                                 |
    | shared                   | False                                |
    | status                   | ACTIVE                               |
    | subnets                  |                                      |
    | tenant_id                | f164220cb02465db929ce520869895fa     |
    +--------------------------+--------------------------------------+
  9. Associez un sous-réseau au réseau extérieur.

    Créez un réseau de sous-réseau associé pour le réseau extérieur, en indiquant que le DHCP est désactivé et que le sous-réseau sera utilisé pour le routage externe. Indiquez un sous-réseau IP routable à partir de l'emplacement où les adresses IP seront affectées. Dans cet exemple, le sous-réseau est associé à l'ID de VLAN 13.

    network# neutron subnet-create  --enable-dhcp=False \
    --allocation-pool start=10.134.13.8,end=10.134.13.254 \
    --name external_subnet  external_network 10.134.13.0/24
    Created a new subnet:
    
    +------------------+--------------------------------------------------+
    | Field            | Value                                            |
    +------------------+--------------------------------------------------+
    | allocation_pools | {"start": "10.134.13.8", "end": "10.134.13.254"} |
    | cidr             | 10.134.13.0/24                                   |
    | dns_nameservers  |                                                  |
    | enable_dhcp      | False                                            |
    | gateway_ip       | 10.134.13.1                                      |
    | host_routes      |                                                  |
    | id               | 5d9c8958-0de0-11e4-9d96-e1f29f417e2f             |
    | ip_version       | 4                                                |
    | name             | external_subnet                                  |
    | network_id       | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f             |
    | tenant_id        | f164220cb02465db929ce520869895fa                 |
    +------------------+--------------------------------------------------+
  10. Ajoutez le réseau externe au routeur.

    Dans la commande suivante, la première UUID est l'UUID du provider_router, et la seconde UUID est celle du external_network.

    network# neutron router-gateway-set \
    181543df-40d1-4514-ea77-fddd78c389ff \
    f67f0d72-0ddf-11e4-9d95-e1f29f417e2f
    Set gateway for router 181543df-40d1-4514-ea77-fddd78c389ff
    network# neutron router-list -c name -c external_gateway_info
    +-----------------+--------------------------------------------------------+
    | name            | external_gateway_info                                  |
    +-----------------+--------------------------------------------------------+
    | provider_router | {"network_id": "f67f0d72-0ddf-11e4-9d95-e1f29f417e2f"} |
    +-----------------+--------------------------------------------------------+
  11. Ajoutez les réseaux privés du locataire au routeur.

    Les réseaux affichés par la commande neutron net-list ont été configurés précédemment.

    network# keystone tenant-list
    +----------------------------------+---------+---------+
    |                id                |   name  | enabled |
    +----------------------------------+---------+---------+
    | 511d4cb9ef6c40beadc3a664c20dc354 |   demo  |   True  |
    | f164220cb02465db929ce520869895fa | service |   True  |
    +----------------------------------+---------+---------+
    network# neutron net-list --tenant-id=511d4cb9ef6c40beadc3a664c20dc354
    +-------------------------------+------+------------------------------+
    | id                            | name | subnets                      |
    +-------------------------------+------+------------------------------+
    | c0c15e0a-0def-11e4-9d9f-      | HR   | c0c53066-0def-11e4-9da0-     |
    |  e1f29f417e2f                 |      | e1f29f417e2f 192.168.100.0/24|   
    | ce64b430-0def-11e4-9da2-      | ENG  | ce693ac8-0def-11e4-9da3-     |
    |  e1f29f417e2f                 |      | e1f29f417e2f 192.168.101.0/24|
    +-------------------------------+------+------------------------------+

    Dans la commande suivante, la première UUID est celle du provider_router, et la seconde UUID est celle du sous-réseau HR.

    network# neutron router-interface-add  \
    181543df-40d1-4514-ea77-fddd78c389ff \
    c0c53066-0def-11e4-9da0-e1f29f417e2f       (HR subnet UUID)
    Added interface 7843841e-0e08-11e4-9da5-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.

    Dans la commande suivante, la première UUID est celle du provider_router, et la seconde UUID celle du sous-réseau ENG.

    network# neutron router-interface-add \
    181543df-40d1-4514-ea77-fddd78c389ff \
    ce693ac8-0def-11e4-9da3-e1f29f417e2f
    Added interface 89289b8e-0e08-11e4-9da6-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.

Voir aussi

Création et association des adresses IP flottantes en tant qu'utilisateur locataire

Cette procédure est effectuée par un utilisateur locataire avec le tableau de bord Horizon {ENT :OST}.

  1. Connectez-vous au tableau de bord OpenStack.

    Connectez-vous, comme indiqué dans la section Accès au tableau de bord OpenStack, avec les informations d'identification de l'utilisateur locataire.

  2. Sélectionnez Projet -> Accès et sécurité -> IP flottantes.
  3. Sélectionnez external_network.
  4. Cliquez sur le bouton Allouer IP.

    L'onglet IP flottantes indique que l'adresse IP flottante 10.134.13.9 est allouée.

  5. Cliquez sur le bouton Associer.
  6. Sélectionnez le port de l'instance de machine virtuelle dans le menu déroulant.

    La fenêtre Projet ->Instances indique que l'adresse IP flottante est associée à l'instance de machine virtuelle.

    Si vous avez sélectionné une paire de clés (clé publique SSH) lors du lancement d'une instance de machine virtuelle, cette clé SSH sera ajoutée dans le fichier authorized_keys pour l'utilisateur root de l'instance de machine virtuelle.

  7. Connectez-vous à l'instance de machine virtuelle en cours d'exécution.
    global# ssh root@10.134.13.9
    Last login: Fri Jul 18 00:37:39 2014 from 10.132.146.13
    Oracle Corporation      SunOS 5.11      11.2     June 2014
    root@host-192-168-101-3:~# uname -a
    SunOS host-192-168-101-3 5.11 11.2 i86pc i386 i86pc
    root@host-192-168-101-3:~# zoneadm list -cv
    ID NAME              STATUS      PATH                 BRAND      IP    
     2 instance-00000001 running     /                    solaris    excl 
    root@host-192-168-101-3:~# ipadm
    NAME             CLASS/TYPE STATE     UNDER      ADDR
    lo0              loopback   ok        --         --
       lo0/v4        static     ok        --         127.0.0.1/8
       lo0/v6        static     ok        --         ::1/128
    net0             ip         ok        --         --
       net0/dhcp     inherited  ok        --         192.168.101.3/24

Respect de la configuration de l'agent L3

Vous pouvez utiliser des commandes de filtre IP, telles que ipf, ippool, et ipnat et des commandes de mise en réseau , telles que dladm et ipadm pour respecter et résoudre les problèmes de la configuration effectuée par neutron-l3-agent.

  1. Affichez les VNIC créées par neutron-l3-agent.
    network# dladm show-vnic
    LINK                OVER         SPEED  MACADDRESS        MACADDRTYPE VIDS
    l3i7843841e_0_0     net1         1000   2:8:20:42:ed:22   fixed       200
    l3i89289b8e_0_0     net1         1000   2:8:20:7d:87:12   fixed       201
    l3ed527f842_0_0     net0         100    2:8:20:9:98:3e    fixed       0
  2. Affichez les adresses IP créée par neutron-l3-agent.
    network# ipadm
    NAME                  CLASS/TYPE STATE   UNDER      ADDR
    l3ed527f842_0_0       ip         ok      --         --
      l3ed527f842_0_0/v4  static     ok      --         10.134.13.8/24
      l3ed527f842_0_0/v4a static     ok      --         10.134.13.9/32
    l3i7843841e_0_0       ip         ok      --         --
      l3i7843841e_0_0/v4  static     ok      --         192.168.100.1/24
    l3i89289b8e_0_0       ip         ok      --         --
      l3i89289b8e_0_0/v4  static     ok      --         192.168.101.1/24
  3. Affichez les règles de filtrage IP.
    network# ipfstat -io
    empty list for ipfilter(out)
    block in quick on l3i7843841e_0_0 from 192.168.100.0/24 to pool/4386082
    block in quick on l3i89289b8e_0_0 from 192.168.101.0/24 to pool/8226578
    network# ippool -l
    table role = ipf type = tree number = 8226578
    { 192.168.100.0/24; };
    table role = ipf type = tree number = 4386082
    { 192.168.101.0/24; };
  4. Affichez les règles de filtrage NAT.
    network# ipnat -l
    List of active MAP/Redirect filters:
    bimap l3ed527f842_0_0 192.168.101.3/32 -> 10.134.13.9/32
    List of active sessions:
    BIMAP 192.168.101.3  22  <- -> 10.134.13.9  22 [10.132.146.13 36405]