从CLB Ingress迁移至ALB Ingress

为提升Ingress(网关路由)的稳定性、性能、扩展性和安全性、获取更丰富的路由功能,建议将原有业务从CLB Ingress迁移至ALB Ingress。本文介绍一种流量无损、业务不中断的迁移方法。

1. 创建ALB Ingress

  1. SAE网关路由中,在顶部选择目标地域和命名空间,点击创建网关路由注意选择的地域和命名空间应与原有CLB Ingress相同。

    1. 自定义路由名称

    2. 网关类型选择ALB应用型负载均衡

    3. ALB实例可以选择已有实例或创建新实例。

    4. 其余参考原有CLB Ingress进行配置。注意需要正确配置网络类型前端协议类型(如果选择HTTPS,还需配置SSL证书)、访问端口自定义转发策略(包括域名Path后端应用容器端口重写策略)、默认转发策略

    5. 点击保存,等待ALB Ingress创建成功。

    6. 点击ALB Ingress条目的网关实例,跳转到ALB实例详情页。在实例详情页签,在基本信息区域获取DNS名称,在可用区区域获取全部弹性公网IP,后续会用到。

    7. 点击ALB Ingress条目的操作列的编辑。获取前端协议类型访问端口、各自定义转发策略的Path,后续会用到。

  2. 验证ALB Ingress(仅适用于公网ALB Ingress):

    1. 修改本地Hosts文件,将自定义转发策略的域名解析到ALB实例的弹性公网IP:

      Windows系统

      1. C:\Windows\System32\drivers\etc\hosts文件末尾添加以下内容并保存。注意将其中<public_ip>替换为ALB实例的任意弹性公网IP,将其中<domain_name>替换为自定义转发策略的域名。

        <public_ip> <domain_name>
      2. 验证Hosts文件配置生效:在CMD命令行执行以下命令,注意将其中<domain_name>替换为自定义转发策略的域名。如果返回结果中包含ALB实例的弹性公网IP,说明Hosts文件配置生效。如果配置未生效,建议重启系统后重试。

        ping <domain_name>

      macOS/Linux系统

      1. /etc/hosts文件末尾添加以下内容并保存。注意将其中<public_ip>替换为ALB实例的任意弹性公网IP,将其中<domain_name>替换为自定义转发策略的域名。

        <public_ip> <domain_name>
      2. 验证Hosts文件配置生效:在CMD命令行执行以下命令,注意将其中<domain_name>替换为自定义转发策略的域名。如果返回结果中包含ALB实例的弹性公网IP,说明Hosts文件配置生效。如果配置未生效,建议重启系统后重试。

        ping <domain_name>
    2. 通过浏览器逐个访问自定义转发策略对应的URL,格式为<前端协议类型>://<域名>:<访问端口><Path>,例如http://xx.xx.xx:80/test,验证配置生效。

2. 配置DNS解析

  1. 以阿里云公网权威解析为例,在公网权威解析中,点击目标域名操作列的解析设置

    1. 解析设置标签页,点击原有CLB Ingress解析记录的操作列的修改 > 修改记录集,在记录值集合区域,点击添加条目记录值设置为ALB实例的弹性公网IP。如果有多个弹性公网IP,则点击添加条目,每个条目对应一个弹性公网IP

    2. 配置权重:记录值负载策略选择权重。以ALB实例具有2个弹性公网IP为例,将ALB实例的2个弹性公网IP记录权重全部设置为1,将原有的CLB实例的记录权重改为98,使得每个ALB实例的弹性公网IP分配到1/100DNS解析流量,而大部分DNS解析流量暂时保持不变。

    3. 点击确定,等待解析记录生效。

  2. DNS解析流量切换到ALB实例的弹性公网IP:观察业务的运行状态和流量情况,在确保没有异常的情况下,逐步减少CLB实例弹性公网IP的记录权重,增大ALB实例弹性公网IP的记录权重,同时保证每个ALB实例弹性公网IP的记录权重时刻相同,直至全部流量切换到ALB实例后,删除原有的CLB实例的记录。

  3. DNS解析流量切换到ALB实例的DNS名称:仅保留ALB实例1个弹性公网IP的记录(删除ALB实例其他弹性公网IP的记录),并点击操作列的修改记录类型改为CNAME记录值改为ALB实例的DNS名称。点击确定,等待解析记录生效。

3. 删除原有CLB实例和CLB Ingress

  1. SAE网关路由中,在顶部选择目标地域和命名空间,点击目标网关路由的网关实例,跳转到网关实例详情页。在右上角点击更多 > 释放,根据页面提示释放CLB实例。

  2. SAE网关路由中,在顶部选择目标地域和命名空间,点击目标网关路由操作列的删除根据页面提示删除CLB Ingress。