NLB快速实现IPv4服务的负载均衡

阿里云网络型负载均衡NLB(Network Load Balancer)支持TCP、UDP和TCPSSL协议,提供了强大的四层负载均衡能力。如果您需要快速创建一个NLB实例,并将来自客户端的访问请求转发至后端服务器,请参考本文操作实现IPv4服务的负载均衡。

前提条件

  • 您已在华东2(上海)地域创建了一个专有网络VPC1,并分别在可用区E和可用区G创建了一个交换机VSW1和VSW2。具体操作,请参见创建专有网络和交换机

  • 您已分别在VSW1和VSW2创建ECS01和ECS02实例,且ECS01和ECS02实例中部署了应用服务。

    • 关于创建ECS实例,请参见自定义购买实例

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

      ECS01服务部署命令

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

      ECS02服务部署命令

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! this is ECS02." > index.html
  • 您已经注册域名并完成备案。具体操作,请参见注册阿里云域名ICP备案

本文VPC实例的相关配置如下所示,仅供参考。

单击查看本文VPC的配置

配置

说明

名称

VPC1

地域

华东2(上海)

IPv4网段

192.168.0.0/12

交换机

名称:VSW1

可用区:可用区E

IPv4网段:192.168.5.0/24

名称:VSW2

可用区:可用区G

IPv4网段:192.168.6.0/24

本文ECS实例的相关配置如下所示,仅供参考。

单击查看本文ECS的配置

名称

地域

所属VPC

所属可用区及交换机

ECS配置

ECS01

华东2(上海)

VPC1

可用区E | VSW1

镜像:Alibaba Cloud Linux 3.2104 LTS 64位

ECS02

可用区G | VSW2

步骤一:创建NLB实例

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

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

  4. 网络型负载均衡(按量付费)购买页面,完成以下配置。然后单击立即购买并根据控制台提示完成实例开通。

    此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。关于参数的更多信息,请参见创建和管理NLB实例

    配置

    说明

    地域

    选择实例所属的地域。

    实例网络类型

    选择实例网络类型,系统会根据您的选择分配私网或公网服务地址。本文选择公网

    VPC

    选择实例所属的VPC。

    可用区

    至少选择2个可用区。本文选择上海 可用区E及该可用区下的交换机,上海 可用区G及该可用区下的交换机。

    协议版本

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

    实例名称

    自定义实例名称。

    资源组

    选择所属的资源组。

    服务关联角色

    首次创建NLB实例时,需要单击创建服务关联角色,创建一个名称为AliyunServiceRoleForNlb的服务关联角色。系统会为该角色添加名称为AliyunServiceRolePolicyForNlb的权限策略,授予NLB拥有访问其他云产品实例的权限。更多操作,请参见网络型负载均衡NLB系统权限策略参考

步骤二:创建服务器组

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

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

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

    关键配置信息可参考下表,其他未列出的配置项使用默认值。关于参数的更多信息,请参见创建服务器组

    配置

    说明

    服务器组类型

    服务器组挂载的后端服务器类型。本文选择服务器类型

    服务器组名称

    输入服务器组名称。

    VPC

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

    选择后端协议

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

    选择调度算法

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

    健康检查

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

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

  5. 单击添加后端服务器,在添加后端服务器面板,选中ECS01与ECS02,单击下一步

  6. 在配置端口和权重配置向导,配置端口为80,权重默认值为100,然后单击确定

步骤三:配置监听

  1. 在左侧导航栏,选择网络型负载均衡 NLB > 实例

  2. 实例页面,单击目标实例右侧的创建监听

  3. 负载均衡业务配置向导配置监听,配置以下参数,然后单击下一步

    此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。关于配置监听的更多操作,请参见添加TCP监听

    参数

    描述

    选择监听协议

    选择监听的协议类型。本文选择TCP

    监听端口

    用来接收请求并向后端服务器进行请求转发的监听端口。本文输入80

    监听名称

    输入自定义监听名称。

    高级配置

    本文保持默认,可单击修改进行设置。

  4. 选择服务器组配置向导,选择服务器类型服务器类型下的目标服务器组,查看已添加的后端服务器信息,然后单击下一步

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

  6. 单击知道了返回监听页签,查看目标监听的健康检查状态列为正常时,表示后端服务器ECS01和ECS02实例可以正常处理NLB实例转发的请求。

