Summary

This blueprint introduces the concept of aggregate into Nova. Host aggregates are different from zones and availability zones: while the former allows the partition of Nova deployments into logical groups for load balancing and instance distribution, the latter are for providing some form of physical isolation and redundancy from other availability zones (e.g. by using separate power supply and network gears). Availability zones do not necessarily mean geographic distribution whereas zones usually do. Host aggregates can be regarded as a mechanism to further partitioning an availability zone, i.e. into multiple groups of hosts that share common resources like storage and network.

Release Note

Support for host aggregates (i.e. clusters, groups or pools of hypervisor hosts) in Nova. The Aggregates concept is another level of scaling for Nova deployments, after zones and availability zones.

Rationale

Host aggregates enable a finer level of granularity in which to structure an entire OpenStack deployment. Aggregates also allow higher availability of a single guest instance within an availability zone, it enables advanced VM placement strategies, and more importantly it enables hosts' zero-downtime upgrades. Aggregates are exposed via Admin OSAPI API. Check OSAPI documentation for more details.

User stories

Host aggreate creation:

PLEASE NOTE: the setup of an aggregate must happen before all the hosts joining the aggregate can be fully operational (i.e. allowed to serve requests like VM creation). To this aim, nova-compute may need a new flag that tells the service to register with the Nova infrastructure, but at the same time being in disabled mode. The service status can then be switched to 'enabled' as soon as the host joins an aggregate.

Host maintenance:

Assumptions

For further details, see implementation section below.

Design

The OSAPI Admin API will be extended to support the following operations:

Implementation

Please read the notes below for further details on the first cut of the implementation.

Targets for blueprint implementation:

UI Changes

Extensions may be provided to Horizon to support Admin tasks, like aggregates creation and management. However the nova cli client is expected to provide the following operations:

  * aggregate-list                                                    Print a list of all aggregates.
  * aggregate-create         <name> <availability_zone>               Create a new aggregate with the specified details.
  * aggregate-delete         <id>                                     Delete the aggregate by its id.
  * aggregate-details        <id>                                     Show details of the specified aggregate.
  * aggregate-add-host       <id> <host>                              Add the host to the specified aggregate.
  * aggregate-remove-host    <id> <host>                              Remove the specified host from the specfied aggregate.
  * aggregate-set-metadata   <id> <key=value> [<key=value> ...]       Update the metadata associated with the aggregate.
  * aggregate-update         <id> <name> [<availability_zone>]        Update the aggregate's name and optionally availablity zone.

Code Changes

Changes are well confined, and can be seen at the following reviews:

For full details see blueprint page on Launchpad.

Migration

Because of the introduction of new abstractions to the Nova conceptual model, DB Schema may be required. Migration file can be seen in https://review.openstack.org/#change,3035.

Test/Demo Plan

Extensive unit test coverage has been added. Further tests will be added to exercise.sh available via devstack. More details to follow.

Unresolved issues

None.

BoF agenda and discussion

None.


CategorySpec

Wiki: host-aggregates (last edited 2012-02-23 17:55:06 by armandomi)