# 为ELB Ingress配置超时时间
ELB Ingress支持设置以下超时时间：
- 客户端连接空闲超时时间：没有收到客户端请求的情况下保持连接的最长时间。如果在这个时间内没有新的请求， 负载均衡会暂时中断当前连接，直到下一次请求时重新建立新的连接。
- 等待客户端请求超时时间：如果在规定的时间内客户端没有发送完请求头，或body体数据发送间隔超过一定时间，负载均衡会自动关闭连接。
- 等待后端服务器响应超时时间：向后端服务器发送请求后，如果在一定时间内没有收到响应，负载均衡将返回504错误码。
#### 前提条件
- 已创建一个CCE Standard或CCE Turbo集群，支持设置超时时间的集群版本如下：
  
  | 超时时间类型        | 支持的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.19集群：v1.19.16-r30及以上版本  - v1.21集群：v1.21.10-r10及以上版本  - v1.23集群：v1.23.8-r10及以上版本  - v1.25集群：v1.25.3-r10及以上版本  - 其他更高版本集群   |
  | 响应超时时间                     | 独享型                 | - 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及以上版本  - 其他更高版本的集群    |
  | 请求超时时间  | 共享型       | - v1.23集群：v1.23.13-r0及以上版本  - v1.25集群：v1.25.8-r0及以上版本  - v1.27集群：v1.27.5-r0及以上版本  - v1.28集群：v1.28.3-r0及以上版本  - 其他更高版本的集群    |
  | 响应超时时间  | 共享型     | - v1.23集群：v1.23.13-r0及以上版本  - v1.25集群：v1.25.8-r0及以上版本  - v1.27集群：v1.27.5-r0及以上版本  - v1.28集群：v1.28.3-r0及以上版本  - 其他更高版本的集群    |
     
  
- 集群中需提前部署可用的工作负载用于对外提供访问。若您无可用工作负载，可参见[创建无状态负载（Deployment）](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html)、[创建有状态负载（StatefulSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0048.html)或[创建守护进程集（DaemonSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0216.html)部署工作负载。
- 为提供对外访问的工作负载配置Service，ELB Ingress支持的Service类型请参见[ELB Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section3565202819276)。
 
#### 约束与限制
- 更新Ingress时，如果删除超时时间配置，已有监听器的超时时间配置将会保留。
- 多个Ingress使用同一个ELB实例的同一个对外端口时，建议每个Ingress的超时时间配置相同，否则将以第一个创建的Ingress配置为准。详情请参见[同一集群中多个Ingress使用同一个ELB的配置说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0954.html)。
 
#### 配置超时时间
您可以使用以下方式为Ingress配置超时时间。
- [通过控制台配置]
  1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
  
  2. 在左侧导航栏中选择"服务"，切换至"路由"页签，在右上角单击"创建路由"。
  
  3. 设置Ingress参数。 
     ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
     本示例中展示配超时时间的关键参数，其余参数可按需配置，详情请参见[通过控制台创建ELB Ingress](https://support.huaweicloud.com/usermanual-cce/cce_10_0251.html)。
     表1关键参数说明 
     | 参数     | 配置说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
     |:---|:---|:---|
     | 名称      | 自定义Ingress名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | ingress-test                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
     | 负载均衡器 | 选择对接的ELB实例或自动创建ELB实例。可选择"共享型"或"独享型"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 独享型ELB                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
     | 监听器配置 | - 前端协议：支持"HTTP"和"HTTPS"。  - 对外端口：ELB监听器的端口。  - 高级配置： - 空闲超时时间：客户端连接空闲超时时间。在超过空闲超时时间一直没有请求， 负载均衡会暂时中断当前连接，直到下一次请求时重新建立新的连接。 取值范围为0-4000s，默认值为60s。   - 请求超时时间：等待客户端请求超时时间。 包含以下两种情况： 1.读取整个客户端请求头的超时时长，如果客户端未在超时时长内发送完整个请求头，则请求将被中断。 2.两个连续body体的数据包到达LB的时间间隔，超出请求超时时间将会断开连接。 取值范围为1-300s，默认值为60s。   - 响应超时时间：等待后端服务器响应超时时间。请求转发后端服务器后，在等待超过响应超时时间没有响应，负载均衡将终止等待，并返回 HTTP504错误码。 取值范围为1-300s，默认值为60s。      | - 前端协议："HTTP"  - 对外端口：80  - 高级配置： - 空闲超时时间：60  - 请求超时时间：60  - 响应超时时间：60     |
     | 转发策略配置  | - 域名：实际访问的域名地址，不配置时可通过IP地址访问Ingress。请确保所填写的域名已注册并备案，一旦配置了域名规则后，必须使用域名访问。  - 路径匹配规则：支持前缀匹配、精确匹配、正则匹配，请按需选择。  - 路径：后端应用对外提供访问的路径，此处添加的访问路径要求后端应用内存在相同的路径，否则转发无法生效。  - 目标服务名称：请选择已有Service，页面列表中的查询结果已自动过滤不符合要求的Service。如果没有满足要求的Service请根据[Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section1674954315446)新建。  - 目标服务访问端口：可选择目标Service的访问端口。                                                                                                                                                                                                                                                    | - 域名：无需填写  - 路径匹配规则：前缀匹配  - 路径：/  - 目标服务名称：nginx  - 目标服务访问端口：80                                                                                                            |
        
     图1配置超时时间   
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001880819677.png "点击放大")
     
     
  
  4. 单击"确定"，创建Ingress。
   
- [通过kubectl命令行配置]
  1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
  
  2. 创建名为"**ingress-test.yaml** "的YAML文件，此处文件名可自定义。
     
     ```
     vi ingress-test.yaml
     ```
     以关联已有ELB为例，YAML文件配置如下：
     ```
     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
     ```
     表2annotation关键参数说明 
     | 参数                                  | 是否必填 | 参数类型       | 描述                                                                                                                                                                                                                                                                                                                                   |
     |:---|:---|:---|:---|
     | 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。                                                                                                                                                                                                         |
        
     
     
  
  3. 创建Ingress。 
     ```
     kubectl create -f ingress-test.yaml
     ```
     回显类似如下，表示Ingress服务已创建。
     ```
     ingress.networking.k8s.io/ingress-test created
     ```
     
     
  
  4. 查看已创建的Ingress。 
     ```
     kubectl get ingress
     ```
     回显如下，表示Ingress服务创建成功。
     ```
     NAME          CLASS    HOSTS     ADDRESS          PORTS   AGE
     ingress-test  cce      *         121.**.**.**     80      10s
     ```
     
     
   
