[Gluster-devel] replication client or server side

Kevan Benson kbenson at a-1networks.com
Tue Oct 16 17:35:37 UTC 2007


Vincent Régnard wrote:
> Hi all,
>
> I am presently re-thinking the way we are using glusterfs 1.3.5 here. We
> are doing replication (*3 with 3 bricks) on client side to produce a
> small HA cluster. We are planning to extend the brick number. Drawing
> that again and looking at some examples on the wiki doing it another way
> (Kritical's tutorial), we are wondering wether doing the replication
> (AFR) on the server side (glusterfsd) would be more suitable than doing
> it on the client side ? Have you any experience or remark on that ? Does
> this have performance impact in your opinion ?
>
> If replication is transfered to server side, we'll have to use
> unification on client side to achive HA (and then obtain active
> self-heal?). Is this latter configuration reasonable ?
>
>
> Present configuration:
>
> Client stack:    FUSE
>         PERFORMANCE TRANSLATORS (write-b/io-cache/io-thread)
>         AFR
>         CLIENT TRANSPORT
>
> Server stack:    SERVER TRANSPORT
>         PERFORMANCE TRANSLATOR (io-thread)
>         POSIX LOCKS FEATURE
>         POSIX STORAGE
>
>
> Planned configuration:
>
> Client stack:    FUSE
>         PERFORMANCE TRANSLATORS (write-b/io-cache/io-thread)
>         UNIFY
>         CLIENT TRANSPORT
>
> Server stack:    SERVER TRANSPORT
>         PERFORMANCE TRANSLATOR (io-thread)
>         AFR
>         POSIX LOCKS FEATURE
>         POSIX STORAGE
>
> Vincent

I find using AFR and Unify from the client yields a more robust config 
with respect to high availability, but using unify on the client 
complicates the configs and file storage (it necessitates splitting the 
share between a main and AFR split per server).  It may be possible to 
overload the AFR definitions to get around this, I haven't tried that 
yet.  It's also possible that tweaking the timeout values for the client 
and server to make the server timeout before the client might yield a 
more stable config.

Performance wise, moving AFR to the server side will allow you structure 
the network for more performance, such as implementing a secondary 
network to handle all the AFR traffic.  As it is now (with you doing 
everything on the client), your writes are constrained to 1/3 of the 
total available network bandwidth, since you have to write each file 3 
times.  By moving the AFR to the server and implementing a second 
network to carry the AFR traffic, you could increase your theoretical 
network performance by 50% (if the AFR network is the same speed as the 
client network connection, and you want data stored on 3 servers).

It seems like every other day I think of a new way to set up glusterfs.  
I have to say this is the most fun I've had with a software product in 
some time.  ;)

-- 

-Kevan Benson
-A-1 Networks





More information about the Gluster-devel mailing list