通过CLB转发流量到RDS Custom实例

通过阿里云传统型负载均衡(CLB,Classic Load Balancer),可以将访问流量高效地转发至RDS Custom,确保流量的均衡分配。此外,该方案还支持RDS Custom实例与外部公网的连接,有效保护了内部网络的安全性,同时提升了服务的可用性和扩展性。

数据准备

已在目标RDS Custom中成功部署应用服务。本文将以Nginx服务为例进行说明,请在目标RDS Custom中执行以下命令:

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

步骤一:获取RDS Custom实例弹性网卡信息

通过DescribeNetworkInterfaces API接口,获取RDS Custom实例的弹性网卡信息。请求参数配置如下,其中VpcIdVSwitchIdPrimaryIpAddress为可选参数,通过这些参数可以快速获取到目标RDS Custom实例的弹性网卡信息。

参数

描述

示例值

RegionId

RDS Custom实例所属地域ID。

cn-hangzhou

ServiceManaged

本文查询RDS Custom实例的弹性网卡,该参数配置为true。

true

VpcId

弹性网卡所属的专有网络VPC ID,即RDS Custom实例的专有网络VPC ID。

说明

您可以在RDS Custom实例的基本信息页的配置信息区域,查看RDS Custom实例的网络信息。

vpc-bp16sm1hwzyutuohe****

VSwitchId

弹性网卡所属的交换机 ID,即RDS Custom实例的交换机 ID。

vsw-bp1nb3pv03878tgnj****

PrimaryIpAddress

弹性网卡主私网IP地址,即RDS Custom实例的私网IP地址。

172.16.XX.XX

返回参数中PrivateIpAddress弹性网卡IP地址NetworkInterfaceId弹性网卡ID,例如:

{
  ...
    "NetworkInterfaceSets": {
      "NetworkInterfaceSet": [
        {
          ...
          "PrivateIpAddress": "172.16.XX.XX",   //弹性网卡IP
          "ServiceManaged": true,
          "DeleteOnRelease": true,
          "ResourceGroupId": "",
          "Attachment": {},
          "NetworkInterfaceId": "eni-bp1j7sqxlbjnnccf****",  //弹性网卡ID
          ...
        }
      ]
    }
  }

步骤二:创建公网CLB实例

  1. 登录传统型负载均衡CLB控制台,顶部菜单栏选择实例所属地域。

  2. 单击创建传统型负载均衡。在购买页面,选择CLB所在地域与可用区,并配置实例名称。

    重要选项说明与配置建议

    选项

    说明

    配置建议

    地域和可用区

    CLB实例所属的地域和承载流量的可用区。

    • 选择支持多可用区类型的地域

    • CLBRDS Custom在同一个地域

    可用区类型

    CLB实例所属地域内的可用区类型。

    • 单可用区:地域仅支持单个可用区部署CLB。

    • 多可用区:地域支持多个可用区部署CLB。默认通过主可用区CLB提供服务,当主可用区故障时系统会自动切换到备可用区CLB继续提供负载均衡服务。详情可参考同城容灾 (多可用区容灾)

    实例计费方式

    • 按使用量计费:适用于业务测试或波峰波谷效应明显的场景,实例性能根据用量自动弹性无需指定实例规格。

    • 按规格计费:适用于业务量较平稳的场景,需要根据购买实例规格收取固定规格费。

    按使用量计费

    实例类型

    • 公网:CLB提供公网IP服务地址,可被公网客户端访问。

    • 私网:CLB提供VPC内的私网IP地址,无法转发来自公网的请求。

    本文以私网为例。

    专有网络

    选择专有网络和交换机。

    选择与RDS Custom实例相同专有网络和交换机。

    IP版本

    CLB提供的服务地址的IP类型。

    • IPv4:对外CLB仅提供IPv4地址。

    • IPv6:对外CLB仅提供IPv6地址。

    IPv4

    公网流量费

    仅公网CLB实例收取公网流量费用。

    • 按使用流量计费:适用于波峰波谷效应明显的业务。

    • 按固定带宽计费:适用于带宽较为平稳的业务。

    按使用流量计费

    CLB实例计费详情您可参考计费文档:按量付费

  3. 完成实例购买与创建。传统型负载均衡CLB控制台页面将展示新创建的实例。

步骤三:创建虚拟服务器组

  1. CLB实例管理页面,单击CLB实例ID,进入实例详情页。

  2. 虚拟服务器组页签,单击创建虚拟服务器组

    image

  3. 输入虚拟服务器组名称后,单击创建

步骤四:RDS Custom实例添加到虚拟服务器组

使用AddVServerGroupBackendServers API接口,将RDS Custom实例添加到虚拟服务器组。请求参数配置如下。其中,BackendServersServerIdServerIp取值,为步骤一中获取的RDS Custom实例的弹性网卡IDIP地址。

参数

描述

示例值

RegionId

