DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.

DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
regions
https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=shortlog;h=refs/heads/regions
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:
...
Requirements Doc: Regions requirements
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
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 in again
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
...
Object Store: This feature assumes that S3 like object store is available. Either implemented in CloudStack or through integrationsthrough integration.
Templates, Snapshots, EIP and ELP work is not part of this spec. There are being tracked separately as per JIRA tickets mentioned above.
Account Provisioning: Typically account provisioning is external to CloudStack. Adding accounts in all regions and keeping the data in sync is not handled by CloudStack. Only events are generated when changes are made.
(Using external provisioning system)
...
...
...
...
...
...
Similarly for users and domains.
Each Region will have a separate database. Below data will be common to all databases across Regions:
Remaining data is expected to be per-Region(including projects, global config, resource limits) and not shared across databases in other Regions.
...
Table | Columns | Description |
|---|---|---|
region | id | Integer - Unique Id of the Region. Number regions are expected to be small, hence using integer instead of long |
|
|
|
...
Table | New Columns | Description |
|---|---|---|
user | region_id | ID of the source Region |
account | region_id | ID of the source Region |
domain | region_id | ID of the source Region |
Accounts:
The same applies for Domains and Users.
Create: For any resource created in Region A, MS is Region A will publish an event along with external Id of the resource.
Update/Remove: Request is forwarded to the source region.
Events are published using the event framework. Cloud operator is expected to implement consumers for these events and apply the changes in the peer regions.
Once logged in User should be able to switch from one Region to another without providing credentials again
...
Registers a region into another region
Request Parameters:
Admin user api_key/secret_key are used to make sync API calls to peer regions.
Response Parameters:
Updates region details
Request Parameters:
Response Parameters:
Removes region from current region.
Request Parameters:
Response Parameters:
list all Regions. Can be filtered by id or name
Request Parameters:
Response Parameters (List):
Admin only API. Get user details by api_key.
Parameters Request Parameters:
1. Since all update/delete operations are forwarded to the source region (i.e the region where the resource was initially created), if the source region is down, these operations will failAccount/User/Domain data propogation/sync has to be handled outside cloudstack
2. Only events will be generated by cloudstack
During upgrade, flexibility will be provided to move existing zones into any Region.
...
Offline scripts will be provided to move data across regions to ease
...
If an environment has only 1 region, functionality will be same as the current CS installation. Id of this region will be 1. All accounts/users/domains will have region_is as 1id as 1
Default local region will be added with name "Local" and end_point "http://localhost:8080/client". Use updateRegion API to set a different name or end_point for this region
1. Install a 2nd CS instance.
2. Before staring the mgmt server for the 1st time, While installing database set region_id in db.properties(for all mgmt servers in region 2) by adding below lineusing -r option in cloud-setup-databases script (Make sure database_key is same across all regions).
cloud-setup-databases cloud:<dbpassword>@localhost --deploy-as=root:<password> -e <encryption_type> -m <management_server_key> -k <database_key> -r <region_id> region.id=2
3. Start mgmt server
4. Using addRegion API, add region 1 to region 2 and also region 2 to region 1.
5. copy account/user/domain tables from Region1 DB to Region2 DB:
6. Remove project accounts after copying:
7. Set default zone as null
8. Restart mgmt servers in region 2
1. Install CS in all new regions
2. Before staring the mgmt server for the 1st time, While installing database set region_id in db.properties(for all mgmt servers in region N) by adding below lineusing -r option in cloud-setup-databases script (Make sure _database_key _is same across all regions).
cloud-setup-databases cloud:<dbpassword>@localhost --deploy-as=root:<password> -e <encryption_type> -m <management_server_key> -k <database_key> -r <region_id> region.id=<n>
3. Start mgmt server
4. Using addRegion API, add existing regions to region n and also region n to all existing regions
5. copy account/user/domain tables from any existing Region DB to RegionN DB.
1. Ownership of all the resource created in the region being removed(say Region 3) should change to another region. Set region_id =1 (or one of the other regions) for account/user/doman tables where region_id = 3
6. Remove project accounts after copying:
7. Set default zone as null
8. Restart mgmt servers in region N
1. Remove 2. Remove region from all other regions using removeRegion API
...