RabbitMQ Server Startup Failure on Ubuntu 12.04: EPMD Connection and Kernel Crash Analysis


3 views

The key error messages from startup_err and startup_log indicate multiple issues:

# Main error pattern
{error,epmd_close}
{badmatch,{error,epmd_close}}
{"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}"}

Before debugging further, verify these fundamental requirements:

# 1. Check hostname resolution
hostname -f
ping $(hostname -f)

# 2. Verify EPMD is running
ps aux | grep epmd
netstat -tulnp | grep 4369

# 3. Check Erlang installation
erl -version

1. Fix Hostname Resolution

Edit /etc/hosts with the correct format:

127.0.0.1 localhost myserver
::1 localhost ip6-localhost ip6-loopback
YOUR_SERVER_IP myserver.example.com myserver

2. EPMD Configuration

Force-clean any existing EPMD instances:

# Kill existing EPMD
pkill epmd

# Verify cleanup
epmd -kill
epmd -daemon

3. RabbitMQ Specific Fixes

Reset the RabbitMQ environment and database:

# Remove existing database
sudo rm -rf /var/lib/rabbitmq/mnesia

# Reset configuration
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl start_app

If issues persist, enable verbose logging:

# Start RabbitMQ with debug mode
RABBITMQ_LOG_BASE=/var/log/rabbitmq \
RABBITMQ_LOGS=- \
RABBITMQ_SASL_LOGS=- \
sudo -u rabbitmq rabbitmq-server

As last resort for Ubuntu 12.04, consider manual installation:

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v2.8.7/rabbitmq-server_2.8.7-1_all.deb
sudo dpkg -i rabbitmq-server_2.8.7-1_all.deb
sudo apt-get -f install

When attempting to start RabbitMQ 2.8.7 on Ubuntu 12.04, the service fails with cryptic Erlang VM errors. The key indicators in the logs show:

{error,epmd_close}
{shutdown,{kernel,start,[normal,[]]}}
{badmatch,{error,epmd_close}}

The root causes typically involve:

  • EPMD (Erlang Port Mapper Daemon) connectivity problems
  • Hostname resolution conflicts
  • Erlang VM initialization failures

1. Verify Hostname Configuration

RabbitMQ is extremely sensitive to hostname resolution. Run these diagnostic commands:

# Check current hostname settings
hostname
hostname -f
ping $(hostname)

# Verify /etc/hosts contains both short and FQDN
127.0.0.1 localhost myserver myserver.yourdomain.com
::1 localhost ip6-localhost ip6-loopback

2. Check EPMD Functionality

EPMD must be running before RabbitMQ starts:

# Manually start epmd in debug mode
epmd -debug

# Verify epmd is listening
netstat -tulpn | grep epmd
lsof -i :4369

3. Modify RabbitMQ Environment

Create/edit the environment configuration file:

sudo nano /etc/rabbitmq/rabbitmq-env.conf

# Add these directives:
NODENAME=rabbit@localhost
SERVER_START_ARGS="-proto_dist inet_tcp"

4. Force Reinstallation with Cleanup

Perform a complete reinstall with dependency fixes:

sudo apt-get purge rabbitmq-server erlang*
sudo rm -rf /var/lib/rabbitmq/
sudo apt-get install erlang-nox
sudo apt-get install rabbitmq-server

If issues persist, enable verbose logging:

# Start RabbitMQ in foreground debug mode
sudo -u rabbitmq bash
RABBITMQ_LOG_BASE=/var/log/rabbitmq \
RABBITMQ_LOGS=- \
RABBITMQ_SASL_LOGS=- \
/usr/lib/rabbitmq/bin/rabbitmq-server

For stubborn cases, consider manual installation:

wget https://packages.erlang-solutions.com/erlang/debian/pool/esl-erlang_20.3-1~ubuntu~precise_amd64.deb
sudo dpkg -i esl-erlang_20.3-1~ubuntu~precise_amd64.deb

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.7/rabbitmq-server_3.7.7-1_all.deb
sudo dpkg -i rabbitmq-server_3.7.7-1_all.deb

Remember to check Ubuntu 12.04's OpenSSL compatibility when using newer versions.