Instalación y configuración de OpenStack (Havana) en Oracle® Solaris

Salir de la Vista de impresión

Actualización: Mayo de 2016
 
 

Configuración del agente Neutron L3

Esta sección muestra cómo crear una red virtual que representa una red externa. En esta red virtual, DHCP no se usa. En su lugar, se crean direcciones IP flotantes. Estas direcciones IP flotantes se asignan a un cliente particular y se pueden asignar a instancias de VM de Nova para uso por usuarios con ese cliente. El agente Neutron L3 crea automáticamente asignaciones NAT de uno a uno entre las direcciones asignadas a instancias de Nova y las direcciones IP flotantes.

La implementación de Oracle Solaris 11.2 de OpenStack Neutron admite un enrutador de proveedor con un modelo de implementación de redes privadas. En este modelo de implementación, cada cliente tendrá una o más redes privadas y todas las redes cliente compartirán el mismo enrutador. El administrador de datos crea, posee y gestiona el enrutador. El enrutador no está visible en la vista de topología de red del cliente. Dado que hay solamente un único enrutador, las redes cliente no pueden usar direcciones IP superpuestas. El administrador crea las redes privadas en nombre de los inquilinos.

De manera predeterminada, el enrutador de este modelo evita el enrutamiento entre las redes privadas que son parte del mismo cliente: las instancias de VM dentro de una red privada no se pueden comunicar con las instancias de VM de otra red privada, aunque sean todas parte del mismo cliente. Para cambiar este comportamiento, defina allow_forwarding_between_networks en Trueen el archivo de configuración /etc/neutron/l3_agent.ini y reinicie el servicio SMF neutron-l3-agent.

El enrutador de este modelo proporciona conectividad al exterior para las instancias de VM del cliente. El enrutador realiza NAT bidireccional en la interface que conecta el enrutador a la red externa. Los clientes crean tantas IP flotantes (IP públicas) como necesitan o como permite la cuota de IP flotante y, a continuación, asocian estas IP flotantes con las instancias de VM que requieren conectividad externa.

La siguiente figura ilustra el modelo de implementación de Oracle Solaris 11.2. Debajo de la figura se muestra una descripción.

Figura 9  Enrutador de proveedor con modelo de redes privadas

image:Dos clientes, cada uno con dos redes internas y dos instancias de VM

En el modelo que se muestra en la figura anterior, cada cliente tiene dos redes internas y dos instancias de VM.

Cliente A
  • Red HR con subred 192.168.100.0/24 y puerta de enlace 192.168.100.1

  • Red ENG con subred 192.168.101.0/24 y puerta de enlace 192.168.101.1

  • VM1 conectado a HR con una dirección IP fija 192.168.100.3

  • VM2 conectado a ENG con una dirección IP fija 192.168.101.3

Cliente B
  • Red IT con subred 192.168.102.0/24 y puerta de enlace 192.168.102.1

  • Red ACCT con subred 192.168.103.0/24 y puerta de enlace 192.168.103.1

  • VM3 conectado a IT con una dirección IP fija 192.168.102.3

  • VM4 conectado a ACCT con una dirección IP fija 192.168.103.3

La tabla NAT bidireccional se configura como se muestra en la siguiente tabla.

IP Interna
IP flotante
192.168.100.3
10.134.13.40
192.168.101.3
10.134.13.9

Todas las instancias de las interfaces de puerta de enlace se crean en el nodo que se ejecuta en el servicio SMF de neutron-l3-agent. Aunque una nube puede tener varias instancias de Neutron, necesita solamente un neutron-l3-agent por nube.

La red externa es una red de proveedor asociada con la subred 10.134.13.0/24, a la que se puede acceder desde el exterior. Los clientes crearán direcciones IP flotantes desde esta red y las asociarán a sus instancias de VM. VM1 y VM2 tienen las IP flotantes 10.134.13.40 y 10.134.13.9 asociadas, respectivamente. Se puede acceder a VM1 y VM2 desde el exterior mediante estas direcciones IP.

El siguiente diagrama muestra cómo se configuran estos recursos de cliente en un nodo de red y dos nodos de cálculo. Debajo de la figura, se muestran descripciones de algunas de las funciones de la figura.

Figura 10  Configuración del agente Neutron L3

image:Redes internas e instancias de VM configuradas en los nodos de red y cálculo
VNIC

Interfaz de red virtual.

l3e...

El agente L3 agent creó una VNIC en la red externa (“e”), donde se produce la NAT bidireccional.

l3i...

El agente L3 creó una VNIC en la red interna (“i”) que tiene la dirección IP de puerta de enlace predeterminada.

