CLB七层监听手动迁移ALB最佳实践

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

应用型负载均衡ALB(Application Load Balancer)相比传统型负载均衡CLB(Classic Load Balancer),具有强大的七层负载均衡处理能力与丰富的高级路由功能,具备大规模应用层流量处理能力,可以一键开启WAF应用防护,转发与防护完全解耦。且支持更多高阶功能,让您拥有更好的负载均衡体验。本文为您介绍如何将CLB七层监听手动迁移至ALB。

场景示例

本文以下图场景为例。某企业在阿里云华东1(杭州)地域已购买了一个公网CLB实例,该CLB实例已配置重定向、域名和路径的转发策略,且对外通过DNS域名提供服务。客户端访问域名www.example.net时,DNS解析会根据A记录配置将流量指向CLB实例,CLB实例根据转发策略将流量转发到ECS01和ECS02处理。

image

由于业务发展需要,该企业需要将CLB实例的业务迁移至ALB实例。为了保持业务稳定,希望不改变对外提供服务的DNS域名及后端服务器的IP地址。企业可以通过在华东1(杭州)地域新购一个ALB实例并完成相关配置,使ALB转发规则提供的能力与CLB转发策略一致,然后利用DNS域名解析的权重设置完成流量的迁移。

image

注意事项

  • CLB的计费方式为包年包月和按量付费,ALB的计费方式为按量付费,CLBALB的计费项、定价等存在差异,CLB实例的业务迁移ALB实例后,会产生计费变更。具体计费规则,请参见:

  • ALB实例和CLB实例的后端服务器属于同一个VPC,且后端服务器相同。

  • CLB实例的TCP监听、UDP监听业务不支持迁移至ALB,仅支持迁移HTTP、HTTPS监听的应用负载业务。

  • IPv4的CLB实例可以迁移至IPv4或双栈的ALB实例,IPv6的CLB实例只能迁移至双栈的ALB实例。

前提条件

  • 待迁移的CLB实例已配置监听和后端服务器,且该CLB实例已设置A记录域名解析,对外通过域名提供服务。具体操作,请参见入门概述

  • 待迁移的CLB实例的后端服务器为ECS01和ECS02,且ECS01和ECS02所属专有网络为VPC1。

  • 待迁移的CLB实例已配置重定向和转发策略。具体操作请参见使用CLB将HTTP访问重定向至HTTPS基于域名或URL路径进行转发

  • 您已在VPC1中创建了云服务器ECS03和ECS04,ECS03用于进行迁移前的流量测试,ECS04用于验证迁移时的访问流量,且ECS04已安装dig命令。

单击查看本文CLB和ALB的参数规划。

配置

CLB

ALB

网络类型

公网

服务地址:47.XX.XX.144

公网

DNS域名:alb-a8mmh2qez5jo******.cn-hangzhou.alb.aliyuncs.com

域名解析

www.example.net

www.example.net

监听协议

HTTP,监听端口80。

HTTP,监听端口80。

后端服务器

ECS01、ECS02

ECS01、ECS02

重定向

CLB实例已配置HTTP:80重定向至HTTPS:443。