步骤四:设置域名解析

实际业务场景中,建议您使用您的自有域名,通过CNAME解析的方式将自有域名指向NLB实例域名。

  1. 在左侧导航栏,选择网络型负载均衡 NLB > 实例

  2. 实例页面,复制已创建的NLB实例的DNS名称。

  3. 执行以下步骤添加CNAME解析记录。

    1. 登录域名解析控制台

    2. 域名解析页面单击添加域名

    3. 添加域名对话框中输入您的主机域名,然后单击确认

      重要

      您的主机域名需已完成TXT记录验证。

    4. 在目标域名的操作列单击解析设置

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

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

      配置

      说明

      记录类型

      在下拉列表中选择CNAME

      主机记录

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

      说明

      创建域名为根域名时,主机记录为@

      解析请求来源

      选择默认。

      记录值

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

      TTL

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

步骤五:验证结果

  1. 测试NLB可用性:

    1. 以任意一台可以访问公网的Linux客户端为例。如果未安装telnet,以CentOS系统为例可以参考执行yum install -y telnet安装telnet。

    2. 执行telnet 域名 端口命令,收到回复报文Connected to nlb-...,则表示NLB可以将请求转发至后端服务器。

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'.

      通过浏览器输入域名,例如http://域名,可以看到类似下图所示,表示NLB可以将请求转发至后端服务器。

      image

  2. (可选)故障模拟:

    1. 停用ECS01服务。在ECS01中执行systemctl stop nginx.service停用应用。

    2. 客户端再次执行telnet 域名 端口命令,仍然收到回复报文Connected to nlb-...

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'.

      通过浏览器输入域名,例如http://域名,可以看到类似下图所示,表示NLB可以将请求转发至后端服务器。

      image

    3. 启用ECS01服务,停用ECS02服务。在ECS01中执行systemctl start nginx.service重新启动应用,在ECS02中执行systemctl stop nginx.service停用应用。

    4. 客户端再次执行telnet 域名 端口命令,仍然收到回复报文Connected to nlb-...

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'.

      通过浏览器输入域名,例如http://域名,可以看到类似下图所示,表示NLB可以将请求转发至后端服务器。

      image

    5. 如上表明后端单台服务器故障不影响NLB可用性。

释放资源

  1. 清理ECS、安全组等资源:

    1. 删除ECS01实例及其安全组:

      1. 登录云服务器ECS实例控制台,顶部选择实例所属地域,单击ECS01实例右侧的image.png,弹出的窗口中选择释放,立即释放实例并确认。

      2. 登录云服务器ECS安全组控制台,顶部选择实例所属地域,勾选ECS01自定义安全组并单击删除,删除安全组。

    2. 参照上述步骤,删除ECS02实例及对应安全组资源。

  2. (可选)删除域名解析记录;

    删除域名解析记录,请参见删除域名解析记录

  3. 清理NLB资源:

    1. 登录网络型负载均衡NLB控制台,顶部选择实例所属地域,单击实例右侧的image.png,弹出的窗口中选择释放并确认。

    2. 登录网络型负载均衡NLB控制台,顶部选择实例所属地域,在服务器组菜单单击服务器组右侧的image.png,弹出的窗口中选择删除并确认。

  4. 清理VPC资源:

    1. 登录专有网络VPC控制台,顶部选择实例所属地域。

    2. 单击实例右侧删除,删除时并且勾选强制删除,完成VPC与交换机资源的删除。

相关文档