直接给结论:会更换。
只要你是通过阿里云控制台或者 API 执行“停机并更改实例规格”(Stop Instance and Change Instance Type)的操作,公网 IP 地址一定会变。
这里面的逻辑其实很简单,我给你拆解一下,免得你踩坑:
1. 为什么换?
阿里云的 ECS 实例规格变更属于底层硬件资源的重新分配。
- 原 IP 归属:你原来的公网 IP(无论是弹性公网 IP EIP 还是普通公网 IP)是绑定在你那台特定配置、特定物理宿主机上的实例 ID 上的。
- 新实例诞生:当你升级规格时,系统本质上是销毁了旧的实例资源,并在新的可用区或不同的物理机上创建了一个全新的实例。虽然你的操作系统数据盘(Data Disk)和系统盘快照如果处理得当可以保留,但实例 ID 变了,网络栈重置了,公网 IP 自然也就跟着新实例走了。
2. 两种情况的区别
你需要分清楚你用的是哪种公网 IP,处理方式完全不同:
情况 A:你使用的是【普通公网 IP】(即创建实例时直接绑定的 IP)
- 结果:必换。
- 影响:旧 IP 立即释放,新实例获得一个新的随机公网 IP。
- 风险:如果你的业务域名解析、防火墙白名单、第三方服务回调地址都写死了这个旧 IP,业务会瞬间中断。你必须手动去 DNS 控制台修改 A 记录,或者联系客户更新白名单。
情况 B:你使用的是【弹性公网 IP (EIP)】
- 结果:IP 本身不会变,但绑定关系会断开再重连。
- 关键点:EIP 是一个独立的公网资源,不随实例销毁而消失。
- 操作细节:在升级规格的过程中,系统会自动解绑 EIP,然后在新实例启动后重新绑定。理论上,对外暴露的 IP 地址是不变的。
- 注意:虽然 IP 没变,但在停机切换规格的那几分钟到十几分钟内,网络是断开的。如果你的应用没有做高可用(HA)或负载均衡(SLB/ALB),用户依然会感觉到短暂的服务不可用。
3. 如何避免业务中断?(最佳实践)
如果你必须升级规格,且不能接受 IP 变化带来的 DNS 解析延迟或白名单失效问题,建议按以下步骤操作:
-
强烈建议使用 EIP:
- 在升级前,先把普通公网 IP 卸载,转换为 EIP。
- 这样无论怎么换实例,公网出口 IP 永远是你指定的那个 EIP,DNS 都不用改。
-
使用负载均衡(SLB/ALB):
- 这是最稳妥的方案。前端放一个 SLB,后端挂多台 ECS。
- 升级其中一台 ECS 规格时,SLB 会将流量切走,对终端用户无感知。
- 即使 IP 变了,因为客户端访问的是 SLB 的 VIP(虚拟 IP),根本不知道后端 ECS 的真实 IP 是什么。
-
如果是单台机器且必须用普通公网 IP:
- 先在 DNS 控制台把解析 TTL 值调低(比如 60 秒)。
- 停机升级。
- 新实例启动后,立即去控制台查看新 IP。
- 快速修改 DNS 解析记录指向新 IP。
- 检查所有依赖该 IP 的防火墙策略和白名单。
4. 总结
| 操作方式 | 是否停机 | 公网 IP 变化 | 业务影响 |
|---|---|---|---|
| 更改实例规格 | 是(必须停机) | 会变(除非用了 EIP) | 中等,需处理 DNS/白名单 |
| 重启实例 | 是 | 不变 | 低,仅服务短暂中断 |
| 热升级(部分规格支持) | 否 | 不变 | 极低,但仅限特定实例族 |
避坑提示:
不要试图在不停机的情况下直接改规格,阿里云目前大部分实例类型都不支持“热升级”。所谓的“热升级”通常是指 CPU/Memory 的热迁移,但那是在同一宿主机内部移动,且对实例规格族的兼容性要求极高,大多数常规升级场景还是需要走“停机->改配->开机”的流程。
所以,记住一句话:要改规格,先备 EIP;要保连续,上 SLB。
云技术博客