Project

General

Profile

Rgw - active-active architecture

Summary

Current multizone RGW setup is only master-slave. In a single region we can only have a single master zone, and all data will be replicated to other slave zones. We plan to make it possible to change that behavior and have all zones in a single region writable. Also, we'll probably rename Region to Zone-Group due to some confusion.

Requirements:
The ability to write data on any zone within a single region, have the data sync happen between all zones (in that region)
No change in metadata propagation

Owners

  • Yehuda Sadeh (Red Hat)
  • Name (Affiliation)
  • Name

Interested Parties

  • Name (Affiliation)
  • Name (Affiliation)
  • Name

Current Status

One master region, zero or more slave regions.
For each region, one master zone, zero or more secondary zones.
Data sync only happen from master zone to secondary zones
Metadata updates happen on master region

Detailed Description

still designate a master zone for metadata changes
all zones within a single region follow all other zones for data sync
all zones within a single region will allow write (unless configured otherwise)
sync agent per zone will follow all relevant zones
bucket index log will contain source zone, and source bucket index log id, for each operation
replica log will hold a list of buck index log states for each bucket instance, one per zone (instead of a single state for the master zone)
extend system user copy operation that is used by the sync agent to be able to set source bucket index log op id for each op
sync agent will set bucket index op id on each object sync operation
extend rgw copy operation to be able to do conditional copy that will check target object modification time (copy if older)
sync agent will use the new conditional copy option

Work items

Coding tasks

  1. Task 1
  2. Task 2
  3. Task 3

Build / release tasks

  1. Task 1
  2. Task 2
  3. Task 3

Documentation tasks

  1. Task 1
  2. Task 2
  3. Task 3

Deprecation tasks

  1. Task 1
  2. Task 2
  3. Task 3