0

有没有办法在不同AZ的同一VPC中复制EC2实例以实现HA目的,这样当主实例坏时(例如由于检查状态失败),我可以将其关闭并快速切换到备用实例.

出于某种原因,我需要保持相同的私有 IP 地址和公共/EIP IP 地址。对于 EIP 地址,我可以将其与 OLD 实例解除关联,然后将其重新关联到 NEW 实例,但是私有 IP 地址呢?

有什么建议吗?提前致谢...

4

2 回答 2

4

什么是“实例”?

当人们谈论“复制 EC2 实例”时,值得考虑一下人们的意思。EC2 实例包括:

  • 带操作系统的启动盘
  • 任何数据盘
  • 网络设置(例如公共和私有 IP 地址)
  • 配置(例如实例类型、用户数据、标签等)

复制 EC2 实例通常意味着启动另一个具有相同配置的实例,但不一定是“复制”。例如,不同的可用区意味着它将具有不同的 IP 地址(见下文),并且新实例将从 AMI(Amazon 系统映像)启动,而不是与前一个实例的磁盘完全相同。

高可用性的副本

接下来是高可用性问题。新实例可能需要几分钟才能启动。如果需要近乎即时的切换,那么唯一的解决方案是始终运行多个实例,然后重新指向 IP 地址或 DNS 名称。

正如您所提到的,将弹性 IP 地址关联到备用 EC2 实例既简单又快速。此更改会立即将发送到该 IP 地址的流量重定向。

但是,无法将内部 IP 地址重新分配给另一个实例(但请参见下文)。

使用 Auto Scaling 启动另一个实例

如果要求允许中断几分钟,那么就会出现更多的可能性。最简单的方法是在 Auto Scaling 组中启动 EC2 实例。该组可以配置为始终具有一定数量的实例(例如,最少 1 个实例)。因此,当实例失败时,Auto Scaling 可以自动启动具有相同配置(启动磁盘、实例类型等)的替换实例。

此外,如果某个区域出现故障,Auto Scaling 可以在另一个可用区中自动启动实例。

但是,请注意,内部 IP 地址范围与 VPC(虚拟私有云)中的子网相关联。每个子网都与一个可用区相关联。层次结构是:

  • 专有网络
    • 可用区
      • 子网(具有 IP 地址的 CIDR 范围)
        • 实例

因此,在不同的可用区(以及不同的子网)中启动实例将需要实例具有不同的内部 IP 地址。

重新分配 IP 地址的 hack

虽然不能重新分配内部 IP 地址(尤其是不能在子网之间重新分配),但在 re:Invent 2014 的 ARC401 会议中描述了一个有趣的 hack (参见幻灯片 33 和 34,或在YouTube 上)。

这涉及将 IP 地址与辅助弹性网络接口 (ENI) 相关联,其中 IP 地址超出VPC 范围。然后,使用路由规则将发往该地址的流量路由到 ENI(关闭 Source/Dest Check)。实际上,可以通过修改路由规则将流量重新路由到不同的实例。有点hack,但它显然有效。

于 2015-01-07T02:39:41.683 回答
1

您可能无法保留相同的私有主 IP 地址,但您可以将辅助私有 IP 地址分配给 VPC 中的 EC2 实例,并且它们是可重新分配的:

私有 IP 地址

当您在 VPC 中启动实例时,子网地址范围内的主要私有 IP 地址将分配给实例的默认网络接口 (eth0)。如果您未指定主要私有 IP 地址,我们会在子网范围内为您选择一个可用的 IP 地址。

您可以将额外的私有 IP 地址(称为辅助私有 IP 地址)分配给在 VPC 中运行的实例。与主要私有 IP 地址不同,您可以将次要私有 IP 地址从一个网络接口重新分配给另一个网络接口

从这里:http ://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-ip-addressing.html

于 2015-01-07T02:35:54.243 回答