Jump to: navigation, search

InstanceAvailabilityZones

Revision as of 23:31, 17 February 2013 by Ryan Lane (talk | contribs) (Text replace - "NovaSpec" to "NovaSpec")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  • Launchpad Entry: NovaSpec:instance-avail-zones
  • Created: 2011-01-12
  • Contributors: Eldar Nugaev, Ilya Alekseyev

Summary

We need the ability to schedule instances by availability zones. Each compute service has its own availability zone.

Release Note

This set of changes provides to end users ability to choose availability zone when they start instances. Deployment engineers will have an option to run scheduler with availability zones support and could configure availability zones on each compute host.

Rationale

User stories

We should allocate pair of HA servers on different hosts in different power zones or data centers.

Assumptions

Design

The "availability zone" feature of OpenStack allows a user to schedule new instances in defined placement. There are two types of availability zones possible, an "instance availability zone" which defines the placement for allocation virtual machines and "volume availability zone" which defines the placement for allocation block storage devices. Each service in the process of creation gets availability zone from flags (FLAGS.node_availability_zone).

Implementation

Current blueprint implements scheduling for "instance availability zones". We suppose "volume availability zones" should be implemented similarly as future work.

UI Changes

Code Changes

EC2 API (we replaced faked methods describe_availability zones to real one) Scheduler (we added new scheduler (ZoneScheduler) which makes decision by the availability_zone field) DB db/sqlalchemy/models.py (we added availability_zone field into Service)

Migration

Ability to use availability zones for compute service could be achieved using flag scheduler_driver (FLAGS.scheduler_driver) equal to 'nova.scheduler.zone.ZoneScheduler'. Availability zone for each host with compute service could be configured using flag node_availability_zone (FLAGS.node_availability_zone).

Test/Demo Plan

Unit tests provided.

Unresolved issues

We should add availability zones support for volume service.

BoF agenda and discussion