0

tldr:为了在我的 MongoDB 副本集配置中使用弹性 IP,我需要做什么?

我们有一个在 EC2 上运行的三节点 MongoDB 副本集。该集合中的一个实例昨天被 AWS 淘汰,因此我们被迫停止并重新启动 EC2 实例。

不幸的是,当我们第一次配置副本集时,我们对 AWS 还很陌生,并不知道实例的公共 DNS 地址可能会发生变化。我们在副本集配置和代码中的所有应用程序连接字符串中使用了每个实例的公共 DNS。在昨天阅读了该主题后,我尝试通过为实例分配弹性 IP 并更改副本集配置以使用该 IP 来使节点重新联机。经过一番痛苦,我能够让其他两个节点恢复并使用该配置运行,但是具有弹性 IP 的实例拒绝重新加入副本集,并且 mongod.log 中的错误说:

[rsStart] replSet info self not present in the repl set configuration

经过进一步阅读,我发现我不应该在配置中使用实际的弹性 IP,而是弹性 IP 的公共 DNS 名称。我的问题是,在我再次将所有内容脱机以尝试此更改之前,我究竟需要做什么才能在副本集配置中使用弹性 IP?我在这个 10Gen 页面上找到了一些信息:http: //docs.mongodb.org/ecosystem/platforms/amazon-ec2/#communication-across-regions这让我觉得我可能需要弄乱实例的主机名和/或主机文件,但我找不到任何人描述我的确切情况。

有什么想法吗?

4

2 回答 2

4

事实证明这是一个非常简单的修复。一旦我将副本集配置更改为使用弹性 IP 的公共 DNS,mongo 节点就会重新上线。我不必触摸主机名或主机文件。

于 2013-07-22T18:30:17.677 回答
0

您永远不应将弹性 IP 用于复制等内部流量。您将为此流量支付 0.01 美元/GB,而使用内部 IP 将是免费的。

如果您使用的是副本集之类的东西,那么您确实应该在 VPC 中运行。与普通 EC2 实例不同,VPC 中的实例即使在停止时也保持相同的私有 IP 地址和弹性 IP 地址。

于 2013-07-11T21:16:55.543 回答