将ECI实例挂载到SLB

负载均衡SLB是一种对流量进行按需分发的服务,可以将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,并且可以消除系统中的单点故障,提升应用系统的可用性。本文介绍如何将ECI实例添加到SLB实例的后端服务器中,并配置监听,实现通过SLB将流量分发到ECI实例。

背景信息

负载均衡SLB(Server Load Balancer)由以下三部分组成:

  • 负载均衡实例:一个运行的负载均衡服务,用来接收流量并将其分发给后端服务器。

  • 监听:用来检查客户端请求,并将请求转发给后端服务器。

  • 后端服务器:一组接收前端请求的服务器。

说明

负载均衡SLB分为传统型负载均衡CLB和应用型负载均衡ALB,目前ECI仅支持挂载到CLB。

准备工作

  1. 创建多个ECI实例。

    此处以创建两个运行Nginx服务的ECI实例为例,创建时请开启日志收集。具体操作,请参见使用Nginx镜像创建实例

    slb1
  2. 创建CLB实例。

    创建一个具备公网能力的CLB实例。具体操作,请参见创建CLB实例

    slb2

操作步骤

将ECI实例添加到CLB实例的后端服务器中并配置监听,可以实现将监听请求转发到ECI实例。

说明

不支持挂载状态为最终状态(如:Succeeded、Failed)的ECI实例。

控制台方式

您可以在CLB控制台直接挂载ECI实例并配置监听。操作步骤如下:

  1. 登录传统型负载均衡CLB控制台

  2. 实例管理页面,找到目标CLB实例,在对应操作列中单击添加后端服务器

  3. 我的服务器面板,完成服务器添加。

    1. 选择后端服务器类型为弹性容器实例ECI,然后选中多个ECI实例,单击下一步

      slb3
    2. 根据需要配置权重,单击添加

      权重默认为100,权重越大,转发的请求越多。

    3. 单击确定,然后在弹出的对话框中单击确认

      在实例的默认服务器组页签下,您可以看到新添加的ECI实例。

  4. 实例管理页面,找到目标CLB实例,在对应操作列中单击监听配置向导

  5. 协议&监听配置向导页,完成监听配置,然后单击下一步

    配置时,请根据需要选择协议并设置监听端口,此处配置示例如下:

    • 协议选择TCP

    • 监听端口设置为80

    • 其它配置保持默认配置

    slb4
  6. 后端服务器配置向导页,完成服务器配置,然后单击下一步

    配置时,选择默认服务器组,您可以看到步骤3添加的ECI实例已经显示在列表中,请根据需要设置各服务器的监听端口,此处示例设置端口为80。

    slb5
  7. 健康检查向导页,保持默认配置,单击下一步

  8. 配置审核向导页,确认配置,单击提交

openAPI方式

您可以通过CLB的openAPI挂载ECI实例对应的弹性网卡ENI,并配置监听。操作步骤如下:

  1. 调用ECI的DescribeContainerGroups接口查询ECI实例相关信息。

    在返回参数中获取并记录ECI实例相关信息:

    • 弹性网卡ID,对应参数为EniInstanceId。

    • ECI实例内网IP,对应参数为IntranetIp。

  2. 调用CLB的AddBackendServers接口添加后端服务器。

    主要参数说明如下表所示。更多信息,请参见AddBackendServers

    名称

    类型

    示例值

    描述

    LoadBalancerId

    String

    lb-2ze7o5h52g02kkzz******

    CLB实例ID。

    BackendServers

    String

    [{ "ServerId": "eni-6wejdtelaz2bv526****", "Weight": "100", "Type": "eni", "ServerIp": "172.16.12.**", "Port":"80","Description":"test" },{ "ServerId": "eni-6wejdtelaz2bv321****", "Weight": "100", "Type": "eni", "ServerIp": "172.16.12.**", "Port":"80","Description":"test" }]

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

    • ServerId:后端服务器实例ID。此处填入ECI实例的弹性网卡ID。

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

    • Description:后端服务器描述,长度为1~80个字符。

    • Type:后端服务器类型。此处配置为eni。

    • ServerIp:实例IP地址。此处填入ECI实例内网IP。

  3. 调用CLB的监听相关API接口创建监听。

    • 创建TCP监听:CreateLoadBalancerTCPListener

    • 创建UDP监听:CreateLoadBalancerUDPListener

    • 创建HTTP监听:CreateLoadBalancerHTTPListener

    • 创建HTTPS监听:CreateLoadBalancerHTTPSListener

    此处以创建TCP监听为例,主要参数说明如下表所示。更多信息,请参见CreateLoadBalancerTCPListener

    名称

    类型

    示例值

    描述

    Bandwidth

    Integer

    -1

    监听的带宽峰值。取值范围:

    • -1:对于按流量计费的公网CLB实例,可以将带宽峰值设置为-1,即不限制带宽峰值。

    • 1~5120:对于按带宽计费的公网CLB实例,可以设置每个监听的带宽峰值,但所有监听的带宽峰值之和不能超过实例的带宽峰值。单位为Mbps。

    BackendServers

    Integer

    80

    CLB实例后端使用的端口。

    取值范围:1~65535。

    LoadBalancerId

    String

    lb-2ze7o5h52g02kkzz******

    CLB实例ID。

    ListenerPort

    Integer

    80

    CLB实例前端使用的端口。

    取值范围:1~65535。

  4. 调用CLB的StartLoadBalancerListener接口启动监听。

结果验证

  1. 在本地重复以下命令,多次curl CLB实例的公网IP。

    curl 39.106.**.** 80
  2. 查看ECI实例的日志,可以看到请求已通过CLB实例分发到不同的ECI实例上。