{"id":32170816,"url":"https://github.com/dkataskin/libcluster_etcd","last_synced_at":"2026-02-18T22:02:06.311Z","repository":{"id":57515996,"uuid":"147175179","full_name":"dkataskin/libcluster_etcd","owner":"dkataskin","description":"etcd clustering strategy for libcluster","archived":false,"fork":false,"pushed_at":"2019-05-27T07:20:32.000Z","size":16,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-21T17:47:30.539Z","etag":null,"topics":["elixir","etcd","libcluster"],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dkataskin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-03T08:32:49.000Z","updated_at":"2019-06-10T11:48:26.000Z","dependencies_parsed_at":"2022-08-28T16:50:41.279Z","dependency_job_id":null,"html_url":"https://github.com/dkataskin/libcluster_etcd","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/dkataskin/libcluster_etcd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkataskin%2Flibcluster_etcd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkataskin%2Flibcluster_etcd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkataskin%2Flibcluster_etcd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkataskin%2Flibcluster_etcd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkataskin","download_url":"https://codeload.github.com/dkataskin/libcluster_etcd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkataskin%2Flibcluster_etcd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29596329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T20:59:56.587Z","status":"ssl_error","status_checked_at":"2026-02-18T20:58:41.434Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["elixir","etcd","libcluster"],"created_at":"2025-10-21T17:35:42.044Z","updated_at":"2026-02-18T22:02:06.300Z","avatar_url":"https://github.com/dkataskin.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Hex.pm Version](http://img.shields.io/hexpm/v/libcluster_etcd.svg?style=flat)](https://hex.pm/packages/libcluster_etcd)\n\n# LibclusterEtcd\n\nEtcd strategy for libcluster. It utilisez Etcd v2 API.\n\n## Installation\n\nThe package can be installed by adding `libcluster_etcd` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:libcluster_etcd, \"~\u003e 1.1.0\"}\n  ]\nend\n```\n\n## Configuration\n\nMinimal configuration is list of etcd nodes ```etcd_nodes``` and directory name ```directory```:\n```elixir\nconfig :libcluster,\n  topologies: [\n    etcd: [\n      strategy: LibclusterEtcd.Strategy,\n      config: [\n        etcd_nodes: [\"http://10.0.0.1:2379\", \"http://10.0.0.2:2379\"],\n        directory: \"cluster\"\n      ]\n    ]\n  ]\n```\n\nIn addition to that you can control polling interval, ttl of the keys and ttl refresh interval, ```httpc``` options:\n```elixir\nconfig :libcluster,\n  topologies: [\n    etcd: [\n      strategy: LibclusterEtcd.Strategy,\n      config: [\n        etcd_nodes: [\"http://10.0.0.1:2379\", \"http://10.0.0.2:2379\"],\n        directory: \"cluster\",\n        ttl: 10_000,\n        ttl_refresh_interval: 5_000,\n        polling_interval: 5_000\n      ]\n    ]\n  ]\n```\n\n|       Parameter      | Required? |                                    Default Value                                    |                               Description                               |   |\n|:--------------------:|:---------:|:-----------------------------------------------------------------------------------:|:-----------------------------------------------------------------------:|---|\n|      etcd_nodes      |    Yes    |                                                                                     | List of etcd nodes                                                      |   |\n|       directory      |    Yes    |                                                                                     | Etcd directory to store cluster nodes registrations                     |   |\n|          ttl         |     No    |                                        10_000                                       | Node's registration ttl in ms. Uses etcd ttl to keep key alive.         |   |\n| ttl_refresh_interval |     No    |                                        5_000                                        | How often to refresh ttl of a key, ms. Should be less than ```ttl```.   |   |\n|   polling_interval   |     No    |                                        5_000                                        | How often to scan ```directory``` and connect and disconnect nodes, ms. |   |\n|       http_opts      |     No    | [  timeout: 10_000,  connect_timeout: 2_000,  autoredirect: false,  relaxed: true ] | ```httpc``` options used for each request to etcd.                      |   |\n|                      |           |                                                                                     |                                                                         |   |\n\n```ttl```, ```ttl_refresh_interval```, ```timeout``` and ```connect_timeout``` should be carefully chosen. If ```connect_timeout``` is greater or equal to ```ttl``` then most likely etcd key will expire before it will be renewed if etcd client tries to connect to a dead node.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkataskin%2Flibcluster_etcd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdkataskin%2Flibcluster_etcd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkataskin%2Flibcluster_etcd/lists"}