在AWS中更换云服务器实例时保留原有IP地址,可以通过以下步骤实现。核心思路是将IP地址与实例解耦,使其独立存在,再关联到新实例上。
主要方法(针对公有IP)
AWS中有两种主要的IP地址类型:弹性IP(EIP) 和 自动分配的公网IP。只有 弹性IP(EIP) 可以永久保留并随意绑定到不同实例。
情况一:如果原实例使用的是弹性IP(EIP)
这是最简单的情况,EIP本身就是为动态绑定而设计的。
-
解除EIP与原实例的关联:
- 进入 EC2控制台 → 网络与安全 → 弹性IP。
- 选中原实例关联的EIP,选择 “操作” → “解除关联”。
- (注意:解除关联后,原实例将失去公网访问能力。)
-
将EIP关联到新实例:
- 在同一EIP列表中,选择 “操作” → “关联弹性IP地址”。
- 选择新的目标实例及其对应的私有IP地址,点击关联。
- 通常几分钟内,该公网IP就会指向新实例。
情况二:如果原实例使用的是自动分配的公网IP
这种IP在实例停止或终止时会释放,无法直接保留。你需要先将其转换为弹性IP。
-
将自动分配的公网IP转换为弹性IP:
- 在EC2控制台的 “实例” 页面,找到原实例。
- 查看其公有IP地址,并确认其 “弹性IP地址” 列显示为
-(即未分配EIP)。 - 选中实例,点击 “操作” → “网络” → “管理IP地址”。
- 在对应网络接口的IPv4地址列表中,找到当前公有IP,点击 “分配弹性IP”。AWS会自动创建一个新的EIP并与此IP关联(实质是将此动态IP固定化)。
- (如果实例已终止,此方法不可用,因为IP已释放。必须提前操作。)
-
后续步骤:
- 完成转换后,你就拥有了一个EIP。然后按照 情况一 的步骤,先解绑,再绑定到新实例即可。
重要注意事项
-
私有IP地址的保留:
- 私有IP通常与实例绑定。若需保留原私有IP,最可靠的方法是在原子网内创建一个新的网络接口,手动指定原私有IP,然后将其附加到新实例。
- 步骤:创建新网络接口(ENI)时指定原私有IP → 从原实例分离ENI(如存在)→ 将ENI附加到新实例。
-
关联域名(DNS):
- 最佳实践是使用CNAME记录指向域名,而不是直接解析到IP。
- 例如,将
www.example.com设置为CNAME指向一个像ec2-public-hostname的AWS主机名,或使用Route 53等DNS服务。这样,实例更换时只需更新EIP绑定,无需修改DNS,可实现零停机切换。
-
费用提醒:
- 弹性IP(EIP)在未关联到运行中的实例时会产生少量小时费(除非该IP关联的实例已停止,但某些条件可豁免)。关联到运行实例后则免费。
-
安全组与网络ACL:
- IP更换后,确保新实例关联的安全组规则允许所需的流量。安全组是绑定到实例的,不会随IP自动迁移。
操作步骤总结
-
准备阶段:
- 确认原实例的IP类型(EIP还是自动分配IP)。
- 若非EIP,先将其转换为EIP(实例需处于运行状态)。
- 记录原实例的网络配置(安全组、子网等)。
-
迁移IP:
- 将EIP与原实例解绑。
- 启动新实例,配置好系统和应用。
- 将EIP绑定到新实例。
-
验证与切换:
- 通过EIP访问新实例,验证服务是否正常。
- 更新DNS记录(如果未使用CNAME方式)。
- 必要时,可保留原实例一段时间作为回滚准备。
最佳实践建议
- 始终使用弹性IP(EIP) 作为面向公网服务的固定IP。
- 结合负载均衡器(ALB/NLB):将IP绑定到负载均衡器,后端实例可随意更换,IP不变,且提升可用性。
- 使用AWS Route 53 等DNS服务进行健康检查和流量路由,实现更灵活的无缝切换。
通过以上方法,你可以平滑地更换AWS云服务器实例,同时保持服务的IP地址不变,确保业务连续性。
CLOUD技术笔记