更换ECS实例的VPC,是指将ECS实例从一个VPC迁移到另一个VPC中,而不改变ECS实例所在的地域及可用区。随着业务的发展或安全策略的变化,原有的网络结构可能不再满足需求,例如,当您需要隔离不同业务系统之间的流量时,可能需要将某些服务迁移到新的VPC中。
适用场景
前期VPC规划不合理,随着业务的逐渐扩大,原来的VPC不能满足需求,需要通过ECS实例更换VPC进行重新规划。
前期只规划一个VPC,不同的项目和使用环境共用此VPC,存在数据操作风险。现在希望按项目、使用环境划分为单独的VPC,需要通过ECS实例更换VPC操作进行项目迁移。
当您通过云企业网、VPC对等连接等方式实现跨VPC互联时,通常建议您确保需要互通的网段没有重叠。如果您需要互通的实例存在网络重叠造成地址冲突,您可以通过为其中一端实例更换VPC的方式解决。
限制条件
ECS实例变更前后的交换机必须在同一可用区。
如果因业务需要,您需要将ECS实例迁移到同地域其他可用区,请参见跨可用区迁移。
如果因为地域资源库存不足、成本优化、灾难恢复、缩容实例磁盘等原因,需要将ECS实例从一个账户/地域迁移到另一个账户/地域,请参见跨账号和同账号ECS实例间迁移。
ECS实例变更可选择1~5个目标安全组,但目标安全组类型必须一致(都是普通安全组或都是企业级安全组)。
批量更换ECS实例的VPC时,单次最多支持20个ECS实例。
更换后影响
私网IP:更换ECS实例的VPC后,实例的主私网IP地址会变为目标交换机网段范围内的IP地址。如果您的私网IP被其他服务或应用配置使用,需要您修改为更换后的主私网IP地址。
说明实例的公网IP地址不受影响。
网络互通:更换ECS实例的VPC后,此ECS实例无法直接和原有VPC内的其他ECS实例互通。如果需要实现互通,请参见跨VPC互联。
访问控制:如果原VPC和目标VPC使用了不同的网络ACL、安全组配置,则需要检查并可能调整以确保应用程序正常运行。详细信息,请参见VPC访问控制。
路由表配置:新的VPC可能具有与原来不同的路由表配置。对于依赖特定路由规则的应用来说,可能需要重新配置或添加相应的路由条目来保证连通性。详细信息,请参见路由表。
私网域名解析:如果ECS实例启用了私网域名解析,变更VPC可能导致域名解析失效。您需要确认目标VPC同原VPC一样启用了主机名功能,保证私网域名解析功能正常可用。详细信息,请参见VPC启用/禁用DNS主机名功能。
前置检查
在进行更换VPC之前,您需要对ECS进行以下检查,保证更换顺利进行:
ECS实例须处于停止状态。如何停止ECS实例,请参见停止实例。
说明实例的状态不能为已锁定、等待释放、已过期、过期回收中、欠费回收中。更多信息,请参见实例的生命周期。
ECS实例未绑定辅助弹性网卡,如果ECS实例已绑定辅助弹性网卡,您需要为实例解绑辅助弹性网卡。
ECS实例的主网卡只能有一个主私网IPv4地址,如果您为主网卡分配了IPv6、辅助私网IPv4地址,您需要删除已分配的IPv6地址、回收辅助私网IP地址。
ECS实例未通过私网远程连接。如果ECS实例已经通过私网远程连接(如Workbench)生成私网链路,请参见释放授权链接。
ECS实例未加入SLB的后端服务器组。SLB中如何移除后端服务器,请参见在默认服务器组添加和管理后端服务器。
ECS实例不在自定义路由条目中。如果ECS实例被配置在自定义路由表中,即使实例所在交换机没有绑定该路由条目所在路由表,也无法更换VPC。请先将ECS实例从自定义路由表条目中移除。具体操作,请参见将ECS移除路由表条目。
ECS实例未关联高可用虚拟IP(HaVip)。如果ECS实例关联了HaVip,您可以将ECS实例和HaVip解除关联,具体操作,请参见管理HaVip。
ECS实例不能作为后端服务节点被绑定在全球加速实例中。如果您通过全球加速为ECS实例提供了加速服务,您需要删除ECS所在的终端节点。详细信息,请参见添加和管理终端节点组与终端节点。
ECS实例不能在其他云服务中被使用。例如,实例不能在迁移中、不能在更换VPC中、实例内部署的数据库不能被DTS服务管理等。
已经为ECS实例准备好更换的目标VPC、交换机和安全组。
如果您的目标VPC中没有相应安全组,您可以通过克隆原VPC下ECS实例所关联的安全组到目标VPC的方式,快速创建安全组。具体操作,请参见克隆安全组。
如果您的目标VPC为其他账号共享给您的VPC,安全组必须为您的账号在该共享VPC下创建的安全组。
具体操作
更换VPC操作会导致ECS实例短暂不可用。请务必考虑业务连续性和客户体验等因素,选择合适的时机进行操作。
建议您选择业务低峰期时段,做好ECS快照和备份后再进行VPC变更操作。
通过控制台更换
登录ECS管理控制台。
在左侧导航栏,选择 。
在页面左侧顶部,选择目标资源所在的资源组和地域。
单个或批量更换ECS实例的VPC。
更换单个ECS实例的VPC
找到目标ECS实例,在操作列中,选择
。批量更换多个ECS实例的VPC
选中多个目标ECS实例,在ECS实例列表底部选择
。
在更换专有网络配置向导页面,按照指引更换ECS实例的专有网络。
在变更准备阶段,查看变更前的网络信息和注意事项,单击下一步。
在选择专有网络阶段,选择ECS需要切换的目标专有网络、目标交换机和目标安全组,单击下一步。
(可选)在配置主私网IP阶段,设置ECS切换后的主私网IP地址。
设置的主私网IP需要在目标交换机的网段内。
如果您不手动设置主私网IP,则主私网IP由系统自动分配。
单击确定。
查看结果。
切换完成后,您可以单击ECS实例ID,在实例详情页面的配置信息区域查看切换后的专用网络和虚拟交换机。
如果您已经在EventBridge、云监控中设置了事件通知用于获取更换ECS实例的VPC的操作结果信息,切换完成后,您将会收到交换机变更完成事件通知。
设置事件通知的具体操作,请参见订阅ECS系统事件通知。
EventBridge的更多信息,请参见云服务器ECS事件。
交换机变更完成事件通知的更多信息,请参见交换机事件通知。
通过API更换
您也可以通过ModifyInstanceVpcAttribute修改ECS实例的专有网络VPC、虚拟交换机、安全组等信息。
修改完成后,您可以通过调用DescribeInstances,根据返回的VpcId、VSwitchId、SecurityGroupId,查看更换后实例的专有网络、虚拟交换机、安全组信息。
常见报错
在更换专有网络时如发生以下报错,请您仔细阅读前置检查,并根据实际报错信息及对应解决方案进行处理:
错误一:
InvalidDependence.GrantAccess
报错原因:更换VPC时,实例不能在其它云服务中被使用。报错提示ECS实例可能关联使用了其他产品(如DBS、DTS、DMS、Workbench等)。
解决方案:释放反向授权链接,将对其它产品的授权删除后再进行尝试。
如果您的实例通过Workbench私网远程连接生成私网链路,可以参考以下操作,释放授权链接:
登录Workbench控制台,查看是否存在对应ECS实例的反向授权链接,如果存在,请单击右侧的释放链路。
在私网链路释放提示弹窗中,单击确认释放,然后再尝试更换。如果问题还是无法解决,请提交工单,联系阿里云技术支持进行协助处理。
错误二:
InvalidDependence.NextHopOfCustomRouter
报错原因:更换VPC时,实例不能在自定义路由条目中。即使实例所在交换机没有绑定该路由条目所在路由表,也会报错。报错提示ECS实例是某个自定义路由表条目中的下一条。
解决方案:删除实例所在的路由条目。具体操作如下所示:
登录路由表控制台。
在顶部状态栏处,选择ECS所属原VPC的地域。
在路由表页面,找到包含要更换VPC的ECS实例的路由条目。
点击删除,删除该路由条目后,再次尝试更换实例的VPC。
错误三:
InvalidDependence.SLB
报错原因:更换VPC时,ECS实例不能关联负载均衡实例。即使ECS没有被SLB挂载到后端RS,只要加入到ECS的服务器组中,也会报错。
解决方案:确认ECS实例加入的SLB的后端服务器组,并在该服务器组中移除ECS实例。具体操作,请参见在默认服务器组添加和管理后端服务器。移除后,再次尝试更换实例的VPC。
错误四:
EnterpriseGroupLimited.MutliGroupType
报错原因:更换VPC时,选择目标VPC中的多个安全组时(1~5个),安全组的类型需要一致(均为普通安全组或均为企业级别安全组)。报错提示,您选择的安全组中存在两种类型。
解决方案:选择同一类型的安全组。
错误五:
Invalidinstance.AttachedEni
报错原因:更换VPC时,ECS实例不允许绑定辅助网卡。
解决方案:ECS实例解绑辅助弹性网卡,具体操作,请参见解绑辅助弹性网卡。
错误六:
PrimaryEniHasSubIp
报错原因:更换VPC时,ECS实例不允许有多IP。报错提示,ECS实例的主网卡分配了多个辅助私网IP地址。
解决方案:回收ECS实例上已分配的辅助私网IP地址。具体操作,请参见回收辅助私网IP地址。
相关文档
如果您需要跨账号、跨VPC的ECS之间实现内网互通,您可以通过私网连接等方式实现,详细信息,请参见跨账号VPC间的私网访问服务。