Regarding glusterfs: while it is a pretty stable filesystem and offers extensibility, their approach to replication and striping is complete shit. You have to define explicit replication and striping "bricks", which are basically sets of node that can be used for doing that. If you want both striping and replication it starts to get so complicated that maintaining the cluster is a pain. Of course if you are storing only small/medium size files then it's not a big deal.
But probably you still want replication; and gluster doesn't seem to care much about it. They have no documentation on automatic failover (moving a replica to another node, or in their case it'd have to be another brick, when one node in a brick goes down) so probably it doesn't even exist. I don't understand how people can possibly manage large gluster clusters.
Edit: granted, replica sets do have advantage of isolating failures. But that doesn't excuse seeming lack of automatic replica management. Unless that exists and just isn't well documented.