通过弹性公网IP确保服务迁移时公网IP不变
手动部署
45
解决什么问题
随着业务的发展,企业可能有将单ECS实例扩容至多个、将服务迁移到另一个ECS实例实现故障逃逸等诉求,并且期望在进行这些操作的同时保持对外提供服务的IP地址不变。然而购买ECS实例时分配的固定公网IP不能直接绑定到其他ECS实例或其他云产品上,无法直接满足这一诉求。
为了解决上述问题,阿里云提供了将专有网络类型的ECS实例所分配的固定公网IP转为弹性公网IP(EIP),且公网IP地址不变的能力。您可以将转换后的EIP绑定到负载均衡SLB或其他ECS实例上,在不影响业务的情况下完成水平扩容、服务迁移。
本解决方案仅适用于专有网络VPC类型的ECS实例。若您的ECS实例网络类型为经典网络,仅支持在释放经典网络类型ECS实例时将固定公网IP转EIP,或您可以将ECS实例从经典网络迁移到专有网络再进行转EIP操作。
方案架构
本文将引导您先通过ECS_01的固定公网IP对外提供一个简单的Web服务,然后模拟一次服务迁移,并借助弹性公网IP保持对外提供服务的公网IP地址不变。
弹性公网IP(EIP)是可以独立购买和持有的公网IP地址资源,支持绑定到云服务器ECS、负载均衡SLB、辅助弹性网卡、NAT网关和高可用虚拟IP上,为资源提供公网访问能力,并支持随时与资源解绑,在需要时重新绑定。更多信息,请参见什么是弹性公网 IP和EIP与ECS固定公网IP的区别。
部署准备
5
请按以下指引完成账号申请、账号充值、RAM用户创建和授权。
如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。
为节省成本,本方案默认全部选择使用按量付费资源,使用按量付费资源需要确保账户余额不小于100元。
完成本方案的部署及体验,预计产生费用不超过1元(假设您选择本文示例规格资源,且资源运行时间不超过60分钟。实际情况中可能会因您操作过程中实际使用的流量差异,会导致费用有所变化,请以控制台显示的实际报价以及最终账单为准,如下表格仅供参考)。
序号
产品
计费项
规格
地域
预估费用参考
1
云服务器 ECS
ECS_01配置费
实例:ecs.t5-lc1m1.small(1 vCPU 1 GiB,抢占型实例)
系统盘:高效云盘 20GiB
华东1(杭州)
0.093/元/时
2
ECS_02配置费
华东1(杭州)
0.093/元/时
3
弹性公网IP或固定公网IP
公网流量费
按使用流量计费
华东1(杭州)
0.800元/GB
4
传统型负载均衡 CLB
CLB LCU费
按使用量计费
华东1(杭州)
0.042元/LCU
阿里云主账号拥有操作资源的最高权限,从云资源安全角度考虑,建议您创建一个RAM用户,使RAM用户仅能操作有限的资源,然后由RAM用户完成本方案。
访问资源组页面,单击创建资源组,创建一个资源组,例如设置名称为高可用测试资源组。
访问RAM控制台-用户页面,单击创建用户,填写相关信息,勾选控制台访问和OpenAPI 调用访问,创建一个RAM用户。
单击已创建的RAM用户操作列的添加权限,然后授权。以下为本解决方案所需权限策略,您也可以根据需要适当调整。
授权范围
授权策略
描述
整个云账号
AliyunECSFullAccess
管理云服务器ECS的权限
AliyunSLBFullAccess
管理负载均衡服务的权限
AliyunVPCFullAccess
管理专有网络VPC的权限
AliyunECSWorkbenchFullAccess
使用ECS-Workbench的完整权限
AliyunEIPFullAccess
管理弹性公网IP(EIP)的权限
部署服务
您可以参考如下步骤,部署一个可通过固定公网IP访问的简单Web服务。
10
前往实例创建页,选择自定义购买页签,创建一个ECS实例(假设为ECS_01),并分配一个固定公网IPv4地址。
本文采用了以下示例配置,实际业务请按需选择。参数详细说明,请参见自定义购买实例。
付费类型:抢占式实例,本文示例规格ecs.t5-lc1m1.small。
重要为节省测试成本,本文示例采用了低规格实例,付费模式为抢占式实例,相对按量付费实例有一定的折扣。默认情况,您可以稳定持有抢占式实例至少1小时。1小时后,当市场价格高于您的出价或实例库存不足时,抢占式实例会被自动释放,请做好数据备份工作。
如果您需要长期稳定持有ECS实例,付费类型建议选择包年包月或按量付费。
地域:建议选择靠近您业务的地域,本文示例为华东1(杭州)。
镜像:Alibaba Cloud Linux 3。
系统盘:高效云盘 20GiB,供测试使用。
公网IP:勾选分配公网 IPv4 地址。创建实例时,系统会自动为实例分配一个固定公网IPv4地址。
安全组:新建普通安全组,IPv4端口开通22、80端口。
登录凭证:选择自定义密码,登录名选择
ecs-user
并设置登录密码。
部署Web服务。
远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例。
执行以下命令,安装Nginx。
sudo yum -y install nginx
下载网站示例代码和图片文件。
以下文件仅为示例,供学习体验使用,您也可以替换为自定义文件。
sudo wget -O /usr/share/nginx/html/index.html https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20231013/jhgg/index.html sudo wget -O /usr/share/nginx/html/lipstick.png https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230925/zevs/lipstick.png
执行以下命令,启动Nginx并设置开机自启动。
sudo systemctl start nginx sudo systemctl enable nginx
在浏览器上输入ECS实例的固定公网IP地址(例如
http://47.X.XX.XX
),可正常访问网站服务,表示Web服务部署成功。固定公网IP地址可在实例列表的IP地址列获取。
迁移服务并保持公网IP地址不变
20
接下来您可以参考如下步骤,在另一台ECS上部署一个完全一样的服务,并将原ECS的固定公网IP转为EIP,再将EIP切换到新的ECS上,模拟在服务迁移的同时保持对外提供服务的公网IP地址不变。
基于已部署Web服务的ECS实例(假设为ECS_01),创建自定义镜像。
通过该自定义镜像可快速创建与源实例有相同的操作系统、Web服务器、数据库等环境配置和数据的新实例。
登录ECS管理控制台。
在页面左侧顶部,选择目标资源所在的地域(本文示例:华东1(杭州))。
在左侧导航栏,选择
。在实例列表找到目标ECS实例(ECS_01),在操作列中,选择
。自定义镜像名称,单击确认。
在左侧导航栏,选择
,并选择自定义镜像,查看镜像创建进度。创建镜像需要一段时间,请您耐心等待。当目标镜像的进度为100%、状态为可用时,表示镜像创建成功。
使用该自定义镜像创建一个新的ECS实例(假设为ECS_02)。
在左侧导航栏,单击
。
将原ECS实例(ECS_01)的固定公网IP转为EIP。
重要部分场景下固定公网IP不可转为EIP,需先执行相关操作。
请确保ECS实例处于运行中或者已停止状态。
若实例为包年包月实例,且距离到期小于24小时,请先续费实例。具体操作,请参见立即续费。
若实例为包年包月实例,且公网带宽计费方式为按固定带宽计费,需先转为按使用流量计费。具体操作,请参见按固定带宽转按使用流量。
在实例列表找到原ECS实例(ECS_01),在操作列中,选择
。在弹出的对话框中,确认信息后,单击确定。
刷新实例列表,查看执行结果。
专有网络VPC公网IP转换为EIP后,原公网IP地址会被标注为弹性,且IP地址仍为
http://47.X.XX.XX
没有变化。
将EIP与原ECS实例(ECS_01)解绑,并绑定到新创建的ECS实例(ECS_02)上。
在实例列表找到待解绑EIP的ECS实例(ECS_01),在IP地址列复制该EIP的IP地址备用。
然后选择
。在解绑弹性IP对话框中,确认提示信息,单击确定。解绑成功后,在ECS实例页面的IP地址列不再显示EIP。
找到新创建的ECS实例(ECS_02),选择
,在绑定弹性IP对话框中的弹性IP输入框,输入复制的IP地址并选择,绑定EIP。
验证。
在浏览器上输原公网IP地址(例如
http://47.X.XX.XX
),可正常访问网站服务。表示已将服务迁移到另一台ECS实例上,且对外公网IP地址不变。
清理资源
10
测试完方案后,您可以参考以下规则处理对应资源,避免继续产生费用:
删除自定义镜像及其快照:
登录ECS控制台,在镜像页面,找到目标自定义镜像,然后在操作列单击删除镜像,根据界面提示删除自定义镜像及其快照。
释放2台云服务器ECS实例:
登录ECS控制台,在实例页面,找到目标实例,然后在操作列 ,根据界面提示释放实例。
释放2台交换机:
登录专有网络控制台,在交换机页面,找到目标交换机,然后在操作列单击删除,按照界面提示释放实例。
释放1个专有网络VPC:
登录专有网络控制台,在专有网络页面,找到目标VPC,然后在操作列单击删除,按照界面提示释放实例。
解绑弹性公网IP并释放:
登录弹性公网IP管理控制台,找到目标EIP,然后在操作列选择解绑,解绑后在操作列单击 ,按照界面提示释放EIP。
释放1个传统型负载均衡CLB实例:
登录传统型负载均衡CLB控制台,在实例页面,找到目标CLB实例,然后在操作列选择 ,按照界面提示释放实例。