更新时间:2024-10-21 GMT+08:00
分享

在SLB中进行限流配置

限制指定窗口内的访问频次。

前提条件

需要具备AppStage服务运维岗位权限或运维管理员权限,权限申请操作请参见申请权限

流控类型介绍

支持的流控类型有节点级流控,服务级流控,接口级流控,IP流控,自定义参数流控,多参数组合流控,配额流控及并发连接流控,流控类型介绍如表1所示。每种类型的流控只能添加一次,SLB流控的顺序按照页面从上往下匹配,页面支持上下移动流控的顺序。

表1 流控类型说明

类型

流控维度

窗口类型

限制

节点级流控

所有请求

漏桶

请求速率

服务级流控

以请求的Host字段为维度

漏桶

请求速率

接口级流控

以请求的uri路径为维度

漏桶

请求速率

IP流控

以取得的请求IP为维度

漏桶

请求速率

自定义参数流控

以自定义的单个参数为维度

漏桶

请求速率

多参数组合流控

以自定义的多个参数为维度

漏桶

请求速率

配额流控

以自定义的多个参数为维度

固定窗口。

请求量。

并发连接流控

以自定义的多个参数为维度

N/A

并发量。

  • 窗口类型
    • 漏桶:请求被均匀地限制,支持突发量配置。一般情况下,建议业务进行评估,并加上适当突发量,突发量一般不超过1秒的量。
    • 固定窗口:只要在窗口内部超限即可。

      例如同为100个/秒的限制,滑动窗口下,第0.1秒只能有10个请求,当然,滑动窗口下有个突发量的配置,在突发量10个的情况,可以在业务瞬间突发时额外再支持10个,突发池用满以后,即不可再用,只有等请求量下滑低于正常流控量时,再慢慢恢复突发池;固定窗口下,第0.1秒也可以允许100个请求。

  • 限制类型
    • 请求量:并不关注请求是否为并发,例如10个请求不论到来和处理的时间是否有并发情况,都记为10个。
    • 并发量:只看某时间点,正在处理的请求的个数。如果请求1的开始时间到响应时间这个时间段,与请求2的开始时间到响应时间的时间段并不相互交叠,则请求1和请求2不是并发。否则存在并发关系。

配置全局开关

  1. 进入AppStage运维中心
  2. 在顶部导航栏选择服务。
  3. 单击,选择微服务开发 > 负载均衡
  4. 选择左侧导航栏的“实例管理”
  5. 在实例列表中单击待配置实例的名称,进入实例详情页面。
  6. 选择“限流配置”页签,单击“编辑”
  7. 根据需要开启“流控总开关”“分摊模式开关”。开关具体说明如表2所示。

    表2 开关说明

    开关

    说明

    流控总开关

    关闭时所有流控都不生效。

    分摊模式开关

    • 分摊关闭:所有流控配置的统计粒度,仅针对SLB实例中的单个节点,请根据业务整体流量来合理分配各个单节点的流控门限值,适用于SLB节点变化,后端的请求量也会变化的场景。单个节点流控门限值 = 配置值。
    • 分摊开启:所有流控配置的统计粒度,会针对SLB实例中的节点的数量进行分摊,SLB节点变化时,每个SLB节点的流控门限值为配置值/SLB节点数,适用于slb节点变化,后端的请求量不变化的场景。单个节点流控门限值 = 配置值/节点数 (向上取值:例如12/5=3)。

