Bug Reference

CLOUDSTACK-241

Branch

regions

https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=shortlog;h=refs/heads/regions

Introduction

Purpose

The objective of this feature is to add AWS EC2 like Regions implementation into CloudStack.  Regions are dispersed and located in separate geographic areas. Availability Zones(or Zones in CloudStack) are distinct locations within a Region that are engineered to be isolated from failures in other Zones and provide inexpensive, low latency network connectivity to other Zones in the same Region

Regions would provide the following benefits:

References

Requirements Doc: ../../../../../../../../../display/CLOUDSTACK/AWS-Style+RegionsRegions requirements

Document History

Glossary

Feature Specifications

Introduce the notion of Regions, which will be managed independently by a separate management servers.  With Regions, infrastructure will be organized as follows:

Region -> Zone -> Pod -> Cluster

Accounts
User Accounts will be available across Regions. User should be able to use the same account in all Regions. 

 Accounts

 User Accounts will be available across Regions. User should be able to use the same account in all Regions. Switching between Regions should not require the user to sign-on again (SSO should be supported).

Templates

 CS Templates are currently zone specific. Templates should be available to all zones within a region. User should be able to migrate templates from one Region to another. This requires S3 like object store

Snapshots

Snapshots also should be available to all zones within a Region. CS currently stores snapshots in secondary storage. Snapshots should instead be stored in the object-store

S3 like Object-store/Integration

Current secondary storage is at zone level. S3 like is object-store or integration with other object-stores(like Hadoop) is required to move data across Regions. Each Region should have object store and the data within it should be available to all zones within the region. Utility to move data across Regions should be supported. Templates and Snapshots will be stored in this object store.

ELB

ELB will be elevated to Region level. ToDo: Add ELB FS 

EIP

ToDo: Add EIP FS link

Authentication Service

 An authentication service will available for components like object-store to authenticate and get account information

Custom Authentication Adapter

Existing UserAuthenticator will be enhanced to support provisioning from directory services like LDAP and Active Directory.

Account can also be auto-provisioned using the directory service

Assumptions

Object Store: This feature assumes that S3 like object store is available. Either implemented in CloudStack or through integrations

Limitations

Usage

Usage records will be generated by each Region separately. Portal layer above CS should combine usage across Regions into a consolidated invoice.

Use cases

  1. Create Account

    Create Account A1 in Region1 (Region Id 1). Propagate account creation to all the remaining Regions. Account creation will fail if account is not created in all the Regions.  Source Region Id for A1 will be 1. External Id for the Account should be same in all Regions. External Ids could be UUID or  username + domainpath or any string which is unique across Regions.  This external ID has to be provided during Account creation. Account DB Ids could be different for each Region. 
  2. Update Account (update/disable/enable Account)

    Account update actions are forwarded to the source Region. After source Region is successfully updated, account update is propagated to the remaining Regions. Account update fails if the source Region cannot be updated or is  unavailable. 
  3. Delete Account

    Delete Account is forwarded to the source Region. After account is successfully  deleted in the source Region, delete is propagated to the other Regions. Account delete fails if the delete in source Region fails  or is  unavailable. 
  4. Login to Region A and move to Region B without providing credentials

Architecture and Design description

Database

Each Region will have a separate database. Below data will be common to all databases across Regions:

  1. Account
  2. User
  3. Domain
  4. Region related meta data

Remaining data is expected to be per-Region and not shared across databases in other Regions. 

Data synchronization

Accounts:

The same applies for Domains.

Authentication

Once logged in User should be able to switch from one Region to another without providing credentials again (Single sign-on?)

Secondary Storage

Snapshots and Templates are currently stored on secondary storage. After snapshots/templates are moved to object store, role of secondary storage will change. There were proposals also to move secondary storage to pod-level.

web services APIs

New APIs

             Parameters

             Parameters

             Parameters

Changes to existing APIs

Upgrade

During upgrade, flexibility will be provided to move existing zones into any Region.

Upgrade scenarios:

UI flow

Appendix

Appendix A:

Appendix B: Edit