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.