新增节点级流控

  1. “限流配置”页签,单击“新增流控”
  2. 流控类型选择为“节点级流控”,单击“确定”
  3. 配置相关参数,参数说明如表3所示。

    表3 节点级流控参数说明

    参数

    说明

    限流降级url

    • 不配置时使用默认降级策略503,通过设置转发策略支持,包括返回指定的错误码、报文等。
    • 如需配置,建议配置为以@olc_degrade开头的字符串,并在SLB服务管理里准备同名转发策略,在此处填写进行关联。

    限流门限值

    每秒允许进入SLB节点的最大并发请求。默认0不限流。

    突发量

    在滑动窗口下,流控值会拆到较细粒度,比如X个/ms,此时通常配有突发量。突发量允许个别突增点发生。

    • 突发量为0时,严格限制请求低于X个/ms,一旦突破则被流控,非常敏感。
    • 突发量配置后,N个请求本应被流控,突发量>N个请求时,则可短时内免于流控。

    突发量本身没有周期概念,用一个少一个,用完则无法使用。N个请求本应被流控,突发量>N个请求时,则可短时内免于流控,用掉之后,突发量池产生亏空,通过节省的流控值回补进突发量。

    由于开源软件在高并发下,有可能超出流控量,故实施了保护机制,1/10s检查一次,是否用掉1/10的突发量,如用到则触发保护,下个1/10s不得再用。

    自定义标签

    可为空,字符长度0~200,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:group_01。

  4. 根据需要开启节点级流控开关,关闭时规则不生效。

新增服务级流控

  1. “限流配置”页签,单击“新增流控”
  2. 流控类型选择为“服务级流控”,单击“确定”
  3. 配置相关参数,参数说明如表4所示。

    表4 服务级流控参数说明

    参数

    说明

    限流降级url

    • 不配置时使用默认降级策略503,通过设置转发策略支持,包括返回指定的错误码、报文等。
    • 如需配置,建议配置为以@olc_degrade开头的字符串,并在SLB服务管理里准备同名转发策略,在此处填写进行关联。

    限流门限值

    每秒允许进入SLB节点的最大并发请求。默认0不限流。

    突发量

    在滑动窗口下,流控值会拆到较细粒度,比如X个/ms,此时通常配有突发量。突发量允许个别突增点发生。
    • 突发量为0时,严格限制请求低于X个/ms,一旦突破则被流控,非常敏感。
    • 突发量配置后,N个请求本应被流控,突发量>N个请求时,则可短时内免于流控。

    突发量本身没有周期概念,用一个少一个,用完则无法使用。N个请求本应被流控,突发量>N个请求时,则可短时内免于流控,用掉之后,突发量池产生亏空,通过节省的流控值回补进突发量。

    由于开源软件在高并发下,有可能超出流控量,故实施了保护机制,1/10s检查一次,是否用掉1/10的突发量,如用到则触发保护,下个1/10s不得再用。

    新增子项

    如果需要对特定域名进行特别的流控策略,则单击“新建子项”,设置Host匹配条件与对应的限流门限值和突发量。

  4. (可选)如果需要对特定域名进行特别的流控策略,则单击“新建子项”

    表5 特定域名流控参数说明

    参数

    说明

    域名

    流控的域名。

    匹配条件

    • equal
    • pettern

    限流门限值

    单个子项的限流门限值。

    自定义标签

    可为空,字符长度0~200,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:group_01。

    突发量

    单个子项的突发量。

    操作

    • 上移
    • 下移
    • 删除

  5. 根据需要开启服务级流控开关,关闭时规则不生效。

