Skip to content

Multi-Region Deployment

This guide covers deploying flexFS across multiple cloud regions with proxy groups acting as regional edge caches. This architecture reduces cross-region data transfer costs and latency for read-heavy workloads.

In a multi-region deployment:

  1. Metadata and block storage reside in a primary region (e.g., us-east-1).
  2. Proxy groups are deployed in each compute region to cache block data locally.
  3. Mount clients automatically select the lowest-latency proxy group via RTT probing.

Use configure.flexfs to set up each region:

Terminal window
configure.flexfs create provider --code aws --name "Amazon Web Services"
configure.flexfs create region --providerCode aws --code us-east-1 --name "US East (Virginia)"
configure.flexfs create region --providerCode aws --code eu-west-1 --name "EU West (Ireland)"
configure.flexfs create region --providerCode aws --code ap-southeast-1 --name "Asia Pacific (Singapore)"

Create a block store in your primary region:

Terminal window
configure.flexfs create block-store \
--providerCode aws --regionCode us-east-1 \
--apiCode s3 --bucket my-flexfs-blocks \
--username $USERNAME --password $PASSWORD

Register the metadata server:

Terminal window
configure.flexfs create meta-store \
--providerCode aws --regionCode us-east-1 \
--address meta.us-east-1.example.com:443

Deploy proxy.flexfs in each satellite region. On each proxy host:

Terminal window
proxy.flexfs init creds
proxy.flexfs init systemd
manage.flexfs start proxy

Create a proxy group for each region:

Terminal window
configure.flexfs create proxy-group \
--providerCode aws --regionCode eu-west-1 \
--addresses proxy-eu-1.example.com:443,proxy-eu-2.example.com:443
configure.flexfs create proxy-group \
--providerCode aws --regionCode ap-southeast-1 \
--addresses proxy-ap-1.example.com:443

Step 5: Associate Proxy Groups with Volumes

Section titled “Step 5: Associate Proxy Groups with Volumes”
Terminal window
configure.flexfs create volume-proxy-group \
--volumeID my-volume --proxyGroupID 1
configure.flexfs create volume-proxy-group \
--volumeID my-volume --proxyGroupID 2

Mount clients in any region will automatically:

  1. Discover all proxy groups associated with the volume.
  2. Measure RTT to each group.
  3. Select the lowest-latency group.
  4. Fall back to direct object storage if no proxy is reachable.
Terminal window
mount.flexfs start my-volume /mnt/flexfs
  • Write path: Writes always go to the primary block store. Proxy groups serve reads from cache and perform writeback for writes.
  • Cache warming: The first read of a block in a new region goes to object storage. Subsequent reads are served from the proxy cache.
  • Dynamic membership: You can add or remove proxy addresses from a group while mounts are active. Mount clients will discover changes on their next RTT probe cycle.
  • Multiple groups per region: Deploy multiple proxy servers in a single group for redundancy. Rendezvous hashing distributes blocks across all group members.