【问题标题】:MongoDB replica set setup issuesMongoDB 副本集设置问题
【发布时间】:2013-10-22 14:22:24
【问题描述】:

尝试从头开始设置 MongoDB 副本集时,我感到非常沮丧。这是我第一次使用 MongoDB (2.4.6),我不确定是我缺乏理解还是文档不佳。这是我正在使用的:

-VPC 中的 Amazon EC2 Ubuntu 12.04 LTS 实例 -节点A 10.0.1.152 -NodeB 10.0.1.153

他们可以很好地相互交流。这些服务器是全新的,因此没有防火墙规则。我的主机文件:

10.0.1.152 mongodb0 10.0.1.153 mongodb1 10.0.1.226 mongodb2 #这是arbiter,不过我暂时不关心这个

我在 NodeA 中的配置

logpath=/var/log/mongodb/mongodb.log
fork = true
replSet = rs0
bind_ip = mongodb0
logappend=true

我在 NodeB 中的配置

logpath=/var/log/mongodb/mongodb.log
fork = true
replSet = rs0
bind_ip = mongodb1
logappend=true

在 NodeA 上,我开始进程:

 mongod --host mongodb0.iin
 rs.initiate()
 rs.conf()
 rs.add("mongo1.iin:27017")

这是错误信息:

{
        "errmsg" : "exception: need most members up to reconfigure, not ok : mongodb1.iin:27017",
        "code" : 13144,
        "ok" : 0
}

我还在副本上运行了 mongo 进程。当我初始化时,它也称自己为 Primary。

在 NodeB 上 - 我对来自 NodeA 的所有流量运行了 TCPDUMP。当我初始化时 - 什么都没有出现。正如我所提到的,没有防火墙规则,我什至添加了允许来自 NodeA 的所有内容,只是为了它。

我做错了什么?!?!?!?!?!?

【问题讨论】:

  • 那么,你首先启动了 NodeA??
  • 根据您给出的解释: 1:如果您使用配置文件,请使用 -f 参数将其提供给 mongod,例如 mongod -f nodeA.cfg。 2:您启动了 nodeA 并尝试连接到我认为仍未运行的 nodeB。检查这个:docs.mongodb.org/manual/reference/replica-configuration 文档如何正确配置副本集并一致地配置实例的主机名(mongodb0/monodb0.iin)使用
  • 特别是,请确保主机名不会评估为 127.0.0.1::1。如果监听套接字绑定到环回适配器,则外部的 nothing 将能够连接到它。
  • 我还没有机会查看环境,但我认为它可能与网络相关,需要对其进行评估。我想验证在 NodeA 和 NodeB 上的每个配置中,replSet 值应该相同吗?我启动并启动 NodeA,我是否只在 NodeB 上启动进程(没有 rs.initiate())?我把NodeB加到NodeA上,是不是正式流程?
  • 请在此处发帖mongodb.log

标签: mongodb amazon-ec2 replicaset


【解决方案1】:

1) 确保主机->ip 名称在每个服务器的 /etc/hosts 文件中可用。

例如你的 /etc/hosts 文件 有

123.123.123.123 hostname

我假设 123.123.123.123 是您的服务器 IP,主机名是您为 mongo 副本集成员指定的名称,每个成员必须执行此操作,并且您必须为每个服务器添加此名称。

2) 确保 mongo 节点能够使用您可以测试的终端相互通信。

3) 确保您的系统能够与您访问成员的副本集的每个成员进行通信。(基本上是 mongod.conf 文件)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多