副本 - MongoDB EC2 实例

Replica - MongoDB EC2 instances

在 AWS 云中添加了 3 个 EC2 实例。 在 3 个不同的实例中安装了 3 个 MongoDB 个实例,所有实例都 运行 正常。

我正在为相同的数据库添加复制。

以下是我遵循的步骤:

  1. sudo service mongod start --sslPEMKeyFile "/etc/ssl/mongodb.pem" --sslMode "requireSSL" --replSet "myReplSet" ( 总共3 mongo 个实例)

  2. config = {_id : "myReplSet" , 成员: [{_id: 0, host:"ip-10-0-0-68:27017"},{_id: 1, host:"ip-10-0-0-247:27017" },{_id: 2, 主机:"ip-10-0-0-148:27017"}]}

  3. rs.initiate(配置)

错误如下:

   MongoDB Enterprise > rs.initiate(config)
   {
    "ok" : 0,
    "errmsg" : "This node was not started with the replSet option",
    "code" : 76,
    "codeName" : "NoReplicationEnabled"
  }

编辑

我为所有 3 个实例添加了相同的安全组和弹性 IP。 所有 3 个都是新的数据库。 现在我收到错误消息:

   {
"ok" : 0,
"errmsg" : "'ip-10-0-0-148:27017' has data already, cannot initiate set.",
"code" : 110,
"codeName" : "CannotInitializeNodeWithData"
   }

EDIT-2

一台服务器的配置文件:

    # 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: /var/lib/mongo
    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,13.58.225.174,13.58.180.226  # Listen to local   interface only, comment to listen on all interfaces.


    #security:

    #operationProfiling:

    replication:
      replSetName: rs0

服务启动命令不接受参数。所以

sudo service mongod start --sslPEMKeyFile "/etc/ssl/mongodb.pem" --sslMode "requireSSL" --replSet "myReplSet"

相当于

sudo service mongod start

如果您想将这些设置添加到 mongod 配置中,您将需要编辑 /etc/mongod.conf 以添加它们。由于一些选项的名称在命令行和配置之间有所不同文件,您应该查看 Configuration File Options 文档以确保您使用正确的设置。

编辑

根据您的编辑和错误消息,mongod 进程 (ip-10-0-0-148:27017) 似乎已经有数据。您不能将已经有数据的 mongod 进程添加到副本集。但是,您可以在已经有数据的 mongod 进程上启动副本集。您应该连接到 mongod 进程和那里的 运行 rs.initiate()。然后你 运行 rs.add() 将剩余的空 mongod 进程添加到副本集。

注意:MongoDB 确实提供 MongoDB Cloud Manager and MongoDB Atlas,它可以为您完成部分或全部工作。但是,它们不是免费的,因此是否要使用它们取决于您。

这样就可以了。

  1. rs.initialize()
  2. rs.add()
  3. rs.add()

我在这里回复: https://devops.profitbricks.com/tutorials/configure-mongodb-replica-set/