CLB实例的地域ID。

cn-hangzhou

VServerGroupId

虚拟服务器组ID。

rsp-bp1zgr6ci****

BackendServers

要添加的后端服务器列表。包含以下参数:

  • ServerId:RDS Custom实例的弹性网卡ID。

  • Weight:后端服务器的权重,取值:0~100。默认值:100。 如果值为 0,则不会将请求转发给该后端服务器。

  • Type:后端服务器类型,本文为eni(弹性网卡实例)。

  • ServerIp:RDS Custom实例的弹性网卡IP地址。

  • Port:用来接收请求的端口。

  • Description:非必选,后端服务器描述,长度为 1~80 个字符,支持中文、字母、数字、短划线(-)、正斜线(/)、半角句号(.)和下划线(_)。

输入格式为:[{ "ServerId": "eni-****", "Weight": "100", "Type": "eni", "ServerIp": "192.168.XX.XX", "Port":"80","Description":"test-112" }]

[{
  "ServerId": "eni-bp1j7sqxlbjnnccf****",
  "Weight": "100",
  "Type": "eni",
  "ServerIp": "172.16.XX.XX",
  "Port": "80",
  "Description": "test-RC"
}]

步骤五:配置实例监听

  1. CLB实例管理页面,单击目标实例右侧的监听配置向导

  2. 配置监听协议与监听端口,然后单击下一步

    重要选项说明与配置建议

    选项

    说明

    配置建议

    监听协议

    CLB对外提供服务的协议。

    • TCP/UDP:通常称为四层监听协议。

    • HTTP/HTTPS:通常称为七层监听协议。

    说明

    原理简要说明:

    • 四层监听:将请求直接转发给后端服务器。以TCP监听为例,客户端请求到达CLB后,CLB根据监听中配置的端口修改报文的目的IP和目的端口,并将流量转发给对应的后端服务器。

    • 七层监听:原理上是反向代理的一种实现。客户端请求到达CLB后,CLB与后端服务器建立新的TCP连接,即再次通过新TCP连接的HTTP协议访问后端服务器,而不是直接转发报文到后端服务器。

    详情可参考:产品架构

    本文以TCP为例。

    监听端口

    CLB对外提供服务的端口。

    80

    详细配置参数您可参考:CLB监听

  3. 配置后端服务器组,选择已有虚拟服务器组,确认RDS Custom实例的弹性网卡信息后,单击下一步

  4. 健康检查,建议使用默认配置进行健康检查。

    负载均衡健康检查功能配置建议

    负载均衡通过健康检查来判断后端服务器的业务可用性。

    开启健康检查功能后,当某台后端服务器健康检查出现异常时,负载均衡会自动将新的请求分发到其他健康检查正常的后端服务器上;而当该后端服务器恢复正常运行时,负载均衡会将其自动恢复到负载均衡服务中进行流量转发。

    健康检查机制提高了用户业务整体可用性,避免了局部后端服务器异常对总体服务的影响,是保证业务高可用的重点要素。

    重要

    如果您的业务对负载敏感性高,高频率的健康检查探测可能会对正常业务访问造成影响。您可以结合业务情况,通过降低健康检查频率、增大健康检查间隔、七层检查修改为四层检查等方式,来降低对业务的影响。但为了保障业务的持续可用,不建议关闭健康检查。

    详情您可参考:CLB健康检查

  5. 完成配置审核,并提交。

    当弹出的窗口显示配置成功时,表示实例监听已配置成功。

步骤六:验证结果

  1. CLB实例管理页面,获取CLB服务地址

    image

  2. 通过与RDS Custom同一地域、同一VPC下的ECS实例,执行以下telnet命令,验证转发结果。本文将以CentOS 7ECS为例。

    说明

    如果未安装telnet,请执行yum install -y telnet安装telnet。

    telnet <目标地址> <监听端口>
    • 目标地址:CLB实例的服务地址或RDS Custom的私网IP地址。

    • 监听端口:CLB中配置的监听端口,本文以80为例。

    本文以CLB实例的服务地址为例:

    telnet 172.16.XX.XX 80

    收到如下的回复报文,则表示CLB可以将请求转发至后端服务器。

    Trying 172.16.XX.XX...
    Connected to 172.16.XX.XX.
    Escape character is '^]'.
  3. 通过curl命令,访问RDS Custom实例中Nginx服务的默认网页。

    curl http://172.16.XX.XX

    返回结果:

    Hello World ! this is RDS Custom.

(可选)通过公网利用CLB将流量转发至RDS Custom实例

  1. 创建公网CLB实例,其中实例类型选择公网

  2. 创建虚拟服务器组

  3. 向虚拟服务器组中添加RDS Custom实例

  4. 配置实例监听

  5. 验证结果。

    通过浏览器访问http://<CLB实例的服务地址>,可以正常加载网页,并显示Hello World ! this is RDS Custom.

相关文档