-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
thin client feature #242
Comments
Current patch by facebook is [1] . There remains some changes to be discussed and decided in the glusterd part of changes, here are few points:
@atinmu @pranithk @amarts @obnoxxx @kshlm your thoughts on the above questions? Each of them can be worked as a patch on top of [1], unless the decision we arrive at, requires a major reversal of approaches in [1]. |
|
To answer @poornimag's questions:
Gave comment on the patch at the top level. GlusterD changes looked good in the patch. |
@amarts @mchangir Doing 3. with multi-plexing poses challenges for graph switch. If we go ahead with restart as per 4. then restarting the process which is serving all volumes will lead to full movement of clients from one machine to other which will be costly IMHO. So 3 & 4 go together for now. I don't have any strong opinion on 1., 2. as long as there are options to opt-in/opt-out of thin-client. @poornimag I am interested in 5. irrespective of when we will do them. This has impact in gluster-block as well. Do you have anything specific in mind? May be a separate github issue? |
1, 2 concludes. 3. we can evaluate, but no need to block on that. |
One more important thing to consider is, whether we want to restrict gfproxyd daemon to be run only on Trusted storage pool or should be allowed to run outside. If we restrict gfproxyd to trusted storage pool, implementation is quite direct and simple. Glusterd can manage the daemon, start on enabling, restart on graph change, stop on disabling. Also can have multiple gfproxyd running for different volumes on the same node, and have portmapping framework of glusterd. If we need to allow gfproxyd on non trusted storage pool, we need to put more thought on it. Glusterd cannot be used to manage the daemon w.r.t starting the daemon, and portmap (help end client identify the host and port of the gfproxyd to connect to). Any thoughts on this @atinmu @amarts @obnoxxx @nixpanic and others? One suggestion by @obnoxxx and @nixpanic was to have another meta daemon that runs outside trusted storage pool, and this daemon does the portmapping, starting, stopping and restarting of gfproxyd daemons. But this means a lot of code sharing/duplication between glusterd and meta daemon. This also means a lot more rpc connections for glusterd etc. Any thoughts? |
Can you explain the benefit of having this daemon run outside of TSP ? |
In environments like qemu, ( also block device/containers?) the clients run outside of trusted storage pool. If we run gfproxyd in trusted storage pool, the thin client each per VM will have to talk to gfproxyd and then another network hop to talk to bricks, which involves 2 network ops, as opposed to existing one network op(the thick client talks to bricks directly). Hence to not compromise a lot on performance and also have thin client, its good to have gfproxyd run on non trusted storage pools as well. |
On Tue, Aug 08, 2017 at 03:44:08AM +0000, Atin Mukherjee wrote:
Can you explain the benefit of having this daemon run outside of TSP ?
I think all environments where multiple client processes on the same
system that are not co-located on the storage servers would benefit.
There is no hard requirement to run Samba (one daemon, many forked
processes) or QEMU (many processes) on a storage server. The memory
consumption of these processes accumilates *really* fast when there are
100's of Samba clients connected, or ~50 VMs. The difference between
memory usage when FUSE mounts are used, or gfapi integration is done, is
immense. Currently gfapi is a good solution when few processes connect
to a Gluster volume. But when the number of processes increase, it is
likely better to use FUSE mounts and accept the reduced performance (and
possibly functionality)... Or buy a few TB of RAM, of course.
When GF-Proxy is available on these systems, the actual process that
uses gfapi will be much smaller, and the shared proxy instance only
needs the RAM for each Gluster Volume.
This is a relatively common deployment option for oVirt integration. Not
all hypervisors are part of the TSP, but would definitely benefit from
accessing the VM-disk images through a local proxy. This way many more
VMs can run per hypervisor.
I think it applies to container hosts as well. Not all container hosts
will be part of the TSP, but if multiple containers use the same Gluster
volume, multiple FUSE mounts (one per container) will be started and all
consume their large memory footprint. I'm not sure how common it is for
containers to use the same Gluster Volume though.
|
Some more points after discussion with @poornimag :
|
About running gfproxy outside the TSP:
Vol file distribution could be carried out as follows:
Does this seem sensible ? @amarts @poornimag @pranithk @atinmu @nixpanic @obnoxxx @pranithk |
Sorry for breaking the continuity of the previous discussions, summing certain things from the previous comments, here is the status of decided approaches and the work done so far: Done so far:
Design done and WIP:
To Be Done:
Of these, we hope to finish 8, 7, 5 before feature freeze for Glusterd 4.0(Oct EOM?) |
Summmary: Adds a new server-side daemon called gfproxyd & a new FUSE client called gfproxy-client Updates: #242 BUG: 1428063 Change-Id: I83210098d3a381922bc64fed1110ae1b76e6519f Tested-by: Shreyas Siravara <[email protected]> Reviewed-by: Kevin Vigor <[email protected]> Signed-off-by: Shreyas Siravara <[email protected]> Signed-off-by: Poornima G <[email protected]>
A patch https://review.gluster.org/18048 has been posted that references this issue. |
2 similar comments
A patch https://review.gluster.org/18048 has been posted that references this issue. |
A patch https://review.gluster.org/18048 has been posted that references this issue. |
Updates: #242 BUG: 1428063 Change-Id: Iaaf2edf99b2ecc75f6d30762c752a6d445c1c826 Signed-off-by: Poornima G <[email protected]>
Summmary: Adds a new server-side daemon called gfproxyd & a new FUSE client called gfproxy-client Updates: gluster#242 BUG: 1428063 Change-Id: I83210098d3a381922bc64fed1110ae1b76e6519f Tested-by: Shreyas Siravara <[email protected]> Reviewed-by: Kevin Vigor <[email protected]> Signed-off-by: Shreyas Siravara <[email protected]> Signed-off-by: Poornima G <[email protected]>
Updates: gluster#242 BUG: 1428063 Change-Id: Iaaf2edf99b2ecc75f6d30762c752a6d445c1c826 Signed-off-by: Poornima G <[email protected]>
A patch https://review.gluster.org/19022 has been posted that references this issue. |
quiesce is useful in a gfproxy setup where if gfproxy machine goes down the fop would be replayed. Hence only added the fops which is supported by fuse layer to start with. With this patch, no behavior change is added (ie, volfile change etc). Just making sure to have the translator up-to-date so that if required we can consume it. Updates #242 Change-Id: Id3bf204f2ccd42c3ac8f88d85836ecb855703e02 Signed-off-by: Amar Tumballi <[email protected]> Signed-off-by: Poornima G <[email protected]>
Updates: #242 Change-Id: I767e574a26e922760a7130bd209c178d74e8cf69 Signed-off-by: Poornima G <[email protected]>
A patch https://review.gluster.org/19525 has been posted that references this issue. |
quiesce is useful in a gfproxy setup where if gfproxy machine goes down the fop would be replayed. Hence only added the fops which is supported by fuse layer to start with. With this patch, no behavior change is added (ie, volfile change etc). Just making sure to have the translator up-to-date so that if required we can consume it. Updates gluster#242 Change-Id: Id3bf204f2ccd42c3ac8f88d85836ecb855703e02 Signed-off-by: Amar Tumballi <[email protected]> Signed-off-by: Poornima G <[email protected]>
Updates: gluster#242 Change-Id: I767e574a26e922760a7130bd209c178d74e8cf69 Signed-off-by: Poornima G <[email protected]>
codename: gfproxy
Move the clustering logic to serverside, and make the client thin.
Some work in glusterd volgen path to create this new volume file.
@pranithk @kshlm @pranithk
The text was updated successfully, but these errors were encountered: