Library to perform leader election in a cluster of containerized Elixir nodes.
def deps do
[{:libelection, "~> 1.1.0"}]
endif Election.leader? do
# Code path executed only by the leader node
else
# Code path executed by followers
endPolls 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 secondsTo 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/1Configure the logger
config :libelection, :logger, %{level: :debug} # DefaultNote: 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)
