[Gluster-users] reading from local replica?

Brian Ericson
2015-06-08T21:55:49Z

Am I misunderstanding cluster.read-subvolume/cluster.read-subvolume-index?

I have two regions, "A" and "B" with servers "a"
and "b" in,
respectfully, each region.  I have clients in both regions. Intra-region
communication is fast, but the pipe between the regions is terrible.
I'd like to minimize inter-region communication to as close to glusterfs
write operations only and have reads go to the server in the region the
client is running in.

I have created a replica volume as:
gluster volume create gv0 replica 2 a:/data/brick1/gv0
b:/data/brick1/gv0 force

As a baseline, if I use scp to copy from the brick directly, I get --
for a 100M file -- times of about 6s if the client scps from the server
in the same region and anywhere from 3 to 5 minutes if I the client scps
the server in the other region.

I was under the impression (from something I read but can't now find)
that glusterfs automatically picks the fastest replica, but that has not
been my experience; glusterfs seems to generally prefer the server in
the other region over the "local" one, with times usually in excess of
4
minutes.

I've also tried having clients mount the volume using the "xlator"
options cluster.read-subvolume and cluster.read-subvolume-index, but
neither seem to have any impact.  Here are sample mount commands to show
what I'm attempting:

mount -t glusterfs -o xlator-option=cluster.read-subvolume=gv0-client-<0
or 1> a:/gv0 /mnt/glusterfs
mount -t glusterfs -o xlator-option=cluster.read-subvolume-index=<0 or
1> a:/gv0 /mnt/glusterfs

Am I misunderstanding how glusterfs works, particularly when trying to
"read locally"?  Is it possible to configure glusterfs to use a local
replica (or the "fastest replica") for reads?