Allows to connect erlang nodes, via Erlang distribution and without epmd, using tcp or tls.
Erlang >= 19.1
{ epmdless, [
{transport, tcp},
{listen_port, 17012}
]
}.
{epmdless, [
{transport, tls},
{listen_port, 17012},
{ssl_dist_opt, [
{client, [ssl:ssl_option()]},
{server, [ssl:ssl_option()]}
]}
]}
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.
(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}}]
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
Please also refer: https://github.com/oltarasenko/erlang_distribution_in_docker for an example of complete project running epmdless.