新增接口级流控

  1. “限流配置”页签,单击“新增流控”
  2. 流控类型选择为“接口级流控”,单击“确定”
  3. 配置相关参数,参数说明如表6所示。

    表6 接口级流控参数说明

    参数

    说明

    限流降级url

    • 不配置时使用默认降级策略503,通过设置转发策略支持,包括返回指定的错误码、报文等。
    • 如需配置,建议配置为以@olc_degrade开头的字符串,并在SLB服务管理里准备同名转发策略,在此处填写进行关联。

    限流门限值

    每秒允许进入SLB节点的最大并发请求。默认0不限流。

    突发量

    在滑动窗口下,流控值会拆到较细粒度,比如X个/ms,此时通常配有突发量。突发量允许个别突增点发生。
    • 突发量为0时,严格限制请求低于X个/ms,一旦突破则被流控,非常敏感。
    • 突发量配置后,N个请求本应被流控,突发量>N个请求时,则可短时内免于流控。

    突发量本身没有周期概念,用一个少一个,用完则无法使用。N个请求本应被流控,突发量>N个请求时,则可短时内免于流控,用掉之后,突发量池产生亏空,通过节省的流控值回补进突发量。

    由于开源软件在高并发下,有可能超出流控量,故实施了保护机制,1/10s检查一次,是否用掉1/10的突发量,如用到则触发保护,下个1/10s不得再用。

  4. (可选)如果需要对特定接口uri进行特别的流控策略,则单击“新建子项”

    表7 特定接口uri流控参数说明

    参数

    说明

    接口URL

    流控的接口URL。

    匹配条件

    • equal
    • pettern

    限流门限值

    单个子项的限流门限值。

    自定义标签

    可为空,字符长度0~200,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:group_01。

    突发量

    单个子项的突发量。

    聚合统计

    选择开启或关闭,默认不聚合,表示匹配此条规则的url各自计数。如果开启聚合,表示符合此条规则时,合并计数。

    例如:

    • 聚合统计开启:接口/abc/def的门限值设置为1000,/abc/def/a,abc/def/b等加在一起为1000。
    • 聚合统计关闭:接口/abc/def的门限值设置为1000,/abc/def/a,abc/def/b等每个url的门限值都为1000。

    操作

    • 上移
    • 下移
    • 删除

  5. 根据需要开启接口级流控开关,关闭时规则不生效。

新增IP流控

  1. “限流配置”页签,单击“新增流控”
  2. 流控类型选择为“IP流控”,单击“确定”
  3. 配置相关参数,参数说明如表8所示。

    表8 IP流控参数说明

    参数

    说明

    限流降级url

    • 不配置时使用默认降级策略503,通过设置转发策略支持,包括返回指定的错误码、报文等。
    • 如需配置,建议配置为以@olc_degrade开头的字符串,并在SLB服务管理里准备同名转发策略,在此处填写进行关联。

    限流门限值

    每秒允许进入SLB节点的最大并发请求。默认0不限流。

    突发量

    在滑动窗口下,流控值会拆到较细粒度,比如X个/ms,此时通常配有突发量。突发量允许个别突增点发生。

    • 突发量为0时,严格限制请求低于X个/ms,一旦突破则被流控,非常敏感。
    • 突发量配置后,N个请求本应被流控,突发量>N个请求时,则可短时内免于流控。

    突发量本身没有周期概念,用一个少一个,用完则无法使用。N个请求本应被流控,突发量>N个请求时,则可短时内免于流控,用掉之后,突发量池产生亏空,通过节省的流控值回补进突发量。

    由于开源软件在高并发下,有可能超出流控量,故实施了保护机制,1/10s检查一次,是否用掉1/10的突发量,如用到则触发保护,下个1/10s不得再用。

  4. (可选)如果需要对特定接口IP进行特别的流控策略,则单击“新建子项”

    主要根据X-Forwarded-For(XFF,是一个HTTP请求头字段,用于表示HTTP请求的来源IP地址)和$remote_addr(SLB收到的请求的IP层source IP,现网通常为ELB的IP或者F5的IP)进行匹配。
    表9 特定IP流控参数说明

    参数

    说明

    xff获取ip

    • left-ip:从左取IP,从头部X-Real-IP取得IP,如不存在,取得X-Forwarded-For最左侧非内网段IP,如未取得,则取IP报文source IP。
    • right-ip:从右取IP,从IP报文取source IP,如果是内部信任IP,则依次从右向左逐个取X-Forwarded-For,一旦遇到非内部信任IP,则返回它,直至取到最左边为止。

    匹配条件

    • sha256
    • rangIP

    对应匹配的值。

    上传文件格式为TXT格式,多个数据用“,”分隔,文件大小不能超过102400B。

    • 当匹配条件为sha256时,填写样例:5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5, 226fe7d26af82de76db083e6a29524ca68f4aaf80f2c2db058571fdb8f1fdeea
      说明:

      上传的值会自动转化为加密后的结果。

    • 当匹配条件为rangeIP时,填写样例:

      10.1.1.1-10.1.1.100,10.2.2.1-10.2.2.100

    限流门限值

    单个子项的限流门限值。

    自定义标签

    可为空,字符长度0~200,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:group_01。

    突发量

    单个子项的突发量。

    操作

    • 上移
    • 下移
    • 删除

  5. 根据需要开启IP流控开关,关闭时规则不生效。

