在 AWS 架构中,直接“更换实例”并保留原有弹性 IP(EIP)或私有 IP 的操作并不存在,因为 EC2 实例的生命周期是独立的。当你终止(Terminate)一个实例后,其关联的公网 IP(如果是自动分配的)会立即释放,无法找回;即使是弹性 IP(EIP),虽然可以解绑,但必须手动重新绑定到新实例上才能复用。
要实现“更换实例配置/规格”同时“保留 IP",标准且合规的操作流程如下:
核心逻辑:解绑与重绑
AWS 的 IP 地址管理遵循“资源分离”原则。IP 地址(特别是弹性 IP)是独立于计算实例存在的资源。因此,所谓的“保留 IP"实际上是将 IP 资源从旧实例解绑,再挂载到新实例的过程。
具体操作步骤
1. 确认 IP 类型
首先检查当前实例使用的公网 IP 类型:
- 自动分配的公网 IP:如果实例启动时未指定 EIP,AWS 会自动分配一个临时公网 IP。这种 IP 无法保留。一旦实例停止或终止,该 IP 即失效。若需保留,必须先将其转换为弹性 IP(EIP)。
- 弹性 IP (EIP):这是唯一可以跨实例复用的公网 IP 资源。
2. 数据迁移准备(关键步骤)
在操作 IP 之前,务必确保新实例的数据完整性。由于 IP 切换通常伴随着实例变更(如重启、规格升级或系统盘更换),你需要先完成以下工作:
- 创建快照:对旧实例的系统盘和数据卷创建 AMI(镜像)或快照。
- 部署新实例:基于上述快照启动一个新的 EC2 实例,或者根据需求选择新的实例规格(Instance Type)。
- 注意:新实例启动后,默认会获得一个新的随机公网 IP(如果有公网访问需求)。此时不要急于操作,先确保新实例内部服务正常。
3. 执行 IP 迁移
假设你使用的是弹性 IP(EIP):
- 登录 AWS 控制台,进入 EC2 Dashboard。
- 在左侧菜单选择 Elastic IPs。
- 找到需要保留的 EIP,选中它,点击 Actions -> Release Elastic IP Address(切勿点击此选项,那是释放 IP)。
- 正确操作是:选中该 EIP,点击 Actions -> Associate Elastic IP address。
- 在弹出的对话框中:
- Resource type:选择 Instance。
- Instance ID:输入你刚刚启动的新实例 ID。
- 勾选 Reassociate。
- 点击 Associate。
此时,该 EIP 会立即从旧实例(如果已解绑)转移至新实例。对于客户端而言,公网 IP 保持不变,无需修改 DNS 解析记录。
4. 关于私有 IP 的特殊说明
如果你指的是内网通信中的私有 IP(Private IP):
- 主网卡(eth0):私有 IP 与实例生命周期强绑定。实例终止后,原私有 IP 丢失。新实例即使使用同一 VPC 和子网,也会分配新的私有 IP。
- 解决方案:无法直接保留原私有 IP。必须在操作系统层面修改应用配置(如数据库连接串、负载均衡器后端组等),或者通过 Network Interfaces (ENI) 的高级操作来实现:
- 将旧实例的主网卡(Primary ENI)解绑(需在实例停止状态下)。
- 将该 ENI 附加(Attach)到新实例上。
- 这样新实例将继承原 ENI 上的所有属性,包括私有 IP 和安全组规则。但这要求新旧实例的架构(VPC、子网、安全组)完全兼容。
专家建议与注意事项
- 成本考量:弹性 IP(EIP)在绑定到运行中的 EC2 实例时是免费的。但如果 EIP 处于未绑定状态,或者绑定到一个非运行的实例(如停止状态的实例),AWS 会按小时收取费用。因此,操作完成后请确保 EIP 始终绑定在运行中的实例上。
- DNS 缓存:虽然 IP 本身没变,但如果涉及底层网络架构调整,部分中间件或防火墙策略可能需要刷新。如果是外部域名解析,通常无需变动;如果是内部依赖硬编码 IP 的应用,需配合 ENI 迁移方案。
- 合规性与稳定性:在生产环境中,严禁直接“热替换”实例而不做数据备份。最稳妥的方式是:快照 -> 启动新实例 -> 验证新实例 -> 解绑 EIP -> 绑定新实例 -> 观察流量 -> 删除旧实例。
- 国内厂商对比:如果你是在阿里云、腾讯云或华为云环境下,逻辑基本一致(均称为“弹性公网 IP"),操作路径均为“解绑 – 绑定”,但在计费规则上,国内厂商通常对“闲置 EIP"也有类似的收费策略,需注意避免产生额外账单。
总结来说,AWS 中没有“一键保留 IP 换实例”的功能,必须通过弹性 IP 的解绑与重绑机制,或者弹性网卡(ENI)的迁移机制来达成目标。
CLOUD云枢