v1 API 概览

注意

v1 配置 API 现在被认为是过时了而且宣布了废弃时间表。请升级并使用 v2 配置 API

Envoy 配置格式是 JSON 的并用一个 JSON schema 验证。Schema 可以在 source/common/json/config_schemas.cc 找到。服务器的主配置被包含在监听器和集群管理器部分。其他顶级元素指定各种配置。

为语法方便,也为手写的配置提供了 YAML 支持。如果一个文件路径的结尾是 .yaml,Envoy 将在内部将 YAML 转换为 JSON。在配置文档的剩余部分,我们仅指 JSON。Envoy 期望一个清晰的 YAML 标量,因此,如果一个集群名字(应该是一个字符串)被称为 true,它应该在配置 YAML 写为 “true”。同样适用于整数和浮点值(即 1 vs. 1.0 vs. “1.0”)。

  1. {
  2. "listeners": [],
  3. "lds": "{...}",
  4. "admin": "{...}",
  5. "cluster_manager": "{...}",
  6. "flags_path": "...",
  7. "statsd_udp_ip_address": "...",
  8. "statsd_tcp_cluster_name": "...",
  9. "stats_flush_interval_ms": "...",
  10. "watchdog_miss_timeout_ms": "...",
  11. "watchdog_megamiss_timeout_ms": "...",
  12. "watchdog_kill_timeout_ms": "...",
  13. "watchdog_multikill_timeout_ms": "...",
  14. "tracing": "{...}",
  15. "rate_limit_service": "{...}",
  16. "runtime": "{...}",
  17. }
  • listeners

    (required, array) 监听器 的数组会被服务器实例化。一个单独的 Envoy 进程可以包含任意数量的监听器。

  • lds

    (optional, object) 对监听器发现服务(LDS)的配置。如果没有指定,仅静态监听器被加载。

  • admin

    (required, object) 本地管理 HTTP 服务器配置。

  • cluster_manager

    (required, object) 集群管理器 配置,它拥有服务器内所有上游集群。

  • flags_path

    (optional, string) 搜索启动标志文件的文件系统路径。

  • statsd_udp_ip_address

    (optional, string) 一个运行中的 遵循 statsd 的 监听器的 UDP 地址。如果被指定,统计数据将被写入到这个地址。IPv4 地址应该具有主机:端口 (例如:127.0.0.1:855)的格式。IPv6 地址应该具有 URL 格式 [主机]:端口 (例如: [::1]:855)。

  • statsd_tcp_cluster_name

    (optional, string) 一个运行遵循 TCP statsd 的监听器的集群管理器集群的名字。如果被指定,Envoy 将连接到这个集群以写入统计数据

  • stats_flush_interval_ms

    (optional, integer) 两次写入到配置好的统计池之间以毫秒计的时间。出于性能原因,Envoy 锁定了计数器,仅周期性写入计数器和仪表的数据。如果未指定,默认为 5000ms (5 秒)。

  • watchdog_miss_timeout_ms

    (optional, integer) Envoy 在 “server.watchdog_miss” 统计中计数一个无响应的线程后以毫秒计的时间。如果未指定,默认为 200ms。

  • watchdog_megamiss_timeout_ms

    (optional, integer) Envoy 在 “server.watchdog_mega_miss” 统计中计数一个无响应的线程后以毫秒计的时间。如果未指定,默认为 1000ms。

  • watchdog_kill_timeout_ms

    (optional, integer) 如果一个被观察的线程在这么多微秒的时间内没有响应,则假设一个编程错误并杀掉整个 Envoy 进程。设为 0 以关掉整个行为。如果未指定,默认为 0 (关掉的)。

  • watchdog_multikill_timeout_ms

    (optional, integer) 如果至少两个被观察的线程在至少这么多微秒的时间内没有响应,则假设一个真正的死锁并杀掉整个 Envoy 进程。设为 0 以关掉整个行为。如果未指定,默认为 0 (关掉的)。

  • tracing

    (optional, object) 外部追踪提供者的配置。 如果未指定,将不执行追踪。

  • rate_limit_service

    (optional, object) 外部速率限制服务提供者的配置。如果未指定,任何对速率限制服务的调用将立即返回成功。

  • runtime

    (optional, object) 运行时配置 提供者的配置。如果没有被指定,一个 “null” 提供者将被使用,这将导致使用所有的默认值。配置