Getting Started with OpenStack for DPM

This section gets you started with OpenStack for DPM.

It assumes

  • an existing OpenStack controller, in which the OpenStack components specific to DPM will be integrated

  • A system where the new compute node for DPM can be installed.

    This can either be a separate system but could also be the controller node itself (single node setup). Fore more information on topology see the doc Topology.

Compute

The following actions are done for the compute node.

  1. Install the following packages
  1. Configure the nova-compute service for DPM

    Make sure you can answer the following questions:

    • On which CPC should the OpenStack instances run?
    • Which HMC manages that CPC?

    The following questions help to define the scope of the CPC subset. For more details on CPC subsets see the chapter Topology.

    • Which name should be used to identify this subset of the CPC? By default the hostname of the compute node is taken.

    • How many partitions of this CPC should OpenStack be able to consume?

    • What is the maximum number of shared IFL processors that OpenStack can assign to a single instance?

      Note

      OpenStack does not use those processors exclusively. These processors are still shared with non-OpenStack partitions.

    • What is the maximum amount of memory that can be consumed by all OpenStack instances on this CEC?

      Note

      This memory is not being reserved upfront. It’s only consumed when an instance is using it. It can happen, that none-OpenStack partitions consume that much memory that the defined maximum cannot be exploited by OpenStack. Therefore it’s important to consider this number in the CECs memory pre-planing.

    • Which storage adapter ports should be used for attaching FCP storage?

    With this information you should be able to create the corresponding configuration file with the help of the Configuration documentation.

  2. Start the nova-compute service

    # /usr/bin/python /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf
    

    Note

    The file nova.conf must contain all the DPM specific configuration options.

  3. Verify if the service is running

    # openstack compute service list
    +----+------------------+----------+----------+---------+-------+----------------------------+
    | ID | Binary           | Host     | Zone     | Status  | State | Updated At                 |
    +----+------------------+----------+----------+---------+-------+----------------------------+
    |  4 | nova-conductor   | control1 | internal | enabled | up    | 2017-02-22T10:31:08.000000 |
    |  5 | nova-scheduler   | control1 | internal | enabled | up    | 2017-02-22T10:31:01.000000 |
    |  6 | nova-consoleauth | control1 | internal | enabled | up    | 2017-02-22T10:31:08.000000 |
    |  7 | nova-compute     | subset_1 | nova     | enabled | up    | 2017-02-22T10:30:59.000000 |
    +----+------------------+----------+----------+---------+-------+----------------------------+
    

    -> Amongst others a nova-compute service for the chosen subset host name (subset_1) should show up.

    # openstack hypervisor list
    +----+---------------------+-----------------+-----------------+-------+
    | ID | Hypervisor Hostname | Hypervisor Type | Host IP         | State |
    +----+---------------------+-----------------+-----------------+-------+
    |  1 | subset_1            | PRSM            | xxx.xxx.xxx.xxx | up    |
    +----+---------------------+-----------------+-----------------+-------+
    

    -> A hypervisor of type PRSM using the same hostname like above should show up.

Storage

There is no storage related service required on the compute node. The compute node does not require a FCP storage attachment at all.

On the storage node the cinder volume service must be configured for FCP usage.

For more details see Storage Support.