新增自定义参数流控

  1. “限流配置”页签,单击“新增流控”
  2. 流控类型选择为“自定义参数流控”,单击“确定”
  3. 配置流控规则,单击“新建子项”可以新增多条流控规则,参数说明如表10所示。

    表10 自定义参数流控参数说明

    参数

    说明

    限流降级url

    • 不配置时使用默认降级策略503,通过设置转发策略支持,包括返回指定的错误码、报文等。
    • 如需配置,建议配置为以@olc_degrade开头的字符串,并在SLB服务管理里准备同名转发策略,在此处填写进行关联。

    参数

    字符长度小于50,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符。例:param_home-001。

    位置

    • queryString
    • header
    • resource
    • body-json
    • body-form

    匹配条件

    • equal
    • pattern
    • sha256

    对应匹配的值。

    上传文件格式为TXT格式,多个数据用“,”分隔,文件大小不能超过102400B。

    • 当匹配条件为equal时,例如填写1,2,3,表示1或2或3都可匹配。
    • 当匹配条件为pattern时,填写样例:

      ^abc

      <=102400

    • 当匹配条件为sha256时,填写样例:5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5, 226fe7d26af82de76db083e6a29524ca68f4aaf80f2c2db058571fdb8f1fdeea

    限流门限值

    单个子项的限流门限值。

    自定义标签

    可为空,字符长度0~200,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:group_01。

    突发量

    单个子项的突发量。

    操作

    • 上移
    • 下移
    • 删除

  4. 根据需要开启自定义参数流控开关,关闭时规则不生效。

新增多参数组合流控

可设置多个参数匹配同时满足时的,对应的限流条件

  1. “限流配置”页签,单击“新增流控”
  2. 流控类型选择为“多参数组合流控”,单击“确定”
  3. 配置流控规则,参数说明如表11所示。

    单击“新增配置组”,可以配置多个配置组;在各配置组中单击“新增子项”,可以配置多条子项。多个配置组之间关系为“或”,多条子项之间关系为“与”。
    表11 多参数组合流控参数说明

    参数

    说明

    限流降级url

    • 不配置时使用默认降级策略503,通过设置转发策略支持,包括返回指定的错误码、报文等。
    • 如需配置,建议配置为以@olc_degrade开头的字符串,并在SLB服务管理里准备同名转发策略,在此处填写进行关联。

    限流门限值

    每秒允许进入SLB节点的最大并发请求。默认0不限流。

    突发量

    在滑动窗口下,流控值会拆到较细粒度,比如X个/ms,此时通常配有突发量。突发量允许个别突增点发生。

    • 突发量为0时,严格限制请求低于X个/ms,一旦突破则被流控,非常敏感。
    • 突发量配置后,N个请求本应被流控,突发量>N个请求时,则可短时内免于流控。

    突发量本身没有周期概念,用一个少一个,用完则无法使用。N个请求本应被流控,突发量>N个请求时,则可短时内免于流控,用掉之后,突发量池产生亏空,通过节省的流控值回补进突发量。

    由于开源软件在高并发下,有可能超出流控量,故实施了保护机制,1/10s检查一次,是否用掉1/10的突发量,如用到则触发保护,下个1/10s不得再用。

    自定义标签

    可为空,字符长度0~200,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:group_01。

    类型

    • path
    • left-ip:从左取IP,从头部X-Real-IP取得IP,如不存在,取得X-Forwarded-For最左侧非内网段IP,如未取得,则取IP报文source IP。
    • right-ip:从右取IP,从IP报文取source IP,如果是内部信任IP,则依次从右向左逐个取X-Forwarded-For,一旦遇到非内部信任IP,则返回它,直至取到最左边为止。
    • 自定义参数

    参数

    当类型为自定义参数时,需要配置此参数。

    字符长度小于50,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符。例:param_home-001。

    位置

    当类型为自定义参数时,需要配置此参数。

    • queryString
    • header
    • resource
    • body-json
    • body-form

    匹配条件

    • 当类型为left-ip或right-ip时,仅支持:sha256和rangeIP。
    • 当类型为path或自定义参数时,仅支持:equal、sha256、pattern。

    对应匹配的值。

    上传文件格式为TXT格式,多个数据用“,”分隔,文件大小不能超过102400B。

    • 当匹配条件为equal时,例如填写1,2,3,表示1或2或3都可匹配。
    • 当匹配条件为pattern时,填写样例:

      ^abc

      <=102400

    • 当匹配条件为sha256时,填写样例:5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5, 226fe7d26af82de76db083e6a29524ca68f4aaf80f2c2db058571fdb8f1fdeea
    • 当匹配条件为pattern时,填写样例:

      ^abc

      <=102400

    聚合统计

    选择开启或关闭,默认不聚合,表示匹配此条规则的url各自计数。如果开启聚合,表示符合词条规则时,合并计数。

    例如:

    • 聚合统计开启:接口/abc/def的门限值设置为1000,/abc/def/a,abc/def/b等加在一起为1000。
    • 聚合统计关闭:接口/abc/def的门限值设置为1000,/abc/def/a,abc/def/b等每个url的门限值都为1000。

    操作

    • 上移
    • 下移
    • 删除

  4. 根据需要开启多参数组合流控开关,关闭时规则不生效。

