Library to perform leader election in a cluster of containerized Elixir nodes.
def deps do
[{:libelection, "~> 1.1.0"}]
end
if Election.leader? do
# Code path executed only by the leader node
else
# Code path executed by followers
end
Polls the API of the configured container orchestration platform to determine the oldest node of the cluster.
To configure the polling interval use:
config :libelection, :polling_interval, 2_000 # 2 seconds
To configure the function which lists the node of the cluster use:
config :libelection, :list_nodes, {module, function, args}
# it can also be a function reference
config :libelection, :list_nodes, &SomeModule.some_function/1
Configure the logger
config :libelection, :logger, %{level: :debug} # Default
Note: The configuration also supports confex style configurations.
The create_index
identifier is used to pick the leader.
config :libelection,
strategy: Election.Strategy.Rancher,
rancher_node_basename: "some-app"
The resourceVersion
identifier
is used to pick the leader.
config :libelection,
strategy: Election.Strategy.Kubernetes,
kubernetes_selector: "app=some-app",
kubernetes_node_basename: "some-app"
- exdoc
- wiki (coming soon)