您可以指定应用程序在被视为不健康之前无响应的时间,即被允许的请求响应延迟时间。本文介绍如何配置超时策略。
前提条件
已完成准备工作,并部署httpbin服务和sleep服务。具体操作,请参见准备工作。
操作步骤
验证服务配置。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh
执行以下命令,向httpbin服务发送请求,要求延迟1秒响应。
curl -I httpbin:8000/delay/1
预期输出:
HTTP/1.1 200 OK Server: gunicorn/19.9.0 Date: Tue, 29 Aug 2023 02:35:38 GMT Connection: keep-alive Content-Type: application/json Content-Length: 237 Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true
预期输出表明响应延迟了1秒。
执行以下命令,向httpbin服务发送请求,要求延迟2秒响应。
curl -I httpbin:8000/delay/2
预期输出:
HTTP/1.1 200 OK Server: gunicorn/19.9.0 Date: Tue, 29 Aug 2023 02:34:57 GMT Connection: keep-alive Content-Type: application/json Content-Length: 237 Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true
预期输出表明响应延迟了2秒。
在ACK集群对应的KubeConfig环境下,执行以下命令,为httpbin服务开启L7 Waypoint。
istioctl x waypoint apply --service-account httpbin
使用以下内容,创建虚拟服务,构建测试场景,配置httpbin应用的流量规则,设置允许的
timeout
时间为2s
。具体操作,请参见管理虚拟服务。apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: httpbin-vs namespace: default spec: hosts: - httpbin http: - route: - destination: host: httpbin timeout: 2s
验证配置是否生效。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh
执行以下命令,向httpbin服务发送请求,设置响应延迟1秒返回。
curl -I httpbin:8000/delay/1
预期输出:
HTTP/1.1 200 OK server: istio-envoy date: Fri, 11 Aug 2023 06:31:25 GMT content-type: application/json content-length: 281 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 1003
预期输出表明响应延迟了1秒返回。
执行以下命令,向httpbin服务发送请求,设置响应延迟2秒返回。
curl -I httpbin:8000/delay/2
预期输出:
HTTP/1.1 504 Gateway Timeout content-length: 24 content-type: text/plain date: Fri, 11 Aug 2023 06:31:29 GMT server: istio-envoy
预期输出表明由于
timeout
设置,返回504错误。
文档内容是否对您有帮助?