新增配额流控

配额流控与多参数组合流控很相似,不同之处在于,多参数组合是滑动窗口,会时刻将请求限制在一定门限下, 门限分配均匀;配额是固定窗口,配额只负责在这个时间片内,请求不超限, 而不会去均匀地限制请求。

  1. “限流配置”页签,单击“新增流控”
  2. 流控类型选择为“配额流控”,单击“确定”
  3. 配置流控规则,参数说明如表12所示。

    单击“新增配置组”,可以配置多个配置组;在各配置组中单击“新增子项”,可以配置多条子项。多个配置组之间关系为“或”,多条子项之间关系为“与”。
    表12 配额流控参数说明

    参数

    说明

    限流降级url

    • 不配置时使用默认降级策略503,通过设置转发策略支持,包括返回指定的错误码、报文等。
    • 如需配置,建议配置为以@olc_degrade开头的字符串,并在SLB服务管理里准备同名转发策略,在此处填写进行关联。

    配额周期窗口

    配置配额周期的窗口大小。

    配额大小

    周期内允许的配额,超过则被流控。

    自定义标签

    可为空,字符长度0~200,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:group_01。

    类型

    • path
    • left-ip:从左取IP,从头部X-Real-IP取得IP,如不存在,取得X-Forwarded-For最左侧非内网段IP,如未取得,则取IP报文source IP。
    • right-ip:从右取IP,从IP报文取source IP,如果是内部信任IP,则依次从右向左逐个取X-Forwarded-For,一旦遇到非内部信任IP,则返回它,直至取到最左边为止。
    • 自定义参数

    参数

    当类型为自定义参数时,需要配置此参数。

    字符长度小于50,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符。例:param_home-001。

    位置

    当类型为自定义参数时,需要配置此参数。

    • queryString
    • header
    • resource
    • body-json
    • body-form

    匹配条件

    • 当类型为left-ip或right-ip时,仅支持:sha256和rangeIP。
    • 当类型为path或自定义参数时,仅支持:equal、sha256、pattern。

    对应匹配的值。

    上传文件格式为TXT格式,多个数据用“,”分隔,文件大小不能超过102400B。

    • 当匹配条件为equal时,例如填写1,2,3,表示1或2或3都可匹配。
    • 当匹配条件为pattern时,填写样例:

      ^abc

      <=102400

    • 当匹配条件为sha256时,填写样例:5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5, 226fe7d26af82de76db083e6a29524ca68f4aaf80f2c2db058571fdb8f1fdeea
    • 当匹配条件为pattern时,填写样例:

      ^abc

      <=102400

    聚合统计

    选择开启或关闭,默认不聚合,表示匹配此条规则的url各自计数。如果开启聚合,表示符合词条规则时,合并计数。

    例如:

    • 聚合统计开启:接口/abc/def的门限值设置为1000,/abc/def/a,abc/def/b等加在一起为1000。
    • 聚合统计关闭:接口/abc/def的门限值设置为1000,/abc/def/a,abc/def/b等每个url的门限值都为1000。

    操作

    • 上移
    • 下移
    • 删除

  4. 根据需要开启配额流控开关,关闭时规则不生效。