Networking

  1. Install the following Python packages on the compute node for DPM and the existing controller node
  1. Configure the Neutron DPM mechanism driver on the existing controller node

    The DPM mechanism driver must be configured to be used by the Neutron server’s ML2 plug-in. Other drivers required by the network node might be configured in parallel. For more details see the configuration documentation. After the configuration change the Neutron server must be restarted to apply the changes.

  2. Configure the Neutron DPM agent on the compute node for DPM

    Make sure you can answer the following questions:

    • Which network adapter ports should be used for instances created by OpenStack?

      • The list of supported network adapters can be found here.
    • How many logical networks are required? A dedicated adapter port is required for each physical (and therefore for each logical) network (with flat networking, the mapping between a physical and a logical network is 1:1).

    With this information and the help of the configuration documentation you should be able to create the Neutron DPM agent configuration file.

  3. Start the Neutron DPM agent on the compute node for DPM

    /usr/bin/python /usr/local/bin/neutron-dpm-agent --config-file /etc/neutron/plugins/ml2/neutron_dpm_agent.conf
    

    Note

    The file neutron_dpm_agent.conf must contain all the DPM specific configuration options. In addition it must specify the CPCSubset that it belongs to in the host variable of the DEFAULT section.

  4. Verify if the agent is running

    # openstack network agent list
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    | ID                                   | Agent Type         | Host     | Availability Zone | Alive | State | Binary                    |
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    | 0d9ec043-9dcf-478c-a4df-56c93e516ca8 | DPM agent          | subset_1 | None              | True  | UP    | neutron-dpm-agent         |
    | 42264083-e90d-4e7e-9b4f-0675e282d1ef | Metadata agent     | control1 | None              | True  | UP    | neutron-metadata-agent    |
    | 6d2dbc59-db7b-4f34-9c5f-8fe9935ad824 | Open vSwitch agent | control1 | None              | True  | UP    | neutron-openvswitch-agent |
    | af25dea7-1895-4b81-b087-8e30101d2475 | DHCP agent         | control1 | nova              | True  | UP    | neutron-dhcp-agent        |
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    

    -> Amongst others a neutron-dpm-agent for the chosen subset host name (subset_1) should be alive.

    # openstack network agent show 0d9ec043-9dcf-478c-a4df-56c93e516ca8
    +-------------------+-------------------------------------------------------------------------------------------------------------------+
    | Field             | Value                                                                                                             |
    +-------------------+-------------------------------------------------------------------------------------------------------------------+
    | admin_state_up    | UP                                                                                                                |
    | agent_type        | DPM agent                                                                                                         |
    | alive             | True                                                                                                              |
    | availability_zone | None                                                                                                              |
    | binary            | neutron-dpm-agent                                                                                                 |
    | configuration     | {u'extensions': [], u'adapter_mappings': {u'provider': [u'3ea09d2a-b18d-11e6-89a4-42f2e9ef1641']}, u'devices': 0} |
    | created_at        | 2017-02-22 11:47:57                                                                                               |
    | description       | None                                                                                                              |
    | host              | subset_1                                                                                                          |
    | id                | 0d9ec043-9dcf-478c-a4df-56c93e516ca8                                                                              |
    | last_heartbeat_at | 2017-02-22 12:12:57                                                                                               |
    | name              | None                                                                                                              |
    | started_at        | 2017-02-22 11:47:57                                                                                               |
    | topic             | N/A                                                                                                               |
    +-------------------+-------------------------------------------------------------------------------------------------------------------+
    

    -> The configuration option should show an adapter mapping. It’s not exactly the same mapping as it was provided in the agents configuration file. It’s a translated mapping, where the physical network is mapped to a vswitch object-id.

