通过弹性公网IP确保服务迁移时公网IP不变

更新时间: 2024-01-15 11:08:26

手动部署

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地址不变。

image.png

说明

弹性公网IP(EIP)是可以独立购买和持有的公网IP地址资源,支持绑定到云服务器ECS、负载均衡SLB、辅助弹性网卡、NAT网关和高可用虚拟IP上,为资源提供公网访问能力,并支持随时与资源解绑,在需要时重新绑定。更多信息,请参见什么是弹性公网 IPEIP与ECS固定公网IP的区别

部署准备

5

请按以下指引完成账号申请、账号充值、RAM用户创建和授权。

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值

    1. 为节省成本,本方案默认全部选择使用按量付费资源,使用按量付费资源需要确保账户余额不小于100元。

    2. 完成本方案的部署及体验,预计产生费用不超过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

  3. 阿里云主账号拥有操作资源的最高权限,从云资源安全角度考虑,建议您创建一个RAM用户,使RAM用户仅能操作有限的资源,然后由RAM用户完成本方案。

    1. 访问资源组页面,单击创建资源组,创建一个资源组,例如设置名称为高可用测试资源组

    2. 访问RAM控制台-用户页面,单击创建用户,填写相关信息,勾选控制台访问OpenAPI 调用访问,创建一个RAM用户。

    3. 单击已创建的RAM用户操作列的添加权限,然后授权。以下为本解决方案所需权限策略,您也可以根据需要适当调整。

      授权范围

      授权策略

      描述

      整个云账号

      AliyunECSFullAccess

      管理云服务器ECS的权限

      AliyunSLBFullAccess

      管理负载均衡服务的权限

      AliyunVPCFullAccess

      管理专有网络VPC的权限

      AliyunECSWorkbenchFullAccess

      使用ECS-Workbench的完整权限

      AliyunEIPFullAccess

      管理弹性公网IP(EIP)的权限

部署服务

您可以参考如下步骤,部署一个可通过固定公网IP访问的简单Web服务。

