Skip to content

Latest commit

 

History

History
52 lines (40 loc) · 1.2 KB

File metadata and controls

52 lines (40 loc) · 1.2 KB

DNSCluster

Simple DNS clustering for distributed Elixir nodes.

Installation

The package can be installed by adding dns_cluster to your list of dependencies in mix.exs:

def deps do
  [
    {:dns_cluster, "~> 0.2"}
  ]
end

Next, you can configure and start the cluster by adding it to your supervision tree in your application.ex:

children = [
  {Phoenix.PubSub, ...},
  {DNSCluster, query: Application.get_env(:my_app, :dns_cluster_query) || :ignore},
  MyAppWeb.Endpoint
]

Then in your config file, add:

config :my_app, :dns_cluster_query, ["app.internal"]

If you are deploying with Elixir releases, the release must be set to support longnames and the node must be named, using their IP address by default. These can be set in your rel/env.sh.eex file:

#!/bin/sh
export RELEASE_DISTRIBUTION=name
export RELEASE_NODE="myapp@fully-qualified-ip"

By default, nodes from the same release will have the same cookie. If you want different applications or releases to connect to each other, then you must set the RELEASE_COOKIE, either in your deployment platform or inside rel/env.sh.eex:

#!/bin/sh
...
export RELEASE_COOKIE="my-app-cookie"