Spawning an instance

  1. Creating a initial network

    Assuming that the Neutron DPM agent configuration physical_network_adapter_mappings contains a physical network called provider.

    # openstack network create --provider-physical-network provider --provider-network-type flat provider
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | availability_zone_hints   |                                      |
    | availability_zones        |                                      |
    | created_at                | 2017-02-22T12:46:35Z                 |
    | description               |                                      |
    | dns_domain                | None                                 |
    | id                        | 49887552-ea35-41ca-aba2-2df2bb59896d |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | is_default                | None                                 |
    | mtu                       | 1500                                 |
    | name                      | test-net                             |
    | port_security_enabled     | True                                 |
    | project_id                | 561a226832eb4eabb50b05d21c46d9bb     |
    | provider:network_type     | flat                                 |
    | provider:physical_network | provider                             |
    | provider:segmentation_id  | None                                 |
    | qos_policy_id             | None                                 |
    | revision_number           | 3                                    |
    | router:external           | Internal                             |
    | segments                  | None                                 |
    | shared                    | False                                |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | updated_at                | 2017-02-22T12:46:35Z                 |
    +---------------------------+--------------------------------------+
    
    # openstack subnet create --dhcp --subnet-range 192.168.222.0/24 --network provider provider_subnet
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 192.168.222.2-192.168.222.254        |
    | cidr              | 192.168.222.0/24                     |
    | created_at        | 2017-02-22T12:47:09Z                 |
    | description       |                                      |
    | dns_nameservers   |                                      |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 192.168.222.1                        |
    | host_routes       |                                      |
    | id                | d6e641a7-8c42-43a6-a3e1-193de297f494 |
    | ip_version        | 4                                    |
    | ipv6_address_mode | None                                 |
    | ipv6_ra_mode      | None                                 |
    | name              | provider_subnet                      |
    | network_id        | 49887552-ea35-41ca-aba2-2df2bb59896d |
    | project_id        | 561a226832eb4eabb50b05d21c46d9bb     |
    | revision_number   | 2                                    |
    | segment_id        | None                                 |
    | service_types     |                                      |
    | subnetpool_id     | None                                 |
    | updated_at        | 2017-02-22T12:47:09Z                 |
    +-------------------+--------------------------------------+
    
  2. Check the existing images:

    # openstack image list
    +--------------------------------------+--------------------------+--------+
    | ID                                   | Name                     | Status |
    +--------------------------------------+--------------------------+--------+
    | a249ef36-74d1-48fb-8d65-c4d532fa68e6 | dpm_image                | active |
    +--------------------------------------+--------------------------+--------+
    
  3. Create a volume based on an image:

    # openstack volume create  --image a249ef36-74d1-48fb-8d65-c4d532fa68e6  --size 15 dpm_volume1
    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | attachments         | []                                   |
    | availability_zone   | nova                                 |
    | bootable            | true                                 |
    | consistencygroup_id | None                                 |
    | created_at          | 2017-02-22T14:42:27.013674           |
    | description         | None                                 |
    | encrypted           | False                                |
    | id                  | 25307859-e227-4f2b-82f8-b3ff3d5caefd |
    | migration_status    | None                                 |
    | multiattach         | False                                |
    | name                | vol_andreas                          |
    | properties          |                                      |
    | replication_status  | None                                 |
    | size                | 15                                   |
    | snapshot_id         | None                                 |
    | source_volid        | 3d5f72ec-9f1d-41fe-8bac-77bc0dc1e930 |
    | status              | creating                             |
    | type                | v7kuni                               |
    | updated_at          | None                                 |
    | user_id             | 0a6eceb0f73f4f37a0fce8936a1023c4     |
    +---------------------+--------------------------------------+
    
  4. Wait until the volume status changed to “available”:

    # openstack volume list
    +--------------------------------------+--------------+-----------+------+-------------+
    | ID                                   | Display Name | Status    | Size | Attached to |
    +--------------------------------------+--------------+-----------+------+-------------+
    | 25307859-e227-4f2b-82f8-b3ff3d5caefd | dpm_volume1  | available |   15 |             |
    +--------------------------------------+--------------+-----------+------+-------------+
    
  5. Check the existing flavors:

    # openstack flavor list
    +-------+-----------+-------+------+-----------+-------+-----------+
    | ID    | Name      |   RAM | Disk | Ephemeral | VCPUs | Is Public |
    +-------+-----------+-------+------+-----------+-------+-----------+
    | 1     | m1.tiny   |   512 |    1 |         0 |     1 | True      |
    | 2     | m1.small  |  2048 |   20 |         0 |     1 | True      |
    +-------+-----------+-------+------+-----------+-------+-----------+
    
  6. Boot the instance:

    # openstack server create --flavor m1.small --volume dpm_volume1 --nic net-id=$(openstack network list | awk '/test-net/ {print $2}') dpm_server1
    +-------------------------------------+--------------------------------------+
    | Field                               | Value                                |
    +-------------------------------------+--------------------------------------+
    | OS-DCF:diskConfig                   | MANUAL                               |
    | OS-EXT-AZ:availability_zone         |                                      |
    | OS-EXT-SRV-ATTR:host                | None                                 |
    | OS-EXT-SRV-ATTR:hypervisor_hostname | None                                 |
    | OS-EXT-SRV-ATTR:instance_name       |                                      |
    | OS-EXT-STS:power_state              | NOSTATE                              |
    | OS-EXT-STS:task_state               | scheduling                           |
    | OS-EXT-STS:vm_state                 | building                             |
    | OS-SRV-USG:launched_at              | None                                 |
    | OS-SRV-USG:terminated_at            | None                                 |
    | accessIPv4                          |                                      |
    | accessIPv6                          |                                      |
    | addresses                           |                                      |
    | adminPass                           | TbLsiNT8rN3n                         |
    | config_drive                        |                                      |
    | created                             | 2017-02-22T14:46:24Z                 |
    | flavor                              | m1.small (2)                         |
    | hostId                              |                                      |
    | id                                  | 9b44589c-cd91-4b67-9a9f-2ec88ad1c27d |
    | image                               |                                      |
    | key_name                            | None                                 |
    | name                                | dpm_server1                          |
    | progress                            | 0                                    |
    | project_id                          | e2e0784ca1b64d6cae07d3c6e8d4bcff     |
    | properties                          |                                      |
    | security_groups                     | name='default'                       |
    | status                              | BUILD                                |
    | updated                             | 2017-02-22T14:46:24Z                 |
    | user_id                             | 0a6eceb0f73f4f37a0fce8936a1023c4     |
    | volumes_attached                    |                                      |
    +-------------------------------------+--------------------------------------+