更新时间:2024-10-14 GMT+08:00

为ELB Ingress配置超时时间

ELB Ingress支持设置以下超时时间:

  • 客户端连接空闲超时时间:没有收到客户端请求的情况下保持连接的最长时间。如果在这个时间内没有新的请求, 负载均衡会暂时中断当前连接,直到下一次请求时重新建立新的连接。
  • 等待客户端请求超时时间:如果在规定的时间内客户端没有发送完请求头,或body体数据发送间隔超过一定时间,负载均衡会自动关闭连接。
  • 等待后端服务器响应超时时间:向后端服务器发送请求后,如果在一定时间内没有收到响应,负载均衡将返回504错误码。

约束与限制

  • 支持设置超时时间的场景如下:

    超时时间类型

    支持的ELB类型

    支持的集群版本

    空闲超时时间

    独享型

    • v1.19集群:v1.19.16-r30及以上版本
    • v1.21集群:v1.21.10-r10及以上版本
    • v1.23集群:v1.23.8-r10及以上版本
    • v1.25集群:v1.25.3-r10及以上版本
    • 其他更高版本集群

    请求超时时间

    独享型

    响应超时时间

    独享型

    空闲超时时间

    共享型

    • v1.23集群:v1.23.13-r0及以上版本
    • v1.25集群:v1.25.8-r0及以上版本
    • v1.27集群:v1.27.5-r0及以上版本
    • v1.28集群:v1.28.3-r0及以上版本
    • 其他更高版本的集群

    请求超时时间

    共享型

    响应超时时间

    共享型

  • 更新Ingress时,如果删除超时时间配置,不会修改已有监听器的超时时间配置。

通过控制台创建

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“服务”,切换至“路由”页签,在右上角单击“创建路由”
  3. 设置Ingress参数。本示例中仅列举必选参数,其余参数可根据需求参考通过控制台创建ELB Ingress进行设置。

    • 名称:自定义服务名称,可与工作负载名称保持一致。
    • 负载均衡器:选择弹性负载均衡的类型、创建方式。
      • 类型:可选择“共享型”“独享型”
      • 创建方式:本文中以选择已有ELB为例进行说明,关于自动创建的配置参数请参见负载均衡器
    • 监听器配置:
      • 前端协议:支持HTTP和HTTPS。本文以HTTP协议为例。
      • 对外端口:开放在负载均衡服务地址的端口,可任意指定。
      • 高级配置:

        配置

        说明

        空闲超时时间

        客户端连接空闲超时时间。在超过空闲超时时间一直没有请求, 负载均衡会暂时中断当前连接,直到下一次请求时重新建立新的连接。

        请求超时时间

        等待客户端请求超时时间。包括两种情况:

        • 读取整个客户端请求头的超时时长,如果客户端未在超时时长内发送完整个请求头,则请求将被中断。
        • 两个连续body体的数据包到达LB的时间间隔,超出请求超时时间将会断开连接。

        响应超时时间

        等待后端服务器响应超时时间。请求转发后端服务器后,在等待超过响应超时时间没有响应,负载均衡将终止等待,并返回 HTTP504错误码。

    • 转发策略配置:填写域名匹配规则及需要访问的目标Service。请求的访问地址与转发规则匹配时(转发规则由域名、URL组成,例如:10.117.117.117:80/helloworld),此请求将被转发到对应的目标Service处理。

  4. 单击“确定”,创建Ingress。

通过kubectl命令行创建

Ingress配置示例如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test
  namespace: default
  annotations:
    kubernetes.io/elb.port: '80'
    kubernetes.io/elb.id: <your_elb_id>    #本示例中使用已有的独享型ELB,请替换为您的独享型ELB ID
    kubernetes.io/elb.class: performance
    kubernetes.io/elb.keepalive_timeout: '300'  # 客户端连接空闲超时时间
    kubernetes.io/elb.client_timeout: '60'      # 等待客户端请求超时时间
    kubernetes.io/elb.member_timeout: '60'      # 等待后端服务器响应超时时间
spec:
  rules:
    - host: ''
      http:
        paths:
          - path: /
            backend:
              service:
                name: test
                port:
                  number: 80
            property:
              ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
            pathType: ImplementationSpecific
  ingressClassName: cce
表1 annotation关键参数说明

参数

是否必填

参数类型

描述

kubernetes.io/elb.keepalive_timeout

String

客户端连接空闲超时时间,在超过keepalive_timeout时长一直没有请求, 负载均衡会暂时中断当前连接,直到下一次请求时重新建立新的连接。

取值范围为0-4000s,默认值为60s。

kubernetes.io/elb.client_timeout

String

等待客户端请求超时时间,包括两种情况:

  • 读取整个客户端请求头的超时时长:如果客户端未在超时时长内发送完整个请求头,则请求将被中断。
  • 两个连续body体的数据包到达LB的时间间隔,超出client_timeout将会断开连接。

取值范围为1-300s,默认值为60s。

kubernetes.io/elb.member_timeout

String

等待后端服务器响应超时时间。请求转发后端服务器后,等待超过member_timeout时长没有响应,负载均衡将终止等待,并返回 HTTP504错误码。

取值范围为1-300s,默认值为60s。