web-dev-qa-db-ja.com

mongodbレプリケーションセットを実行するとrs.initiate()を実行できない

CentOS 7を使用します。

MongoDBバージョン:3.2.15

ホスト名:node1

ディレクトリを作成:

mkdir /mongo-metadata

/etc/mongod.conf

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /mongo-metadata
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.


#security:

#operationProfiling:

replication:
  replSetName: rs0

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

レプリケーションメンバーを開始します。

mongod --config /etc/mongod.conf

mongoを実行:

mongo
# try
rs.initiate()    
{
        "info2" : "no configuration specified. Using a default configuration for the set",
        "me" : "node1:27017",
        "ok" : 0,
        "errmsg" : "No Host described in new configuration 1 for replica set rs0 maps to this node",
        "code" : 93
}

# try
config = {
    _id : "rs0",
     members : [
         {_id : 0, Host : "node1:27017"},
         {_id : 1, Host : "node2:27017"},
     ]
}
rs.initiate(config)
{
    "ok" : 0,
    "errmsg" : "No Host described in new configuration 1 for replica set rs0 maps to this node",
    "code" : 93
}

参照:

https://docs.mongodb.com/manual/reference/command/replSetInitiate/

理由は何ですか?ホスト名を認識できませんか?

4
cloud_cloud

答えは簡単です!/etc/hostsファイルに "node1"が定義されていません。あなたのマシンは "node1"(または "node2")のIPアドレスを知りません。

echo "127.0.0.1  node1" >> /etc/hosts

そして、他のことは、あなたのmongodがlocalhostだけをリッスンすることを(設定ファイルで)定義しました。つまり、レプリカセット全体がその1台のマシンにある必要があり、その場合、3つのメンバーすべてが同じポート27017を使用できないため、すべてのメンバーが異なるポートを持つ必要があります。

5
JJussi

私の場合:127.0.0.1 with localhost。その後、動作します。

これがrsconfです:

rsconf = {
  _id: 'rs0',
  members: [
    {
      _id: 0,
      Host: 'localhost:27017'
    },
    {
      _id: 1,
      Host: 'localhost:27018'
    },
    {
      _id: 2,
      Host: 'localhost:27019'
    }
  ]
};
0
slideshowp2