This blueprint was created to add Multi-Region Swift support to OSAD. It will lay out a series of use cases to define the requirements of Multi-Region Swift within OSAD.
A Swift cluster can be deployed in such a way that the cluster spans multiple geographically dispersed data centers. This allows an end-user to ensure resiliency in the event of a data center failure, with one or more copies of an object stored in each data center location. This facilitates end-users being able to build out geographically dispersed infrastructure, enabling high availability.
As a User I want to be able to store or retrieve objects in any location of a multi-location object storage solution, using the same credentials.
As a User, I want my default object storage/retrieval location to be as close to my location as possible - by specifying the closest endpoint and having that endpoint access the closest storage locations.
As an Administrator, I want to be able to set a global storage policy that enables me to specify the number of copies of every object to be stored in each location of the multi-location object storage based on one of the following predefined scenarios:
- With 3 or more storage deployments, each location is considered to be as important as any other location. The same number of copies should be kept in each location.
- With 3 storage deployments we consider 1 to be the primary and the other 2 as geographically convenient locations for read purposes. There should be 2 copies in the primary location and 1 in each of the other locations.
- With 2 storage deployments, we consider 1 to be the primary location and the other a “backup” location. There should be 2 copies in the primary location and 1 copy in the “backup” location.
As a User, I want to be assured durability of my content under various circumstances, such as:
- Initial upload to single location. i.e. in the case of uploading an object to location A in a 3 location solution where the global policy is 1 locally, 1 in each remote - until the 2 remote objects are confirmed, the local object storage cluster will have 3 copies.
- Failure of 1 or more locations. i.e. In a 3 location solution where the global policy is 1 locally, 1 in each remote - if location A fails, either location B or C will generate a second copy of the ‘missing’ objects to ensure that there are always 3 copies.
As an Administrator, I want to be able to override the global storage policy at a container level in order to increase or reduce replication. For example:
- One or more containers can have an alternate policy specified at the container level that overrides the global policy. If the global policy in a 3 location solution is 1 locally and 1 in each remote, one or more container can be configured to a 3 locally policy.
As a User, where the global storage policy has been configured to replicate objects across locations, I want to be able to retrieve my objects from an alternate location in the event of a failure of my default location.
As an Administrator, I want to be assured that when replicating data from the primary location to the remote locations the data is secured and not transmitted in the clear.
We could not enable swift multi-region support.
Whilst the Multi-Region component will be optional, we will need to implement the following changes without adjusting how the current default operates:
This should have no upgrade impact.
Since swift does not handle encryption of objects this will need to be handled externally to swift.
The user will now have the option to configure a Multi-Region Swift cluster. The default will remain the same, so it should not impact any users who do not wish to utilise a Multi-Region Swift cluster.
A deployer will be able to adjust the inventory across multiple deploys to ensure a global swift cluster operating unformly for all deploys.
As this will require two independent installations of swift we won’t add anything specific to the gate to automatically test this. However the changes should not adjust how current tests work and all changes will need to ensure that existing tests continue to pass.