CLB四层监听手动迁移NLB最佳实践

重要

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

相比于传统型负载均衡CLB(Classic Load Balancer), 网络型负载均衡NLB(Network Load Balancer )具有超高性能的四层负载均衡处理能力,可以同时处理海量并发连接,提供TCPSSL卸载、连接限速等能力。当您的业务在持续增长,同时对功能、性能、稳定性和弹性有更高要求时,您可以将CLB四层监听流量手动迁移至NLB实例,来轻松应对高并发业务。

关键特性

当您将CLB实例的流量迁移至NLB实例时,NLB提供的以下关键特性可以满足您的业务场景:

  • 高并发处理能力:单实例最大支持1亿并发连接和100 Gbps带宽,能够轻松应对面向物联网海量连接的高并发场景。

  • 自动弹性扩展:您无需指定或手动调整NLB的实例规格,实例性能会随着您的业务增减自动弹性伸缩。

  • 全端口监听:NLB支持全端口监听功能,可以监控并处理一个端口段范围内的所有网络流量。适合需要监听大量端口或动态端口的场景。

  • 丰富的IPv6能力:NLB支持更丰富的IPv6能力,满足双栈、6to4/6to6等多场景的诉求。

应用场景

当您的业务处于以下应用场景时,您可以将CLB实例流量迁移至NLB实例:

  • 需要处理海量并发连接,如即时通讯、物联网设备管理等场景。

  • 需要根据突发流量高峰自动调整资源,如电商大促等流量波动较大的场景。

  • 需要使用大范围的端口来处理不同场景下的数据,如在线游戏、视频会议系统、在线教育平台的场景。

  • 需要扩展网络资源,将业务从IPv4向IPv6改造或者过渡的场景。

场景示例

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

image

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

image

注意事项

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

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

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

前提条件

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

  • 您已创建承载业务应用的后端服务器ECS01和ECS02,且均已部署应用示例。创建ECS实例的更多操作,请参见自定义购买实例

    说明
    • 若您的CLB实例配置UDP监听,将CLB的流量迁移至NLB实例时,NLB实例也需要配置UDP监听协议。

    • 您需要准备两台测试服务器,一台用于测试迁移前流量,一台用于验证迁移时的访问流量。如果您已有测试服务器,则无需创建。本文用于测试的两台服务器均已安装Alibaba Cloud Linux 3.2104 64位操作系统。

    本文ECS01和ECS02部署测试应用示例如下:

    ECS01服务部署命令

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! this is ESC01." > index.html

    ECS02服务部署命令

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! this is ESC02." > index.html

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

配置

CLB

NLB

网络类型

公网

服务地址:112.XX.XX.26

公网

DNS域名:nlb-h8z2851bv87*******.cn-hangzhou.nlb.aliyuncsslb.com

域名解析

www.example.cn

www.example.cn

监听协议

TCP,监听端口80

TCP,监听端口80

后端服务器

ECS01、ECS02

ECS01、ECS02

步骤一:创建NLB实例

  1. 登录网络型负载均衡NLB控制台
  2. 在顶部菜单栏,选择NLB实例所属的地域。

  3. 实例页面,单击创建网络型负载均衡

  4. 网络型负载均衡(按量付费)购买页面,完成以下配置(未列举的参数保持默认值),然后单击立即购买,根据控制台提示完成实例购买。

    配置

    说明

    地域

    选择实例所属的地域。本文选择华东1(杭州)

    实例网络类型

    选择实例网络类型,本文选择公网

    说明

    若您选择私网场景,使用双VIP配置的NLB实例可提供10 Gbps的私网处理能力,支持每秒10万新建连接和150万并发连接。此外,NLB还具备自动弹性扩展能力,能够根据流量需求扩展至50 Gbps。

    VPC

    选择实例所属的VPC。

    可用区

    选择可用区和交换机。本文选择杭州 可用区H杭州 可用区I及其可用区。

    协议版本

    选择实例的协议版本。本文选择IPv4

    加入共享带宽

    本文勾选加入共享带宽,并选择共享带宽包。如果没有共享带宽包,可单击购买共享带宽包并完成购买。

    说明

    若您的业务场景为公网大流量业务:

    • 您可以选择绑定自己的共享带宽包。绑定共享带宽包后,实例的带宽峰值以共享带宽包的带宽峰值为准。

    • 如果未绑定共享带宽包,系统默认使用按量付费的弹性公网IP(Elastic IP Address,简称EIP)。此时NLB公网实例的最大带宽峰值为400 Mbps(带宽峰值不作为业务承诺指标,仅作为参考值和带宽上限峰值)。

    • 您也可以在购买NLB公网实例后,将其加入共享带宽包,具体操作,请参见调整公网NLB实例带宽峰值

步骤二:创建NLB服务器组

  1. 登录网络型负载均衡NLB控制台
  2. 在顶部菜单栏,选择NLB实例所属的地域。

  3. 在左侧导航栏,选择网络型负载均衡 NLB > 服务器组

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

  5. 创建服务器组对话框,完成以下配置(未列举的参数保持默认值),然后单击创建

    配置

    说明

    服务器组类型

    选择服务器组的类型。本文选择服务器类型

    服务器组名称

    输入自定义名称。

    VPC

    从VPC下拉列表中选择NLB所在VPC,只有该VPC下的服务器可以加入到该服务器组。

    选择后端协议

    选择后端协议,本文选择TCP

    配置健康检查

    开启健康检查,健康检查保持默认配置。

  6. 待服务器组创建成功后,单击其实例ID,然后单击后端服务器页签。

  7. 单击添加后端服务器,在添加后端服务器面板,选择ECS01和ECS02,单击下一步

  8. 配置端口和权重配置向导,端口输入80,权重保持默认值,然后单击确定