ALB实例HTTP监听需配置重定向转发规则。重定向转发规则配置如下:

  • 匹配条件:路径为/*。

  • 转发动作:转发至HTTPS监听的443端口。

转发策略

CLB实例已在HTTPS监听上配置域名和路径的转发策略。

  • 域名:www.example.net

  • URL:/home

  • 虚拟服务器组:虚拟服务器的后端服务器为ECS01和ECS02。

ALB实例HTTPS监听需配置域名和路径的转发规则。域名和路径的转发规则配置如下:

  • 域名:www.example.net

  • 路径:/home*

  • 转发至:后端服务器为ECS01和ECS02的服务器组。

迁移步骤

image

步骤一:创建ALB实例

  1. 登录应用型负载均衡ALB控制台
  2. 实例页面,单击创建应用型负载均衡

  3. 应用型负载均衡(按量付费)购买页面,完成以下配置。

    配置

    说明

    地域

    选择ALB实例所属的地域,需与待迁移CLB实例所属的地域相同。本文选择华东1(杭州)

    实例网络类型

    选择实例网络类型,系统会根据您的选择分配私网或公网服务地址。实例网络类型需与待迁移CLB实例相同。本文选择公网

    • 私网:ALB只有私网IP地址,只能被ALB所在VPC内的资源访问,无法从互联网访问。

    • 公网:ALB具有公网IP和私网IP地址。公网ALB默认通过弹性公网IP(Elastic IP Address,简称EIP)提供公网能力,选择公网将会收取弹性公网IP的实例费、流量费用。

      • 公网IP:弹性公网IP对外提供服务,支持通过互联网访问ALB

      • 私网IP:支持云上VPC内的资源访问ALB

    ALB支持变更实例网络类型。具体操作,请参见变更ALB实例的网络类型

    说明

    对于双栈实例,默认使用IPv4地址对外提供公网服务。如果您需要使用IPv6公网地址,需要变更网络类型,同时会产生IPv6网关费用,更多信息,请参见IPv6网关计费说明

    VPC

    选择待迁移CLB实例后端服务器所在的VPC。本文选择VPC1。

    可用区

    选择可用区和交换机。

    1. ALB支持多可用区部署,若当前地域支持2个及2个以上的可用区,为保障业务高可用,请至少选择2个可用区,且ALB不会额外收取可用区的费用。

    2. 分别在所选可用区内选择交换机,如果可用区下无交换机,请根据控制台提示创建交换机。

    3. 可选:分别在所选可用区内选择EIP。

      • 如果无可用存量EIP,可保持默认选项自动分配公网IP:系统将帮您自动创建按量付费(按使用流量计费)的BGP多线默认安全防护EIP,并绑定至ALB实例。

      • 选择已有的EIP:您可以指定已创建的EIP并绑定至新购的ALB实例上。

        说明
        • 仅可绑定暂未加入共享带宽的按量付费(按使用流量计费)的已购EIP。

        • 同一个ALB实例不同可用区分配的EIP类型需保持一致。

    IP模式

    选择实例的IP地址模式。

    • 固定IP:每个可用区有且只有一个IP,并且IP地址保持固定不变。此模式下实例弹性能力有限,最大支持10万QPS。

    • 动态IP:每个可用区至少有一个IP,随着业务请求的增加,会自动扩展IP数量。此模式下最大支持100万QPS。

    协议版本

    选择实例的协议版本。IPv4的CLB实例可以迁移至IPv4或双栈的ALB实例,IPv6的CLB实例仅支持迁移至双栈ALB实例。您可以根据实际情况选择协议版本。

    • IPv4:表示ALB实例仅支持客户端使用IPv4地址访问。

    • 双栈:表示ALB实例支持客户端同时使用IPv4和IPv6地址访问。双栈使用限制,请参见协议版本

    功能版本(实例费)

    选择实例的功能版本。

    • 基础版:包含应用型负载均衡的基本功能,可支持基于域名、URL、HTTP Header等路由转发。

    • 标准版:在基础版的功能基础上,还包含自定义TLS安全策略,重定向、重写等高级路由功能。

    • WAF增强版:在标准版的功能基础上增加WAF安全防护功能,选择此功能后ALB实例上配置监听的Web业务流量自动接入到WAF 3.0防护。WAF增强版使用限制,请参见ALB WAF增强版的使用限制

    关于基础版、标准版、WAF增强版功能差异的更多信息,请参见功能特性

    加入共享带宽

    未加入共享带宽时,单ALB实例(双可用区)默认公网带宽峰值为400 Mbps。

    如需更大带宽,请选择加入共享带宽。如选中加入共享带宽,则需选择共享带宽包,如果没有可选共享带宽包,可单击购买共享带宽包并完成购买,然后返回ALB购买页面单击刷新图标,即可选择共享带宽包。

    建议您购买后付费共享带宽,关于如何购买共享带宽,请参见创建共享带宽实例

    说明

    该参数仅在实例网络类型公网时有效。

    公网计费方式

    公网计费方式默认选项为按流量计费。按流量计费方式中带宽峰值不作为业务承诺指标,仅作为参考值和带宽上限峰值。当出现资源争抢时,带宽峰值可能会受到限制。关于弹性公网网络费计费说明,请参见弹性公网IP计费

    说明

    该参数仅在实例网络类型公网,并且未选择加入共享带宽时有效。

    实例名称

    输入自定义实例名称。

    资源组

    选择ALB所属的资源组。

    关联角色创建须知

    首次购买应用型负载均衡时您需要单击创建创建一个服务关联角色,允许应用型负载均衡访问您的弹性网卡,安全组,弹性公网IP,共享带宽包等产品服务。更多信息,请参见ALB服务关联角色

    说明

    该参数仅在首次创建ALB时展示。

  4. 单击立即购买,然后根据控制台提示完成实例开通。

步骤二:创建ALB服务器组

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏处,选择ALB实例所属的地域。本文选择华东1(杭州)

  3. 在左侧导航栏,选择应用型负载均衡ALB > 服务器组

  4. 服务器组页面,单击创建服务器组

  5. 创建服务器组对话框,完成以下配置,然后单击创建

    配置

    说明

    服务器组类型

    选择一种服务器组类型。本文选择服务器类型

    服务器组名称

    输入自定义服务器组名称。本文输入RS1

    VPC

    从VPC下拉列表中选择一个VPC,只有该VPC下的服务器可以加入到该服务器组。本文选择待迁移CLB实例后端服务器所属的VPC1。

    选择后端协议

    选择一种后端协议。本文选择HTTP

    选择调度算法

    选择一种调度算法。本文选择加权轮询

    选择资源组

    选择云资源归属的资源组。

    开启IPv6挂载

    选择是否需要开启IPv6挂载功能。本文保持默认配置,即不开启IPv6挂载。

    开启会话保持

    开启或关闭会话保持。本文保持默认配置,即不开启会话保持。

    是否开启后端长连接

    选择是否需要开启后端长连接,本文保持默认配置,即开启后端长连接。

    配置健康检查

    开启或关闭健康检查。本文保持默认配置,即开启健康检查。

    高级配置

    本文保持默认配置。

  6. 在弹出的对话框中,单击添加后端服务器,在后端服务器页签,单击添加后端服务器

  7. 添加后端服务器面板,选择与待迁移CLB实例相同的后端服务器,然后单击下一步

    本文选择ECS01和ECS02。

  8. 配置端口和权重配置向导,设置ECS的端口和权重,然后单击确定。

    本文端口配置为80,权重保持默认值100。

    说明

    ALB实例动态IP模式最高提供100万QPS,标准版ALB实例最多可挂载1000台后端服务器。为了应对业务突增或者指定时间段的波峰,您可以使用弹性伸缩为ALB自动添加或移除后端服务器,有效控制成本。

步骤三:ALB实例配置监听

本文以为ALB实例配置重定向、域名和路径的转发规则为例进行介绍。

说明
  • CLB配置了HTTP重定向,ALB的HTTP监听也需配置重定向转发规则。

  • CLB配置了域名和路径的转发策略,ALB也需要配置域名和路径的转发规则,且需与CLB实现的功能一致。

添加HTTP和HTTPS监听

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏处,选择ALB实例所属的地域。本文选择华东1(杭州)

  3. 选择以下一种方法,打开监听配置向导。

    • 实例页面,在目标实例操作列单击创建监听

    • 实例页面,单击目标实例ID。在监听页签,单击创建监听

  4. 配置监听配置向导,完成以下配置,然后单击下一步完成HTTP监听的配置。

    监听配置

    说明

    选择监听协议

    选择监听的协议类型。

    本文选择HTTP

    监听端口

    输入用来接收请求并向后端服务器进行请求转发的监听端口,端口范围为1~65535。 通常HTTP协议使用80端口,HTTPS协议使用443端口。

    说明

    在同一个负载均衡实例内,监听端口不可重复。

    本文输入80

    监听名称

    输入监听名称。

    高级配置

    单击修改展开高级配置。本文保持默认配置。

  5. 选择服务器组配置向导,选择服务器类型的服务器组,查看后端服务器信息,然后单击下一步

    本文选择服务器组RS1。

  6. 配置审核配置向导,确认配置信息,然后单击提交

  7. 请参见添加HTTPS监听完成HTTPS监听的配置。

    此处仅列出与本文强相关的配置项:

    • 选择监听协议:选择HTTPS

    • 监听端口:输入443

配置重定向

ALB实例的HTTP监听配置重定向转发规则,将访问ALB的所有HTTP请求均重定向至HTTPS的443端口。

  1. 监听页签,单击已创建的HTTP监听ID。在监听详情页,单击转发规则页签。

  2. 转发规则页签,单击插入新规则

  3. 插入转发规则区域,完成以下参数的配置,然后单击确定

    重定向配置

    配置

    说明

    如果(条件全部匹配)

    在下拉框中选择路径精准匹配及通配符,本文输入/*

    那么转发动作是

    在下拉框中选择重定向,参数配置如下。

    • 协议:本文选择HTTPS

    • 域名:本文使用默认值${host}

    • 端口:输入您已创建的HTTPS协议监听端口。本文输入443

    • 路径:本文使用默认值${path}

    • 查询:本文使用默认值${query}

    • 状态码:本文选择301

配置域名和路径转发

ALB实例的HTTPS监听配置域名和路径的转发规则。

  1. 返回监听页签,单击已创建的HTTPS监听ID。在监听详情页,单击转发规则页签。

  2. 转发规则页签,单击插入新规则

  3. 插入转发规则区域,完成以下参数的配置,然后单击确定

    域名转发规则配置

    配置

    说明

    如果(条件全部匹配)

    1. 在下拉框中选择域名精准匹配及通配符,本文输入www.example.net

    2. 单击添加转发条件,在下拉框中选择路径,本文输入/home*

    那么转发动作是

    选择转发至服务器类型的服务器组。本文选择服务器组RS1。

    说明

    此处选择的服务器组中的后端服务器,需与待迁移CLB实例转发策略中虚拟服务器组的后端服务器保持一致。

步骤四:测试流量

开启访问日志

ALB联合日志服务(SLS)推出了访问日志功能,您可以通过访问日志监控ALB实例的负载情况和定位问题。

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏处,选择ALB实例所属的地域。本文选择华东1(杭州)

  3. 实例页面,找到目标ALB实例,单击实例ID。

  4. 在实例详情页,单击访问日志页签。在访问日志页签,单击创建访问日志

  5. 创建访问日志对话框,配置项目Project日志库Logstore,然后单击确定,在弹出的对话框中确认提示信息后,再次单击确定

    配置

    说明

    项目Project

    日志服务中的资源管理单元,用于资源隔离和控制。

    • 选择现有Project:在下拉框中选择一个Project。

    • 新建Project:在文本框中输入新建Project名称。

    日志库Logstore

    日志服务中日志数据的采集、存储和查询单元。

    • 选择现有Logstore:在下拉框中选择一个Logstore。

    • 新建Logstore:在文本框中输入新建Logstore名称。Project选择新建时,Logstore也需选择新建。

    服务关联角色创建须知

    执行此操作时,将会为您自动创建一个服务关联角色,以完成相应功能。

流量测试

  1. 远程登录ECS03,具体操作,请参见ECS远程连接操作指南

  2. 执行以下命令修改hosts文件。

    sudo vi /etc/hosts

    进入hosts文件中,新增以下ALB实例的IP地址及域名。修改完成后,保存并退出该文件的修改。

    118.XX.XX.39 www.example.net
  3. 执行以下命令,测试重定向配置。

    curl -X GET -L -v   http://www.example.net

    运行结果如下图所示:CLB迁移ALB流程测试

  4. 返回ALB控制台,找到目标ALB实例的访问日志页签,单击SLS日志存储右侧的链接,查看访问日志。

    访问日志在日志服务控制台,您可以结合request_uri、http_host、upstream_addr、status字段查看ALB域名和路径转发策略的运行日志。

步骤五:迁移流量至ALB

本文假设CLB的访问链路如下图所示。已配置HTTP:80重定向至HTTPS:443,HTTPS支持多域名访问,本文配置的域名为example.net。

image

警告
  • 流量迁移前,请比对您的CLB转发策略和ALB转发规则的配置,确保二者提供的能力完全一致,且所有配置经过完备的测试验收,以免在迁移过程中对您的业务产生非预期的影响。

  • 建议在业务低谷期进行CLB流量的迁移。

流量迁移前,待迁移的CLB实例已配置域名解析,您已将业务域名通过A记录解析的方式指向CLB实例的服务地址。

image

在完成ALB实例配置的验收后,本文以阿里云云解析DNS为例,为您介绍CLB流量迁移至ALB的操作步骤。您可以通过以下步骤完成流量的迁移。关于阿里云云解析DNS的介绍,请参见公网权威解析

image

第一步:CLB实例配置临时域名

ALB实例推荐使用CNAME解析,为满足域名权重配置的启用条件,您需要为临时域名添加一条CNAME解析记录,同时将该临时域名指向待切换CLB实例的服务地址。

说明

权重配置的启用条件是域名下存在相同的主机记录、相同解析线路的多条A记录、CNAME记录、AAAA记录。

  1. 登录域名解析控制台

  2. 域名解析页面,找到指向待迁移CLB实例的DNS域名www.example.net,单击该域名。

  3. 解析设置页面,单击添加记录,在添加记录面板,完成以下参数的配置,然后单击确认

    配置

    说明

    记录类型

    在下拉列表中选择CNAME

    主机记录

    您的域名的前缀。本文输入www

    解析请求来源

    选择默认。

    记录值

    输入临时域名,本文输入web0.example.net

    TTL

    全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文设置为5秒。

    本文使用的是企业旗舰版云解析DNS,为方便验证将TTL设置为5秒。您可以根据实际情况进行设置,更多信息,请参见版本对比

  4. 解析设置页面,找到指向待迁移CLB实例服务地址的A记录,在操作列单击修改

  5. 在弹出的修改记录面板,修改主机记录,然后单击确认。本文修改主机记录web0,其余参数保持不变。

第二步:ALB实例添加CNAME解析

  1. 登录应用型负载均衡ALB控制台

  2. 在顶部菜单栏,选择ALB实例所属的地域。本文选择华东1(杭州)。

  3. 找到目标ALB实例,复制其对应的DNS名称。

  4. 完成以下步骤添加CNAME解析记录。

    1. 登录域名解析控制台

    2. 在目标域名的操作列单击解析设置。这里目标域名为CLB实例绑定的域名。

    3. 解析设置页面单击添加记录

    4. 添加记录面板配置以下信息完成CNAME解析配置,然后单击确认

      配置

      说明

      记录类型

      在下拉列表中选择CNAME

      主机记录

      您的域名的前缀。本文输入www

      解析请求来源

      选择默认。

      记录值

      输入域名对应的CNAME地址,即您复制的ALB实例的DNS域名。

      TTL

      全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文设置为5秒。

      本文使用的是企业旗舰版云解析DNS,为方便验证将TTL设置为5秒。您可以根据实际情况进行设置,更多信息,请参见版本对比

      说明
      • 新增CNAME记录实时生效,修改CNAME记录取决于本地DNS缓存的解析记录的TTL到期时间,一般默认为10分钟。

      • 添加时如遇添加冲突,请换一个解析域名。更多信息,请参见解析记录互斥规则

第三步:设置权重,开始流量灰度

  1. 域名解析页面,单击目标域名,在解析设置页面, 单击左侧导航栏的权重配置

  2. 权重配置页面,在操作列单击开启权重,然后单击设置权重

    权重配置的启用条件是域名下存在相同的主机记录、相同解析线路的多条A记录、CNAME记录、AAAA记录。

  3. 设置权重面板,分别为CLBALB实例的解析记录设置权重。将CLB实例对应的解析记录的权重设置为100,同时将ALB实例对应的解析记录的权重设置为0

    域名权重设置

  4. 在观察业务没有影响的情况下,逐步减小CLB实例解析记录的权重值,同时逐步增加ALB实例解析记录的权重值。

  5. 登录ECS04实例,多次执行dig命令,验证流量迁移效果。

    dig www.example.net

    运行结果如下图所示。您可以通过多次运行结果观察到,请求会根据权重分配至ALBCLB处理。流量测试1流量测试2

第四步:完成流量迁移

根据流量迁移的验证结果,逐步将CLB实例解析记录的权重值减小至0,同时逐步增加ALB实例解析记录的权重值至100。至此,您已完成CLB实例流量至ALB实例的迁移,当CLB实例长连接全部处理完成,且CLB实例没有新增流量时,您可以根据业务场景静默观察一段时间后释放该CLB实例。关于如何释放CLB实例,请参见释放实例

迁移完成后,本文中ALB的访问链路如下图所示:

image

如果您的DNS服务解析商不支持CNAME解析的权重配置,请单击此处查看流量迁移方案。

image

高阶功能

负载均衡产品ALB是对CLB七层负载均衡能力的一次升级,在某些特性的具体表现形式上有一些差异。您可以通过以下文档更好地了解ALB实例、配额限制、快速入门及DDoS防护:

下表列出了CLBALB一些高阶功能的差异:

功能

CLB

ALB

服务器组

支持默认服务器组、虚拟服务器组和主备服务器组。

统称为服务器组。

将HTTP访问重定向至HTTPS

在创建监听时选择重定向,配置方式请参见使用CLB将HTTP访问重定向至HTTPS

通过转发规则实现重定向,配置方式请参见使用ALB将HTTP访问重定向至HTTPS

为HTTPS监听挂载多个证书

配置方式请参见单CLB实例配置多域名HTTPS网站

配置方式请参见单ALB实例配置多域名HTTPS网站

部署HTTPS业务(单向认证)

支持阿里云签发的证书和上传非阿里云签发的证书,配置方式请参见使用CLB部署HTTPS业务(单向认证)

通过数字证书管理服务实现证书管理,配置方式请参见配置全链路HTTPS访问实现加密通信

部署HTTPS业务(双向认证)

支持阿里云签发的CA证书和上传非阿里云签发的CA证书。配置方式请参见使用CLB部署HTTPS业务(双向认证)

支持阿里云签发的CA证书和上传非阿里云签发的CA证书,通过数字证书管理服务实现证书管理。配置方式请参见使用ALB部署HTTPS业务(双向认证)

WAF防护

支持WAF透明化接入和CNAME接入。配置方式请参见为七层CLB(HTTP/HTTPS)开启WAF防护添加域名

支持服务化接入、透明化接入和CNAME接入。

常见问题

  1. 迁移前后,CLB实例和ALB实例的哪些配置需要保持一致?

    地域、网络类型、监听协议、后端服务器等需保持一致。ALB实例所属VPC需与CLB实例的后端服务器所属VPC保持一致,可用区无需保持一致。

  2. CLBALB使用的证书有哪些差异?

    CLBALB均支持HTTPS协议的加密传输,相对于CLB原生支持上传阿里云签发和非阿里云签发证书;ALB使用的证书依赖数字证书管理服务提供的能力,由阿里云证书中心管理。

  3. CLBALB访问控制有哪些差异?

    • CLB提供监听级别的访问控制,您可以为不同的监听配置不同的访问策略。更多信息,请参见访问控制

    • ALB的协议版本分为IPv4和双栈。ALB IPv4实例支持为不同的监听配置不同的访问策略。更多信息,请参见访问控制ALB双栈实例不支持开启访问控制。

  4. CLBALB的域名解析有哪些差异?

    • CLB实例需要通过A记录解析的方式,将自定义域名指向CLB的服务地址。

    • 对于ALB实例:

      • 建议您使用CNAME解析的方式将自定义域名指向到ALB实例的DNS名称,使您更方便访问网络资源。

      • 如果您的自定义域名需要解析到固定IP地址,建议您使用固定IP模式的ALB,通过A记录解析的方式将自定义域名解析至ALB提供的IP地址。

相关文档