Do we need to solve the problem? Can we assume the presence of a service that keeps the account data in sync?
For example, a cloud operator might find it acceptable that once a user is provisioned in one region, she gets access to another region after 24 hours. In this case one can envisage a batch upload of account changes every night. On 1/24/13 7:42 AM, "Kishan Kavala" <kishan.kav...@citrix.com> wrote: >Separate account service will solve the data sync problem. But that would >be a very big change and can be probably considered for a later release. > >Accounts/Users/Domains(Resources) need to be in sync across Regions. >Each resource has a source region (The region in which the resource is >created). >All modify/delete API calls will be propagated to source region of the >resource. > >It is the responsibility of the source region to ensure a change is >propagated to all regions. >All this works well when all the regions are up. I'm looking at options >to ensure data is propagated reliably when a regions comes back up after >going down. > >Take account creation for example: > >1. Rollback on failure: Create account in source region. Source region >makes create account API calls to all regions. If create fails is any >region, abort the operation and roll back account creation in regions >where it is created successfully. Account creation will fail even if one >region is down. Rollback of account creation is also not straight >forward. > >2. Retry using region_sync table: Create account in source region. Source >region makes create API calls to all regions. If create fails is any >region, source region makes an entry in region_sync table with following >info (resoucre_id, api_call, failed_region_id). Periodically retry the >API call for failed regions and clear the entry once its successful. > >3. Use 3rd party NOSQL db: Create account in source region. Create an >entry is region_sync table (resoucre_id, api_call, source_region_id). >Additionally use a eventually consistent distributed nosql db (like >Apache Cassandra) in each region. Insert entries in region_sync table to >NOSQL db and this data will be available in all the regions. Each region >will run unprocessed APIs locally and mark them as processed. This >approach will offload the data sync problem to a proven solution like >Cassandra. > >Please let me know your thoughts on the above mentioned approaches. > >________________________________________ >From: Anthony Xu [xuefei...@citrix.com] >Sent: Saturday, January 19, 2013 5:30 AM >To: CloudStack DeveloperList >Subject: RE: Questions related to Regions Feature > >It is not easy to sync/maintain the account information in several >regions. >Is it possible to have a separate account service, cloudstack management >servers in multiple region can consult ? > >Anthony > >> -----Original Message----- >> From: Chiradeep Vittal [mailto:chiradeep.vit...@citrix.com] >> Sent: Friday, January 18, 2013 3:41 PM >> To: CloudStack DeveloperList >> Subject: Re: Questions related to Regions Feature >> >> I think that replication of data to each region (even if it is only for >> account data) is fraught with complexity and should be left to an >> external >> service. >> Can we simplify by assuming that accounts are synced "somehow"? >>