It's true that one can mount a GlusterFS volume on any brick and the FUSE client will automatically discover the other bricks and connect to them as well. If the initial brick fails the client will fail over to one of the other bricks. So, after the initial bootstrap the filesystem is highly available.
However, when you reboot a client host and the brick that you've set it to bootstrap from (e.g. in /etc/fstab
) is down then the client won't connect at all, until you manually point it to another brick to bootstrap it.
This can be a problem in a scenario where clients are rebooted or added while the 'primary' brick is down. For example in Amazon AWS, suppose you have two replicating GlusterFS bricks in separate Availability Zones. When the AZ that contains your 'primary' fails or loses connectivity there's a good chance that you'll autoscale additional servers in the other AZ to cope with the increased load there. Since the 'primary' is unreachable those servers can't mount the filesystem, until you configure them to mount the other brick.
How do I make sure clients (new or rebooting) will try to connect to any available brick?
We use Puppet to manage all nodes, including the contents of /etc/fstab
, and are using GlusterFS 3.9.
glusterfs docs