This is an automated email from the ASF dual-hosted git repository. spacewander pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push: new 1cf9075 docs: clarify why we require active health check (#4436) 1cf9075 is described below commit 1cf90757506ccbfb97afb9e12f54a71e83152c68 Author: 罗泽轩 <spacewander...@gmail.com> AuthorDate: Fri Jun 18 14:54:26 2021 +0800 docs: clarify why we require active health check (#4436) --- docs/en/latest/health-check.md | 1 + docs/zh/latest/health-check.md | 3 ++- t/node/healthcheck-passive.t | 49 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/docs/en/latest/health-check.md b/docs/en/latest/health-check.md index 7c13848..ab9bbff 100644 --- a/docs/en/latest/health-check.md +++ b/docs/en/latest/health-check.md @@ -33,6 +33,7 @@ There won't be any health check if an upstream is configured but isn't in used. * If there is no healthy node can be chosen, we will continue to access the upstream. * We won't start the health check when the upstream only has one node, as we will access it whether this unique node is healthy or not. +* Active health check is required so that the unhealthy node can recover. The following is an example of health check: diff --git a/docs/zh/latest/health-check.md b/docs/zh/latest/health-check.md index 9eb535c..a75f995 100644 --- a/docs/zh/latest/health-check.md +++ b/docs/zh/latest/health-check.md @@ -32,6 +32,7 @@ APISIX 的健康检查使用[lua-resty-healthcheck](https://github.com/Kong/lua- * 如果没有健康的节点,那么请求会继续发送给上游。 * 如果 upstream 中只有一个节点,就不会有健康检查。 因为该唯一节点无论是否健康,请求都会发送给上游, +* 主动健康检查是必须的,这样不健康的节点才会恢复。 下面是一个检查检查的例子: @@ -87,7 +88,7 @@ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f13 监控检查的配置内容在`checks`中,`checks`包含两个类型:`active` 和 `passive`,详情如下 -* `active`: 要启动探活健康检查,需要在 upstream 配置中的 `checks.active` 添加如下配置项。 +* `active`: 要启动主动健康检查,需要在 upstream 配置中的 `checks.active` 添加如下配置项。 * `active.timeout`: 主动健康检查 socket 超时时间(秒为单位),支持小数点。比如 `1.01` 代表 `1010` 毫秒,`2` 代表 `2000` 毫秒。 diff --git a/t/node/healthcheck-passive.t b/t/node/healthcheck-passive.t index c554224..dd34c17 100644 --- a/t/node/healthcheck-passive.t +++ b/t/node/healthcheck-passive.t @@ -27,7 +27,7 @@ run_tests(); __DATA__ -=== TEST 1: set route(only passive) +=== TEST 1: set route(passive) --- config location /t { content_by_lua_block { @@ -118,3 +118,50 @@ GET /t {"200":5,"502":1} --- error_log (upstream#/apisix/routes/1) unhealthy HTTP increment (1/1) + + + +=== TEST 3: set route(only passive) +--- config + location /t { + content_by_lua_block { + local t = require("lib.test_admin").test + local code, body = t('/apisix/admin/routes/1', + ngx.HTTP_PUT, + [[{ + "uri": "/server_port", + "upstream": { + "type": "roundrobin", + "nodes": { + "127.0.0.1:1980": 0, + "127.0.0.1:1": 1 + }, + "retries": 0, + "checks": { + "passive": { + "healthy": { + "http_statuses": [200, 201], + "successes": 3 + }, + "unhealthy": { + "http_statuses": [502], + "http_failures": 1, + "tcp_failures": 1 + } + } + } + } + }]] + ) + + if code >= 300 then + ngx.status = code + end + ngx.print(body) + } + } +--- request +GET /t +--- error_code: 400 +--- response_body +{"error_msg":"invalid configuration: property \"upstream\" validation failed: property \"checks\" validation failed: object matches none of the requireds: [\"active\"] or [\"active\",\"passive\"]"}