ericlathrop

ericlathrop

Elixir release `myapp remote` returns `:nodedown`

I’ve built a release of my app using mix release. The release is built into a docker container, and deployed, and the app runs fine.

When I docker exec -it xxxxxxx bash to get inside the container and run bin/myapp remote I get:

Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [jit]

Could not contact remote node staging@10.0.12.121, reason: :nodedown. Aborting...

epmd is running, and shows my app:

# ./erts-13.2.2/bin/epmd -names
epmd: up and running on port 4369 with data:
name staging at port 9001

Additionally, I’ve got some code in env.sh.eex to set the the node name to the external IP address so clusters can be formed with other machines:

token=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" || true)
if [ -n "$token" ]; then
  hostname=$(curl -H "X-aws-ec2-metadata-token: $token" -v http://169.254.169.254/latest/meta-data/local-ipv4)
else
  hostname="127.0.0.1"
fi
export RELEASE_DISTRIBUTION=name
export RELEASE_NODE="$ERLANG_CLUSTER@$hostname"

which results in the node name of staging@10.0.12.121.

netstat shows the apps listening on 0.0.0.0:

# netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:8083            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8082            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:9001            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN
tcp        0      0 :::4369                 :::*                    LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path

I can connect to port 9001 with netcat:

# nc -v localhost 9001
localhost (127.0.0.1:9001) open

Why doesn’t remote work?

Most Liked

ericlathrop

ericlathrop

If I remove the code setting the node name, I can run remote:

I think the problem for this container was that I didn’t map the epmd/distribution ports onto the host, so it was trying to connect to the host’s IP which was closed.

I have a complicated situation where we have an umbrella app where I generate 6 releases from it, some of those releases use Erlang distribution, and the others don’t. I was trying to setup everything to work in both situations, but Erlang distribution being designed before the cloud makes it difficult.

In the end, I found it easier to find another way to what I was doing that required Erlang distribution, and remove it.

Where Next?

Popular in Questions Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

Other popular topics Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40165 209
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New

We're in Beta

About us Mission Statement