[Openstack] [Swift] Allowing clients to write to separate regions

Shrinand Javadekar shrinand at maginatics.com
Tue Jun 24 00:38:43 UTC 2014


Hi,

I am trying to understand the notion of "regions" in Swift. To start
with, it's kinda confusing that the notion of "region" in Keystone is
not exactly the same as that of Swift. So I could authenticate with
Keystone, get a Swift endpoint for a region (Keystone's notion of a
region) and write/read data. That could then possibly translate to
data writes/reads from another region (Swift's notion of a region).

So, as per the example in [1], let's say I have two regions: SF and
NYC. I would like the have clients write to the most local region. How
do I achieve this? I am *not* looking to use container-sync.

I had a quick word about this on the #openstack-swift irc channel.
Asking over email for better clarity and more details. I believe the
way to go about this would be:

(1) Have two Swift proxy servers in each region. Configure DNS such
that the domain name of the Swift proxy server resolves to the
"closest" node.

Each of these proxy servers will be configured with read/write
affinity to object servers in its region.

This is great because it means I only have to use one endpoint.

(2) Have two Swift proxy servers in each region with separate IPs.
Inform clients about the closest endpoints and let clients write to
the correct proxy servers. If they make a mistake, data can still get
written to the in-correct node.

Any other way? Is there a way to query the available regions (say a
latency test) and use the one which is fastest to reach?

Thanks in advance.
-Shri




More information about the Openstack mailing list