{"id":25806114,"url":"https://github.com/yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs","last_synced_at":"2026-08-21T22:30:21.144Z","repository":{"id":277890019,"uuid":"769052148","full_name":"yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs","owner":"yandex-cloud-examples","description":"How to make distributed High Available storage based on GlusterFS in Yandex Cloud.","archived":false,"fork":false,"pushed_at":"2025-02-16T19:33:40.000Z","size":18,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-06-04T21:06:53.529Z","etag":null,"topics":["gluster","glusterfs","object-storage","s3","terraform","yandex-cloud","yandexcloud"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yandex-cloud-examples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-08T08:44:16.000Z","updated_at":"2024-03-08T10:06:02.000Z","dependencies_parsed_at":"2025-02-16T20:37:47.398Z","dependency_job_id":null,"html_url":"https://github.com/yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs","commit_stats":null,"previous_names":["yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-distributed-ha-storage-with-glusterfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-distributed-ha-storage-with-glusterfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-distributed-ha-storage-with-glusterfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-distributed-ha-storage-with-glusterfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yandex-cloud-examples","download_url":"https://codeload.github.com/yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-distributed-ha-storage-with-glusterfs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36809899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-21T02:00:06.756Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gluster","glusterfs","object-storage","s3","terraform","yandex-cloud","yandexcloud"],"created_at":"2025-02-27T19:59:31.141Z","updated_at":"2026-08-21T22:30:20.867Z","avatar_url":"https://github.com/yandex-cloud-examples.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Glusterfs\n\nGuide how to make distributed HA storage based on GlusterFS\n\n## Getting started\n\n```bash\nyc config profile activate \u003cyour profile\u003e  \n./env-yc-prod.sh\n```\n\n### Terraform\n\n```bash\nmake init\nvi variables.tf\n# choose default values for variables\nmake apply\n\n# use output to access publically available first client\nssh storage@\u003cIP_addr_of_client\u003e\n```\n\n### GlusterFS installation\n\n```bash\n# client\nsudo -i\n\ndnf install epel-release -y\ndnf install clustershell -y\necho 'ssh_options: -oStrictHostKeyChecking=no' \u003e\u003e /etc/clustershell/clush.conf\n\ncat \u003e /etc/clustershell/groups.conf \u003c\u003c'EOF'\n[Main]\ndefault: cluster\nconfdir: /etc/clustershell/groups.conf.d $CFGDIR/groups.conf.d\nautodir: /etc/clustershell/groups.d $CFGDIR/groups.d\nEOF\n\ncat \u003e /etc/clustershell/groups.d/cluster.yaml \u003c\u003cEOF\ncluster:\n    all: '@clients,@gluster'\n    clients: 'client[01-03]'\n    gluster: 'gluster[01-03]'\nEOF\n\nclush -w @all hostname # check and auto add fingerprints\nclush -w @all dnf install centos-release-gluster -y\nclush -w @all dnf --enablerepo=powertools install glusterfs-server -y\nclush -w @gluster mkfs.xfs -f -i size=512 /dev/vdb\nclush -w @gluster mkdir -p /bricks/brick1\nclush -w @gluster \"echo '/dev/vdb /bricks/brick1 xfs defaults 1 2' \u003e\u003e /etc/fstab\"\nclush -w @gluster \"mount -a \u0026\u0026 mount\"\n\nclush -w @gluster systemctl enable glusterd\nclush -w @gluster systemctl restart glusterd\n\nclush -w gluster01 gluster peer probe gluster02\nclush -w gluster01 gluster peer probe gluster03\nclush -w @gluster mkdir -p /bricks/brick1/vol0\n\n# High-Available Gluster Cluster with erasure coding 2 + 1\nclush -w gluster01 gluster volume create regional-volume disperse 3 redundancy 1 gluster01:/bricks/brick1/vol0 gluster02:/bricks/brick1/vol0 gluster03:/bricks/brick1/vol0 # HA \n\n# Additional performance tuning\nclush -w gluster01 gluster volume set regional-volume client.event-threads 8\nclush -w gluster01 gluster volume set regional-volume server.event-threads 8\nclush -w gluster01 gluster volume set regional-volume cluster.shd-max-threads 8\nclush -w gluster01 gluster volume set regional-volume performance.read-ahead-page-count 16\nclush -w gluster01 gluster volume set regional-volume performance.client-io-threads on\nclush -w gluster01 gluster volume set regional-volume performance.quick-read off \nclush -w gluster01 gluster volume set regional-volume performance.parallel-readdir on \nclush -w gluster01 gluster volume set regional-volume performance.io-thread-count 32\nclush -w gluster01 gluster volume set regional-volume performance.cache-size 1GB\nclush -w gluster01 gluster volume set regional-volume server.allow-insecure on   \n\n# Start volume\nclush -w gluster01  gluster volume start regional-volume\n\n# Check volumes status\nclush -w gluster01  gluster volume status\n\n# Mount volume to clients\nclush -w @clients mount -t glusterfs gluster01:/regional-volume /mnt/\n\n# Create random file on first client\ncat /dev/urandom | tr -dc '[:alnum:]' \u003e /mnt/urandom.file\n\n# Check hashsum on all clients\nclush -w @clients sha256sum /mnt/urandom.file\n# client01: 83a76155d74a67c59934fb984d025e6b787c8748345ef5317f096c8ba8ea7530  /mnt/urandom.file\n# client02: 83a76155d74a67c59934fb984d025e6b787c8748345ef5317f096c8ba8ea7530  /mnt/urandom.file\n# client03: 83a76155d74a67c59934fb984d025e6b787c8748345ef5317f096c8ba8ea7530  /mnt/urandom.file\n```\n\n### HA testing\n\n1. Poweroff storage node in zone (if there is one node per zone)\n1. Check file availability\n\n```bash\nsha256sum /mnt/urandom.file\n# ca2a89d5925b50552ddf4a4da2773091e8f9ecc879d148577a59d0c25bbec781  /mnt/urandom.file\n\ngluster volume status\n# Status of volume: regional-volume\n# Gluster process                             TCP Port  RDMA Port  Online  Pid\n# ------------------------------------------------------------------------------\n# Brick gluster01:/bricks/brick1/vol0         50545     0          Y       5629\n# Brick gluster02:/bricks/brick1/vol0         52270     0          Y       5498\n# Self-heal Daemon on localhost               N/A       N/A        Y       8076\n# Self-heal Daemon on gluster01.ru-central1.i\n# nternal                                     N/A       N/A        Y       5645\n# Self-heal Daemon on gluster02               N/A       N/A        Y       5514\n\n# Task Status of Volume regional-volume\n# ------------------------------------------------------------------------------\n# There are no active volume tasks\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyandex-cloud-examples%2Fyc-distributed-ha-storage-with-glusterfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyandex-cloud-examples%2Fyc-distributed-ha-storage-with-glusterfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyandex-cloud-examples%2Fyc-distributed-ha-storage-with-glusterfs/lists"}