Skip to content
No description, website, or topics provided.
Erlang
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config Initial commit of Feb 14, 2018
src Update application version and tag to 0.1.4 Jul 1, 2019
.gitignore
.travis.yml Update tested version from 19.1 to 19.3 on Travis Aug 5, 2019
CONTRIBUTORS Added contributors Feb 28, 2018
LICENSE
README.md Update README.md Jul 1, 2019
rebar.config Add hex plugin Apr 5, 2019
rebar.lock try os var EPMDLESS_REMSH_PORT if port of remote node not found Apr 3, 2019

README.md

Erlang (and Elixir) distribution without epmd, aka EPMDLESS

Hex pm

Allows to connect erlang nodes, via Erlang distribution and without epmd, using tcp or tls.

Requirements

Erlang >= 19.1

Configuration

Using TCP as transport protocol

{ epmdless, [
    {transport, tcp},
    {listen_port, 17012}
    ]
}.

Using TLS as transport protocol

{epmdless, [
    {transport, tls},
    {listen_port, 17012},
    {ssl_dist_opt, [
        {client, [ssl:ssl_option()]},
        {server, [ssl:ssl_option()]}
    ]}
]}

VM args

Erlang VM needs few extra flags on start to disable epmd daemon startup and override empd client callback module.

Minimal set of options: erl -proto_dist epmdless_proto -start_epmd false -epmd_module epmdless_client

Note: since epmd is disabled you need to populate epmd-client database manually. Check epmd_dist module API.

Example usage

(app2@host.local)1> epmdless_client:add_node('app1@host.local', 17012).
ok
(app2@host.local)2> epmdless_client:list_nodes().
[{'app1@host.local',{"host.local",17012}}]

Connecting to epmdless nodes

It's possible to connect to epmdless nodes using remsh. The distribution port can be provided via EPMDLESS_REMSH_PORT environmental variable.

Example usage:

EPMDLESS_REMSH_PORT=17012 erl -name local_node@127.0.0.1 -remsh epmdless_node@127.0.0.1 -setcookie <cookie> -proto_dist epmdless_proto -epmd_module epmdless_client -pa _build/default/lib/epmdless/ebin

Example project

Please also refer: https://github.com/oltarasenko/erlang_distribution_in_docker for an example of complete project running epmdless.

TLS example for Elixir

Here is a small project which shows how to setup EPMDLess with TLS for Elixir: https://github.com/oltarasenko/epmdless-elixir-example

(Please also see a discussion here: https://github.com/oltarasenko/epmdless/issues/11)

You can’t perform that action at this time.