10

  1. 前往实例创建页,选择自定义购买页签,创建一个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并设置登录密码。

  2. 部署Web服务。

    1. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 执行以下命令,安装Nginx。

      sudo yum -y install nginx
    3. 下载网站示例代码和图片文件。

      以下文件仅为示例,供学习体验使用,您也可以替换为自定义文件。

      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
    4. 执行以下命令,启动Nginx并设置开机自启动。

      sudo systemctl start nginx 
      sudo systemctl enable nginx
    5. 在浏览器上输入ECS实例的固定公网IP地址(例如http://47.X.XX.XX),可正常访问网站服务,表示Web服务部署成功。

      固定公网IP地址可在实例列表的IP地址列获取。

      image.png

迁移服务并保持公网IP地址不变

20

接下来您可以参考如下步骤,在另一台ECS上部署一个完全一样的服务,并将原ECS的固定公网IP转为EIP,再将EIP切换到新的ECS上,模拟在服务迁移的同时保持对外提供服务的公网IP地址不变。

  1. 基于已部署Web服务的ECS实例(假设为ECS_01),创建自定义镜像。

    通过该自定义镜像可快速创建与源实例有相同的操作系统、Web服务器、数据库等环境配置和数据的新实例。

    1. 登录ECS管理控制台

    2. 在页面左侧顶部,选择目标资源所在的地域(本文示例:华东1(杭州))。

    3. 在左侧导航栏,选择实例与镜像 > 实例

    4. 在实例列表找到目标ECS实例(ECS_01),在操作列中,选择更多 > 云盘与镜像 > 创建自定义镜像

    5. 自定义镜像名称,单击确认

      在左侧导航栏,选择实例与镜像 > 镜像,并选择自定义镜像,查看镜像创建进度。

      创建镜像需要一段时间,请您耐心等待。当目标镜像的进度为100%、状态为可用时,表示镜像创建成功。

  2. 使用该自定义镜像创建一个新的ECS实例(假设为ECS_02)。

    1. 在左侧导航栏,单击实例与镜像 > 镜像

    2. 自定义镜像页面,找到上一步创建的自定义镜像,在操作列,单击创建实例

    3. 自定义购买页面,镜像区域已设置为您选择的自定义镜像。根据页面提示,完成其他配置项并购买1台ECS实例。

      其中:

      • 付费类型:抢占式实例。

      • 地域:选择与源实例(ECS_01)相同的地域(本文示例:华东1(杭州))。

      • 网络及可用区:选择与源实例(ECS_01)相同的VPC

      • 公网:不勾选分配公网IPv4地址

      • 安全组:选择与源实例(ECS_01)相同的安全组。

      • 登录凭证:选择自定义密码,登录名选择ecs-user并设置登录密码。

      其他参数按需配置,详细说明,请参见自定义购买实例

  3. 将原ECS实例(ECS_01)的固定公网IP转为EIP。

    重要

    部分场景下固定公网IP不可转为EIP,需先执行相关操作。

    • 请确保ECS实例处于运行中或者已停止状态。

    • 若实例为包年包月实例,且距离到期小于24小时,请先续费实例。具体操作,请参见立即续费

    • 若实例为包年包月实例,且公网带宽计费方式为按固定带宽计费,需先转为按使用流量计费。具体操作,请参见按固定带宽转按使用流量

    1. 在实例列表找到原ECS实例(ECS_01),在操作列中,选择icon1 > 网络和安全组 > 公网IP转换为弹性公网IP

    2. 在弹出的对话框中,确认信息后,单击确定

    3. 刷新实例列表,查看执行结果。

      专有网络VPC公网IP转换为EIP后,原公网IP地址会被标注为弹性,且IP地址仍为http://47.X.XX.XX没有变化。

      image.png

  4. 将EIP与原ECS实例(ECS_01)解绑,并绑定到新创建的ECS实例(ECS_02)上。

    1. 在实例列表找到待解绑EIP的ECS实例(ECS_01),在IP地址列复制该EIP的IP地址备用。

    2. 然后选择icon1 > 网络和安全组 > 解绑弹性IP。在解绑弹性IP对话框中,确认提示信息,单击确定

      解绑成功后,在ECS实例页面的IP地址列不再显示EIP。

    3. 找到新创建的ECS实例(ECS_02),选择icon1 > 网络和安全组 > 绑定弹性IP,在绑定弹性IP对话框中的弹性IP输入框,输入复制的IP地址并选择,绑定EIP。

  5. 验证。

    在浏览器上输原公网IP地址(例如http://47.X.XX.XX),可正常访问网站服务。表示已将服务迁移到另一台ECS实例上,且对外公网IP地址不变。

清理资源

10

测试完方案后,您可以参考以下规则处理对应资源,避免继续产生费用:

  1. 删除自定义镜像及其快照:

    登录ECS控制台,在镜像页面,找到目标自定义镜像,然后在操作列单击删除镜像,根据界面提示删除自定义镜像及其快照。

  2. 释放2台云服务器ECS实例:

    登录ECS控制台,在实例页面,找到目标实例,然后在操作216更多-竖向..png > 实例状态 > 释放,根据界面提示释放实例。

  3. 释放2台交换机:

    登录专有网络控制台,在交换机页面,找到目标交换机,然后在操作列单击删除,按照界面提示释放实例。

  4. 释放1个专有网络VPC:

    登录专有网络控制台,在专有网络页面,找到目标VPC,然后在操作列单击删除,按照界面提示释放实例。

  5. 解绑弹性公网IP并释放:

    登录弹性公网IP管理控制台,找到目标EIP,然后在操作列选择解绑,解绑后在操作列单击216更多-竖向..png > 实例管理 > 释放,按照界面提示释放EIP。

  6. 释放1个传统型负载均衡CLB实例:

    登录传统型负载均衡CLB控制台实例页面,找到目标CLB实例,然后在操作列选择216更多-竖向..png > 释放,按照界面提示释放实例。