加入我们,于10月8日至10日在纽约市,了解关于 GraphQL 联盟和 API 平台工程的最新技巧、趋势和新闻。加入我们,齐聚 2024纽约市 GraphQL 大会
文档
免费开始

健康检查

确定路由器的状态


健康检查通常由负载均衡器使用以确定服务器是否可用并准备好开始服务流量。

支持 HTTP 缺省健康检查。这默认启用并运行在端口 8088,URL 路径为 /health。如果 HTTP 服务器成功提供服务,则返回 200 状态码。您可以通过设置 health_check 来更改此设置:

router.yaml
health_check:
listen: 127.0.0.1:8088
enabled: true
path: /health # Optional, default: /health

每个选项都可以进行配置。例如,我们可以将健康检查端点设置为 127.0.0.1:8090/healthz

router.yaml
health_check:
listen: 127.0.0.1:8090
enabled: true
path: /healthz

我们也可以禁用健康检查端点

router.yaml
health_check:
enabled: false

使用 curl 测试

以下示例演示了如何使用 curl 命令向运行在 127.0.0.1:4000 实例发送基本健康检查查询:

$ curl -v "http://127.0.0.1:8088/health"
* Trying 127.0.0.1:8088...
* Connected to 127.0.0.1 (127.0.0.1) port 8088 (#0)
> GET /health HTTP/1.1
> Host: 127.0.0.1:8088
> User-Agent: curl/7.79.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< vary: origin
< content-type: application/json
< content-length: 15
< date: Wed, 21 Sep 2022 17:10:45 GMT
<
* Connection #0 to host 127.0.0.1 left intact
{"status":"UP"}

日志记录

如果在开启 trace 日志记录的情况下启动 router,您将看到对每次健康检查的路由器日志记录:

--log apollo_router=trace
2023-01-23T17:42:04.640501Z apollo-router/src/axum_factory/axum_http_server_factory.rs:100 TRACE apollo_router::axum_factory::axum_http_server_factory: health check health=Health { status: Up } request=Request { method: GET, uri: /health, version: HTTP/1.1, headers: {"host": "127.0.0.1:8088", "user-agent": "curl/7.85.0", "accept": "*/*"}, body: Body(Empty) }

这可能有助于确认健康检查是否正确工作。

在容器环境中使用

健康检查默认监听 127.0.0.1,这将不允许从网络发出的连接。虽然这是一个安全默认值,但 其他容器将无法执行健康检查,这将阻止 router pod 转换到健康状态。

您可以通过设置 health_check 来更改此设置:

router.yaml
health_check:
listen: 0.0.0.0:8088
enabled: true

与 Kubernetes 一起使用

在 Kubernetes 中,您可以通过设置资源定义中 containers 对象上的 readinessProbelivenessProbe 来配置健康检查:

# ... snipped for partial example ...
containers:
- name: router
# ... snipped for partial example ...
livenessProbe:
httpGet:
path: "/health"
port: 8088
readinessProbe:
httpGet:
path: "/health"
port: 8088
# ... snipped for partial example ...

请参阅我们 Kubernetes 文档 的更完整示例。

与 Docker 一起使用

Docker 有一个 HEALTHCHECK 指令,该指令告诉 Docker 如何测试容器是否仍在工作。这些定义在构建容器的 Dockerfile 中:

HEALTHCHECK CMD curl --fail \
"http://127.0.0.1:8088/health" || exit 1

在我们的示例中,我们没有定义这些,因为这些不常用。您可以根据需要将自己定义的参数添加到您的镜像中。Dockerfile

上一页
使用Docker运行
下一页
概述
评价文章评价在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司