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实例:

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

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

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

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

场景示例

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

image

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

image

注意事项

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

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

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

前提条件

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

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

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

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

    本文ECS01ECS02部署测试应用示例如下:

    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

单击查看本文CLBNLB的参数规划

配置

CLB

NLB

网络类型

公网

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

公网

DNS域名:nlb-h8z2851bv87*******.cn-hangzhou.nlb.aliyuncs.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. 单击添加后端服务器,在添加后端服务器面板,选择ECS01ECS02,单击下一步

  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. 查看详情页面,在操作列单击事件记录通过requestParameterLoadBalancerId字段查看NLB实例的运行日志信息。

步骤五:迁移流量至NLB

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

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

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

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

image

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

image

第一步:CLB实例配置临时域名并添加CNAME解析

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

说明

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

  1. 登录云解析DNS控制台

  2. 公网权威解析页面,找到待迁移CLB实例使用的域名example.cn,单击该域名。

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

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

  5. 解析设置页面,单击添加记录。在添加记录面板,完成以下参数的配置,并单击确定保存退出。

    配置

    说明

    记录类型

    在下拉列表中选择CNAME

    主机记录

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

    解析请求来源

    选择默认。

    TTL

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

    记录值

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

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

解析设置页面,单击添加记录。在添加记录面板,完成以下参数的配置,并单击确定保存退出。

配置

说明

记录类型

在下拉列表中选择CNAME

主机记录

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

解析请求来源

选择默认。

TTL

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

记录值

输入您复制的NLB实例的DNS域名。

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

  1. 解析设置页面,找到第二步中添加的CNAME记录,单击修改后面的下拉按钮,单击修改记录集

  2. 编辑记录面板下方的记录值集合,分别为CLBNLB实例的解析记录设置权重。将CLB实例对应的解析记录的权重设置为100,同时将NLB实例对应的解析记录的权重设置为0单击确定保存退出。

    image

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

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

    dig www.example.cn

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

流量测试0.png

流量测试100.png

第四步:完成流量迁移

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

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

image

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

image

高阶功能

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

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

功能

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. CLBNLB使用的证书有哪些差异?

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

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

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

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

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

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

    • 对于NLB实例:

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

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

相关文档