La siguiente lista muestra cómo se usarán las direcciones IP en esta configuración de ejemplo.

10.134.13.1

Puerta de enlace predeterminada

10.134.13.2 - 10.134.13.7

Direcciones IP reservadas para mostrar API de OpenStack (como Nova, Cinder, Glance) a los clientes

10.134.13.9 - 10.134.13.254

Direcciones IP flotantes para las instancias de VM de cliente

Cómo configurar el agente Neutron L3

Este procedimiento muestra cómo usar el cliente service para crear un enrutador, una red externa o una subred externa que será usada por todos los clientes del centro de datos.

El administrador del centro de datos lleva a cabo este procedimiento. Debe usar la línea de comandos para configurar el enrutador único compartido y asociar redes y subredes de distintos inquilinos porque el panel de control de OpenStack le permite gestionar los recursos solamente un inquilino uno por vez.

Consulte Figura 10 para realizar los siguientes pasos.

Antes de empezar

Debe realizar la configuración de las redes internas antes de realizar este procedimiento.

  1. Active la funcionalidad de filtro IP de Solaris.
    network# svcadm enable ipfilter
  2. Active el reenvío de IP en todo el host.
    network# ipadm set-prop -p forwarding=on ipv4
    network# ipadm set-prop -p forwarding=on ipv6
  3. Asegúrese de que EVS esté configurado correctamente y de que tenga el ID de VLAN necesario para la red externa.

    En el siguiente ejemplo, el ID de VLAN y los valores de rango se basan en la configuración de EVS definida en 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. Asegúrese de que exista el cliente service.
    network# keystone tenant-list
  5. Cree el enrutador de proveedor.

    El enrutador de proveedor se crea como usuario neutron de OpenStack en el cliente service.

    Observe el UUID (id) del nuevo enrutador. Lo usará en el próximo paso.

    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. Actualice el archivo de configuración del agente L3.

    Actualice el valor de router_id en el archivo /etc/neutron/l3_agent.ini, con el UUID (id) del enrutador del paso anterior.

    router_id = 181543df-40d1-4514-ea77-fddd78c389ff  
  7. Active el servicio SMF de neutron-l3-agent.
    network# svcadm enable neutron-l3-agent
  8. Cree una red externa.

    La red virtual se crea como usuario neutron de OpenStack en el cliente 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. Asocie una subred a la red externa.

    Cree una subred asociada para la red externa, especifique que DHCP está desactivado y que la subred se usará para enrutamiento externo. Especifique una subred IP enrutable desde donde se asignarán las direcciones IP flotantes. En este ejemplo, la subred está asociada con el ID 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. Agregue la red externa al enrutador.

    En el siguiente comando, el primer UUID es el UUID provider_router y el segundo UUID es el UUID 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. Agregue las redes privadas del cliente al enrutador.

    Las redes que muestra el comando neutron net-list se configuraron anteriormente.

    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|
    +-------------------------------+------+------------------------------+

    En el siguiente comando, el primer UUID es el UUID provider_router y el segundo UUID es el UUID de la subred 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.

    En el siguiente comando, el primer UUID es el UUID provider_router y el segundo UUID es el UUID de la subred 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.

Véase también

Cómo crear y asociar direcciones IP flotantes como usuario cliente

Un usuario cliente realiza esta procedimiento mediante el panel de control de OpenStack Horizon.

  1. Inicie sesión en el panel de control de OpenStack.

    Inicie sesión tal como se describe en Cómo acceder al panel de control de OpenStack, con las credenciales del usuario cliente.

  2. Seleccione Proyecto -> Acceso y seguridad -> IP flotantes.
  3. Seleccione external_network.
  4. Haga clic en el botón Asignar IP.

    El separador IP flotantes muestra que la dirección IP flotante 10.134.13.9 está asignada.

  5. Haga clic en el botón Asociar.
  6. En el menú desplegable, seleccione el puerto de la instancia de VM.

    La ventana Proyecto -> Instancias muestra que la dirección IP flotante está asociada con la instancia de VM.

    Si seleccionó un par de claves (clave pública SSH) cuando inició una instancia de VM, entonces esa clave SSH se agregará al archivo authorized_keys para el usuario root en la instancia de VM.

  7. Inicie sesión en la instancia de VM en ejecución.
    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

Cómo observar la configuración de agente L3

Puede usar comandos de filtro IP, como ipf, ippool y ipnat, y comandos de redes, como dladm y ipadm, para observar y resolver el problema de la configuración realizada por neturon-l3-agent.

  1. Muestre las VNIC creadas por 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. Muestre las direcciones IP creadas por 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. Muestre las reglas de filtro 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. Muestre las reglas de IP 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]