090d0b58c1 | ||
---|---|---|
examples | ||
specs | ||
templates | ||
.gitignore | ||
LICENSE | ||
README.md | ||
icon.png | ||
project.ini |
README.md
GlusterFS
CycleCloud project for GlusterFS.
Start a GlusterFS Cluster
This repo contains the cyclecloud project. To get started with GlusterFS:
- Upload the glusterfs project to a locker
cyclecloud project upload
- Import the cluster as a service offering
cyclecloud import_cluster GlusterFS -f glusterfs.txt -t
- Add the cluster to your managed cluster list in the CycleCloud UI with the +add cluster button.
NOTE : to avoid race conditions in HA fileserver setup, transient software installation failures with recovery are expected.
Configuration
Nodes in the GlusterFS cluster are configured to have one brick per node. This brick is a RAID array with 8 drives and level 0. The user can configure the size of these drives and whether to use premium disk or not, but the quantity is fixed at 8.
The cluster creates the gluster volume from the bricks according to
gluster volume create $type $level tcp ... {nodes}
Type can be Distributed, Replicated, and Striped volumes and have requirements about the level see docs. These scenarios put restrictions on combinations of values.
Type | Properties | Requirements |
---|---|---|
replicated | redundant, durable | cluster size must be a multiple of level |
distributed | minimum cost, max scale | level ignored |
striped | high concurrency, large files | cluster size must equal to level |
The levels will be handled automatically based on the volume type choices.
The GlusterFS nodes are deployed on a single VMSS so will automatically have fault tolerance through Availability Sets so replicated volume type offers a very resilient cluster and is the default.
Mounting exports
An example of mounting a client to the export is provided in a single-node cluster template. GlusterFS is a highly-available service. Using the cyclecloud cluster namespace, the configuration supplies all glusterfs nodes as failover targets.
The following example shows how you would configure a single client to mount two different GlusterFS clusters by referring to them by their cluster name.
[[[configuration glusterfs.mounts.example]]]
mount_point = /mnt/example
clusterUID = my-gluster-cluster
[[[configuration glusterfs.mounts.tools]]]
mount_point = /mnt/tools
clusterUID = my-tools-gluster-cluster
The client is using the glusterfs blob fuse clients and will automatically move the mount to a failover node in case of node failure.
Start a GlusterFS Client
- Import the cluster as a service offering
cyclecloud import_cluster GlusterFS-client -f examples/glusterfs-client.txt -t
- Add the cluster to your managed cluster list in the CycleCloud UI with the +add cluster button.
- In the GlusterFS Cluster dropdown choose the name of the GlusterFS cluster started in the previous section.
The client logic will choose the primary export from the glusterfs nodes randomly, and the
[root@myhost ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
ip-0A000211:/gfsvol 5030694924 104016 5030590908 1% /mnt/example
[root@myhost ~]$ mount
ip-0A000211:/gfsvol on /mnt/example type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.