具有多个主节点的副本集

具有多个主节点的副本集

我正在尝试配置一个有三个节点的副本集:节点 A、B 和 C。我rs.add()从节点 A 执行 ,之后rs.status()显示这三个节点是主节点。此外,节点 B 和 C 的 pingM 为 0。如果我rs.status()从节点 B 或 C 执行,则列出的唯一节点是自身节点(作为主节点)。我尝试添加仲裁器,但没有成功(它表现得像节点 B 和 C)。我认为这可能是网络问题,但我搞不清楚。

编辑:这是的输出netstat -anp|grep 27017

tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      -
tcp        0      0 10.0.1.211:55772        10.0.1.213:27017        TIME_WAIT   -
tcp        0      0 127.0.0.1:50509         127.0.0.1:27017         ESTABLISHED -
tcp        0      0 127.0.0.1:27017         127.0.0.1:50509         ESTABLISHED -
tcp        0      0 10.0.1.211:55774        10.0.1.213:27017        TIME_WAIT   -
tcp        0      0 10.0.1.211:55776        10.0.1.213:27017        ESTABLISHED -
tcp        0      0 10.0.1.211:39180        10.0.1.212:27017        ESTABLISHED -
tcp        0      0 10.0.1.211:39178        10.0.1.212:27017        TIME_WAIT   -
tcp        0      0 10.0.1.211:39176        10.0.1.212:27017        TIME_WAIT   -
unix  2      [ ACC ]     STREAM     LISTENING     3291267  -                   /tmp/mongodb-27017.sock

节点 B 和 C 的私有 IP 分别为 10.0.1.212 和 10.0.1.213(根据 netstat 输出,它们似乎在 27017 端口建立了连接)。

答案1

听起来节点 A 上的 mongo 进程实际上没有成功联系到其他两个节点。有三个大箭头指向这一点:

  1. 节点 A 报告所有节点均处于 PRIMARY 状态. 初选发生连接已建立。如果连接尚未建立,它将在所有设备上显示 PRIMARY。
  2. Ping=0。如果建立了连接,则它应该是非零的。
  3. 节点 B 和 C 没有听说过任何其他节点。如果建立了连接,他们就会被告知其他节点在那里。

此时,我会再三确认……

  • 任何防火墙都通过正确的端口(通常是 27017,但请检查/etc/mongodb.conf以确保)
  • Mongo 正在监听节点 B 和 C 上的预期端口。
    • netstat -anp应该会显示 Mongo 进程的 LISTEN 端口。确保该端口是您期望的端口。

相关内容