步骤三:创建TCP监听

  1. 登录网络型负载均衡NLB控制台
  2. 在顶部菜单栏,选择NLB实例所属的地域。

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

  4. 单击监听页签,然后单击快速创建监听

  5. 快速创建监听对话框,配置以下参数,然后单击确定

    配置

    说明

    选择监听协议

    本文选择TCP

    监听端口

    本文输入80

    转发的后端服务器组

    本文选择服务器类型步骤二创建的服务器组。

步骤四:测试流量

  1. 登录用于测试流量的公网Linux服务器,测试迁移前NLB的流量。

  2. 执行以下命令编辑hosts文件。

    sudo vi /etc/hosts
    1. i键切换至编辑模式,新增以下一条NLB实例的IP地址和域名映射关系的记录。

    47.XX.XX.101 www.example.cn
    1. 修改完成后,按下Esc键,输入:wq并回车以保存并关闭配置文件。

    说明

    通过该步骤可以实现将www.example.cn域名解析到NLB实例的指定弹性公网 IP(47.XX.XX.101),并覆盖原有的 CLB 域名解析。在迁移流量之前,您需要测试该域名是否可以成功访问 NLB 实例。

  3. 执行以下命令测试域名是否可以访问NLB实例。如果未安装telnet,执行yum install -y telnet命令安装telnet。

    telnet www.example.cn 80  # TCP监听端口80

    收到回复报文Connected to nlb-...,则表示NLB可以将请求转发至后端服务器。

    测试访问流量.png

  4. 查看NLB的操作日志。

    1. 登录网络型负载均衡NLB控制台
    2. 在左侧导航栏,选择网络型负载均衡 NLB > 操作日志

    3. 操作日志页面,可以筛选事件名称GetLoadBalancerAttribute的事件,单击查询

    4. 单击目标事件前的+.png图标,然后单击事件详情,可以通过requestParameterJsonLoadBalancerId字段查看NLB实例的运行日志信息。

步骤五:迁移流量至NLB

本文假设CLB的访问链路如下图所示。CLB已配置TCP监听,且支持多域名访问。本文配置的域名为example.cn

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

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

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

image

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

image

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

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

说明

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

  1. 登录域名解析控制台

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

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

    配置

    说明

    记录类型

    在下拉列表中选择CNAME

    主机记录

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

    解析请求来源

    选择默认。

    记录值

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

    TTL

    全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。

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

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

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

说明

您也可以为NLB实例添加A记录,将DNS域名解析到某个可用区的VIP。

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

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

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

    1. 登录域名解析控制台

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

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

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

      配置

      说明

      记录类型

      在下拉列表中选择CNAME

      主机记录

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

      解析请求来源

      选择默认。

      记录值

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

      TTL

      全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。

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

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

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

  1. 权威域名解析页面,单击目标域名实例ID。

  2. 单击权重配置页签,找到目标域名,在操作列单击设置权重

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

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

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

  5. 登录用于迁移流量的Linux客户端,多次执行dig命令,验证流量迁移效果。

    dig www.example.cn

运行结果如下图所示。您可以通过多次运行结果观察到,请求会根据权重分配至CLB或NLB处理。

流量测试0.png

流量测试100.png

第四步:完成流量迁移

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

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

image

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

image

高阶功能

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

下表列出了CLB和NLB一些高阶功能的差异:

功能

CLB

NLB

服务器组

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

统称为服务器组。

单向认证

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

通过在流量入口部署NLB并配置SSL证书,后端服务器无需配置SSL,NLB即可通过TCPSSL监听来接收加密流量,并将其解析为明文流量然后将流量分发至后端服务器。配置方式,请参见通过NLB实现TCPSSL卸载(单向认证)

双向认证

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

通过在流量入口部署NLB并配置SSL证书和CA证书,TCPSSL双向认证可以对通信双方进行认证。配置方式,请参见通过NLB实现TCPSSL卸载(双向认证)

全端口监听

不支持

使用NLB全端口监听功能,使NLB能够监控并响应一个端口段范围内的所有网络流量,在同一个监听中实现多端口流量转发,降低配置复杂度、运维难度以及安全风险。配置方式,请参见使用NLB全端口监听功能实现多端口流量转发

安全防护

通过访问控制实现黑白名单访问策略。配置方式,请参见访问控制

通过安全组实现NLB基于监听/端口粒度的访问控制以及实现黑白名单访问策略的访问控制。配置方式,请参见

常见问题

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

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

  2. CLB和NLB使用的证书有哪些差异?

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

  3. CLB和NLB访问控制有哪些差异?

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

    • NLB可以通过配置安全组实现基于协议/端口/IP的访问控制。更多信息,请参见NLB加入安全组

  4. CLB和NLB的域名解析有哪些差异?

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

    • 对于NLB实例:

      • 建议您使用CNAME解析的方式将自定义域名指向到NLB实例的DNS名称,通过该方式可以更便捷地访问网络资源。

      • 如果您的自定义域名需要解析到固定IP地址,您可以通过A记录解析的方式将自定义域名解析至NLB提供的IP地址。

相关文档