When one wants to run distributed Erlang between orchestrated Docker containers one needs to figure out how to deal with epmd functionality, i.e. the different containers need to know about the distribution ports of the other containers are reachable.
IIRC there were some recent features implemented in OTP to simplify that. Can anyone bring me up to date how the “right way”[TM] to do this with current OTP would look?
I think the simplest way would be erl -start_epmd false -erl_epmd_port 1234 so the nodes all use the same distribution port, and the epmd daemon doesn’t get started. -dist_listen false and the node doesn’t listen for incoming connections but can still connect to other nodes (force sets -hidden though).
Well I don’t intend to use Kubernetes (we are building our own Erlang based orchestrator) also we use Erlang and no Elixir. Was more interested in the low-level mechanisms
We need to orchestrate between different hosts, different data-centers and between Cloud, Edge and IoT/Fog nodes. All this in very heterogenous networks.
Is the orchestrator being developed in the open by any chance?
I can’t get the idea of building one out of my head ( which is how I landed on this post first place ) and joining an existing codebase would be great.
I use an (ipv6) overlay network - zerotier in my case, but any would do.
This takes the hard part of bridging all the different networks and firewall setups pretty easily, and adds a layer of encryption over the default without needing TLS.
This has been running fine since 2016 IIRC when I first set it up,
but I’ve not used it for very high traffic.
I would imagine any other overlay network could work, such as wireguard or calico, however zerotier’s “flat network” topology presented back to the client, and inbuilt mesh routing, is particularly well suited to OTP.