如何重新配置mongodb副本集以摆脱127.0.0.1并使用域名? [已关闭]

问题描述 投票:0回答:1

陷入恶性循环。正如 MongoDB 官方文档建议的那样,副本集成员应使用域名而不是 IP 地址。正在努力实现这一点。我所有成为 RS 成员的 mongos 都有域名,我可以使用 Compass 连接到它们。我选择有实际数据可复制给其他人的那个并尝试:

  1. rs.发起
  2. rs.重新配置

他们目前都没有工作。核心问题是MongoDB副本集不能将localhost与域名混合使用。它给出了明显的错误。

尝试 rs.initiate 时,出现错误“未在启用复制的情况下启动”。好的,我去调整配置以启用复制并添加“rs0”。重新启动 mongo,登录到 shell,并且已经看到我已经是带有单个成员“127.0.0.1”的 rs0。尝试使用域名而不是 IP 地址进行 rs.initiate,显然会失败 - “已启动”。所以 MongoDB 没有机会使用自定义配置进行 rs.initialise ??

剩下的唯一选择是 rs.reconfig(new_config)

尝试使用 IP 地址:

rs0 [direct: primary] admin> rs.reconfig({_id: "rs0", members: [{_id: 0, host: "127.0.0.1"}] })

它有效。

尝试使用域名:

rs0 [direct: primary] admin> rs.reconfig({_id: "rs0", members: [{_id: 0, host: "myDomain.com"}] })

给出错误:在新配置中没有描述主机,副本集 rs0 的 {version: 5, term: 4} 映射到此节点

如果在 url 中添加 mongodb://

rs.reconfig({_id: "rs0", members: [{_id: 0, host: "mongodb://myDomain.com"}] })

给出错误::: 由 :: 引起:没有消耗整个字符串。

有什么想法吗??

mongodb mongodb-replica-set
1个回答
0
投票

您是否遵循了教程部署自我管理副本集

一定是这样的:

rs.initiate( { 
  _id : "rs0", 
  members: [ { _id: 0, host: "myDomain.com:port" } ] 
}) 

或者如果您有不止一名成员

rs.initiate( { 
  _id : "rs0", 
  members: [ 
     { _id: 0, host: "myDomain1.com:port" }, 
     { _id: 1, host: "myDomain2.com:port" }, 
     { _id: 2, host: "myDomain3.com:port" } 
  ] 
}) 
如果使用默认的27017,可以跳过

port
。它必须是主机名(更准确地说是接口的名称),而不是域。但是,我怀疑您的计算机是否有
.com
顶级域名。

我还怀疑您的部署是否已准备好使用 TLS/SSL 证书。通常,这是在您熟悉副本集和身份验证之后进行的。

© www.soinside.com 2019 - 2024. All rights reserved.