新增并发连接流控

可设置多个参数匹配同时满足时的,对应的并发限流条件,两个请求同时在处理中被认为是并发。

  1. “限流配置”页签,单击“新增流控”
  2. 流控类型选择为“并发连接流控”,单击“确定”
  3. 配置流控规则,参数说明如表13所示。

    单击“新增配置组”,可以配置多个配置组;在各配置组中单击“新增子项”,可以配置多条子项。多个配置组之间关系为“或”,多条子项之间关系为“与”。
    表13 并发连接流控参数说明

    参数

    说明

    限流降级url

    • 不配置时使用默认降级策略503,通过设置转发策略支持,包括返回指定的错误码、报文等。
    • 如需配置,建议配置为以@olc_degrade开头的字符串,并在SLB服务管理里准备同名转发策略,在此处填写进行关联。

    限流门限值

    每秒允许进入SLB节点的最大并发请求。默认0不限流。

    突发量

    在滑动窗口下,流控值会拆到较细粒度,比如X个/ms,此时通常配有突发量。突发量允许个别突增点发生。

    • 突发量为0时,严格限制请求低于X个/ms,一旦突破则被流控,非常敏感。
    • 突发量配置后,N个请求本应被流控,突发量>N个请求时,则可短时内免于流控。

    突发量本身没有周期概念,用一个少一个,用完则无法使用。N个请求本应被流控,突发量>N个请求时,则可短时内免于流控,用掉之后,突发量池产生亏空,通过节省的流控值回补进突发量。

    由于开源软件在高并发下,有可能超出流控量,故实施了保护机制,1/10s检查一次,是否用掉1/10的突发量,如用到则触发保护,下个1/10s不得再用。

    自定义标签

    可为空,字符长度0~200,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符,例:group_01。

    类型

    • path
    • left-ip:从左取IP,从头部X-Real-IP取得IP,如不存在,取得X-Forwarded-For最左侧非内网段IP,如未取得,则取IP报文source IP。
    • right-ip:从右取IP,从IP报文取source IP,如果是内部信任IP,则依次从右向左逐个取X-Forwarded-For,一旦遇到非内部信任IP,则返回它,直至取到最左边为止。
    • 自定义参数

    参数

    当类型为自定义参数时,需要配置此参数。

    字符长度小于50,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符。例:param_home-001。

    位置

    当类型为自定义参数时,需要配置此参数。

    • queryString
    • header
    • resource
    • body-json
    • body-form

    匹配条件

    • 当类型为left-ip或right-ip时,仅支持:sha256和rangeIP。
    • 当类型为path或自定义参数时,仅支持:equal、sha256、pattern。

    对应匹配的值。

    上传文件格式为TXT格式,多个数据用“,”分隔,文件大小不能超过102400B。

    • 当匹配条件为equal时,例如填写1,2,3,表示1或2或3都可匹配。
    • 当匹配条件为pattern时,填写样例:

      ^abc

      <=102400

    • 当匹配条件为sha256时,填写样例:5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5, 226fe7d26af82de76db083e6a29524ca68f4aaf80f2c2db058571fdb8f1fdeea
    • 当匹配条件为pattern时,填写样例:

      ^abc

      <=102400

    操作

    • 上移
    • 下移
    • 删除

  4. 根据需要开启并发连接流控开关,关闭时规则不生效。

相关文档