database config_error ai_generated true

MongoServerError: Replica set member 127.0.0.1:27017 resolves to 192.168.1.1:27017 but replSetInitiate expects hostname 'localhost'

ID: database/mongodb-replica-set-hostname-mismatch

Also available as: JSON · Markdown · 中文
85%Fix Rate
87%Confidence
1Evidence
2024-01-20First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
MongoDB 5.0.x active
MongoDB 6.0.x active
MongoDB 7.0.x active

Root Cause

The hostname used during replica set initialization does not match the hostname that MongoDB resolves internally, often due to DNS or /etc/hosts misconfiguration.

generic

中文

副本集初始化期间使用的主机名与 MongoDB 内部解析的主机名不匹配,通常由于 DNS 或 /etc/hosts 配置错误。

Official Documentation

https://www.mongodb.com/docs/manual/reference/method/rs.initiate/

Workarounds

  1. 90% success Ensure all replica set members use FQDN that matches DNS or /etc/hosts: edit /etc/hosts to add '127.0.0.1 localhost hostname.domain.com' and use hostname.domain.com in rs.initiate().
    Ensure all replica set members use FQDN that matches DNS or /etc/hosts: edit /etc/hosts to add '127.0.0.1 localhost hostname.domain.com' and use hostname.domain.com in rs.initiate().
  2. 85% success Reconfigure replica set using: cfg = rs.conf(); cfg.members[0].host = 'correctHostname:27017'; rs.reconfig(cfg);
    Reconfigure replica set using: cfg = rs.conf(); cfg.members[0].host = 'correctHostname:27017'; rs.reconfig(cfg);

中文步骤

  1. 确保所有副本集成员使用与 DNS 或 /etc/hosts 匹配的 FQDN:编辑 /etc/hosts 添加 '127.0.0.1 localhost hostname.domain.com',并在 rs.initiate() 中使用 hostname.domain.com。
  2. 通过以下方式重新配置副本集:cfg = rs.conf(); cfg.members[0].host = 'correctHostname:27017'; rs.reconfig(cfg);

Dead Ends

Common approaches that don't work:

  1. Changing the hostname in /etc/hostname without updating /etc/hosts 70% fail

    MongoDB uses both hostname resolution and network interfaces; only updating one file leaves inconsistency.

  2. Using IP addresses in replSetInitiate configuration 80% fail

    IP addresses can change after reboot or network reconfiguration, causing replica set to fail on restart.