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/
理由は何ですか?ホスト名を認識できませんか?
答えは簡単です!/etc/hostsファイルに "node1"が定義されていません。あなたのマシンは "node1"(または "node2")のIPアドレスを知りません。
echo "127.0.0.1 node1" >> /etc/hosts
そして、他のことは、あなたのmongodがlocalhostだけをリッスンすることを(設定ファイルで)定義しました。つまり、レプリカセット全体がその1台のマシンにある必要があり、その場合、3つのメンバーすべてが同じポート27017を使用できないため、すべてのメンバーが異なるポートを持つ必要があります。
私の場合: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'
}
]
};