## 啟動引導
該協議通過命令行`-c`參數提供,并作為Envoy v2根配置。有關更多詳細信息,請參閱v2[配置概述](../Configurationreference/Overviewv2API.md)。
- [Bootstrap](#bootstrap)
- [Bootstrap.StaticResources](#bootstrapstaticresources)
- [Bootstrap.DynamicResources](#bootstrapdynamicresources)
- [Bootstrap.DynamicResources.DeprecatedV1](#bootstrapdynamicresourcesdeprecatedv1)
- [LightstepConfig](#lightstepconfig)
- [ZipkinConfig](#zipkinconfig)
- [Tracing](#tracing)
- [Tracing.Http](#tracinghttp)
- [Admin](#admin)
- [ClusterManager](#clustermanager)
- [ClusterManager.OutlierDetection](#clustermanageroutlierdetection)
- [StatsdSink](#statsdsink)
- [StatsSink](#statssink)
- [TagSpecifier](#tagspecifier)
- [StatsConfig](#statsconfig)
- [Watchdog](#watchdog)
- [Runtime](#runtime)
- [RateLimitServiceConfig](#ratelimitserviceconfig)
### Bootstrap
[Bootstrap proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L22)
啟動引導[配置概述](../Configurationreference/Overviewv2API.md)
```
{
"node": "{...}",
"static_resources": "{...}",
"dynamic_resources": "{...}",
"cluster_manager": "{...}",
"flags_path": "...",
"stats_sinks": [],
"stats_config": "{...}",
"stats_flush_interval": "{...}",
"watchdog": "{...}",
"tracing": "{...}",
"rate_limit_service": "{...}",
"runtime": "{...}",
"admin": "{...}"
}
```
- **node**<br />
([Node](../v2APIreference/Commontypes.md)) 節點標識,會在管理服務器中呈現,用于標識目的(例如,頭域中生成相應的字段)
- **static_resources**<br />
([Bootstrap.StaticResources](#bootstrapstaticresources)) 指定靜態資源配置
- **dynamic_resources**<br />
([Bootstrap.DynamicResources](#bootstrapdynamicresources)) 動態發現服務源配置
- **cluster_manager**<br />
([ClusterManager](#clustermanager)) 該服務所有的上游群集的群集管理配置
- **flags_path**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 可選,用于啟動文件標志的路徑。
- **stats_sinks**<br />
([StatsSink](#statssink)) 可選,統計匯總設置
- **stats_config**<br />
([StatsConfig](#statsconfig)) 配置內部處理統計信息
- **stats_flush_interval**<br />
([Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration)) 可選,刷新到統計信息服務的周期時間。出于性能方面的考慮,Envoy鎖定計數器,并且只是周期性地刷新計數器和計量器。如果未指定,則默認值為5000毫秒(5秒)。
- **watchdog**<br />
([Watchdog](#watchdog)) 可選,看門狗配置
- **tracing**<br />
([Tracing](#tracing)) 配置外置的跟蹤服務程序。如果沒有指定,則不會執行跟蹤。
- **rate_limit_service**<br />
([RateLimitServiceConfig](#ratelimitserviceconfig)) 配置外置的速率限制服務。如果沒有指定,任何調用速率限制服務將立即返回成功。
- **runtime**<br />
([Runtime](#runtime)) 配置運行時配置分發服務程序。如果未指定,這將導致使用所有默認值。
- **admin**<br />
([Admin](#admin), 必選) 配置本地管理的HTTP服務。
### Bootstrap.StaticResources
[Bootstrap.StaticResources proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L27)
```
{
"listeners": [],
"clusters": []
}
```
- **listeners**<br />
([Listener](../ListenersandLDS.md)) 靜態監聽器。無論LDS如何配置,這些監聽器都將可用。
- **clusters**<br />
([Cluster](../ClustersandCDS.md)) 如果[cds_config](#bootstrapdynamicresources)指定了基于網絡的配置源,則需要提供一些初始集群定義,以便Envoy知道如何與管理服務交互。這些集群定義可能不使用EDS(即它們應該是基于靜態IP或DNS)。
### Bootstrap.DynamicResources
[Bootstrap.DynamicResources proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L46)
```
{
"lds_config": "{...}",
"cds_config": "{...}",
"ads_config": "{...}",
"deprecated_v1": "{...}"
}
```
- **lds_config**<br />
([ConfigSource](Commontypes.md)) 所有的監聽器配置定義都由一個LDS配置源提供配置。
- **cds_config**<br />
([ConfigSource](Commontypes.md)) 所有后啟動引導群集定義由單個CDS配置源提供配置。
- **ads_config**<br />
([ApiConfigSource](#commontypesmd)) 可選,指定一個ADS源。這必須將`api_type`配置為`GRPC`。在配置源中僅ADS基于流傳輸通道。
- **deprecated_v1**<br />
([Bootstrap.DynamicResources.DeprecatedV1](#bootstrapdynamicresourcesdeprecatedv1))
### Bootstrap.DynamicResources.DeprecatedV1
[Bootstrap.DynamicResources.DeprecatedV1 proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L65)
```
{
"sds_config": "{...}"
}
```
- **sds_config**<br />
([ConfigSource](Commontypes.md)) 這是使用v1 REST API提供CDS/EDS服務發現的全局SDS配置。
### LightstepConfig
[LightstepConfig proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L117)
Configuration for the LightStep tracer.
```
{
"collector_cluster": "...",
"access_token_file": "..."
}
```
- **collector_cluster**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), 必選) 配置LightStep服務的群集管理
- **access_token_file**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), 必選) 包含訪問LightStep API的`token`文件。
### ZipkinConfig
[ZipkinConfig proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L126)
```
{
"collector_cluster": "...",
"collector_endpoint": "..."
}
```
- **collector_cluster**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), 必選)
配置Zipkin服務的群集管理器。請注意,Zipkin群集必須在Bootstrap[靜態群集資源](#bootstrapstaticresources)中定義。
- **collector_endpoint**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), 必選) 將`span`發送的Zipkin服務的API端口。當安裝標準的Zipkin服務時,API端口通常是`/api/v1/spans`,這也是默認配置值。
### Tracing
[Tracing proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L143)
跟蹤配置,指定Envoy使用的HTTP跟蹤全局設置。該配置由[Bootstrap tracing](#bootstrap)字段定義。未來,Envoy可能會支持其他跟蹤器,但現在僅支持HTTP跟蹤器。
```
{
"http": "{...}"
}
```
- **http**<br />
([Tracing.Http](#tracinghttp)) 提供HTTP跟蹤器的配置
### Tracing.Http
[Tracing.Http proto]()
```
{
"name": "...",
"config": "{...}"
}
```
- **name**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), 必選) 將要實例化的HTTP跟蹤驅動程序的名稱。該名稱必須與支持的HTTP跟蹤驅動程序相匹配。目前支持 `envoy.lightstep`和`envoy.zipkin`內置的跟蹤驅動程序。
- **config**<br />
([Struct](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct)) 跟蹤驅動程序的具體配置,這取決于實例化的驅動程序。 有關示例,請參閱[LightstepConfig](#lightstepconfig)和[ZipkinConfig](#ZipkinConfig)跟蹤驅動程序配置。
### Admin
[Admin proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L162)
管理接口[操作文檔](../Operationsandadministration/Administrationinterface.md)
```
{
"access_log_path": "...",
"profile_path": "...",
"address": "{...}"
}
```
- **access_log_path**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), 必選) 配置管理服務的訪問日志路徑。如果不需要訪問日志,則指定"/dev/null"。
- **profile_path**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 管理服務的cpu分析器輸出路徑。如果未指定配置文件路徑,則默認為"/var/log/envoy/envoy.prof"。
- **address**<br />
([Address](#), 必選) 管理服務要監聽的TCP地址
### ClusterManager
[ClusterManager proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L176)
Cluster manager architecture overview.
```
{
"local_cluster_name": "...",
"outlier_detection": "{...}",
"upstream_bind_config": "{...}",
"load_stats_config": "{...}"
}
```
- **local_cluster_name**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 本地集群的名稱(即擁有運行此配置的Envoy集群)。為了啟用區域感知路由,必須設置此選項。如果定義了`local_cluster_name`,則必須在[Bootstrap.StaticResources](#bootstrapstaticresources)資源中定義集群。這與`--service-cluster`選項無關,該選項不影響區域感知路由。
- **outlier_detection**<br />
([ClusterManager.OutlierDetection](#clustermanageroutlierdetection)) 可選,全局的異常值檢測配置。
- **upstream_bind_config**<br />
([BindConfig](../v2APIreference/Networkaddresses.md)) 可選,用于綁定新建立的上游連接。這可以通過`cds_config`中的`upstream_bind_config`以群集為基礎進行覆蓋。
- **load_stats_config**<br />
([ApiConfigSource](#commontypesmd)) 管理服務端口負載統計信息通過`StreamLoadStats`流傳輸。這必須將`api_type`配置為`GRPC`。
### ClusterManager.OutlierDetection
[ClusterManager.OutlierDetection proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L188)
```
{
"event_log_path": "..."
}
```
- **event_log_path**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 指定異常事件日志的路徑
### StatsdSink
[StatsdSink proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L206)
統計配置,用于內置`envoy.statsd`接收器的proto類型定義。
```
{
"address": "{...}",
"tcp_cluster_name": "..."
}
```
- **address**<br />
([Address](../v2APIreference/Networkaddresses.md)) 可用的`statsd`兼容收集器的UDP地址。如果指定,統計數據將被刷新到這個地址。
- **tcp_cluster_name**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 提供基于TCP 的statsd兼容收集器群集名稱。如果指定,Envoy將連接到此群集以刷新統計信息。
### StatsSink
[StatsSink proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L223)
可插拔的統計接收器配置
```
{
"name": "...",
"config": "{...}"
}
```
- **name**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 統計信息的名稱可以進行實例化。該名稱必須與受支持的統計信息庫相匹配。`envoy.statsd`是一個適合發送到`statsd`的內置收集器。
- **config**<br />
([Struct](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct)) 特定的統計收集器配置,這取決于被實例化的收集器。以[StatsdSink](#statsdsink)為例。
### TagSpecifier
[TagSpecifier proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L238)
從指定標簽抽取和剝離的標簽名稱,并將其作為所有統計信息的指定標簽使用。只有當名稱的任何部分與有一個或多個捕獲組正則表達式匹配時才會發生這種情況。
```
{
"tag_name": "...",
"regex": "..."
}
```
- **tag_name**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 將標識符附加到標簽值以標識接收器中的標簽。 Envoy有一組默認名稱和正則表達式來提取現有統計信息的動態部分,這些信息可以在Envoy存儲庫中的`well_known_names.h`中找到。如果在配置中提供了一個`tag_name`,那么Envoy會嘗試在默認設置中找到該名稱,并使用附帶的正則表達式。
注意:如果任何默認標簽被指定兩次,配置將被視為無效。
- **regex**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 第一個捕獲組識別要刪除的名稱部分。第二個捕獲組(通常嵌套在第一個捕獲組中)將指定統計信息的標記值。如果沒有提供第二個捕獲組,第一個也將用于設置標簽的值。所有其他捕獲組將被忽略。
例如,一個統計名稱為`cluster.foo_cluster.upstream_rq_timeout`和
<br />
```
{
"tag_name": "envoy.cluster_name",
"regex": "^cluster\.((.+?)\.)"
}
```
請注意,正則表達式將刪除`foo_cluster.` 使標簽名稱為 `cluster.upstream_rq_timeout`,并且將`envoy.cluster_name`的標簽增加`foo_cluster` (注意:由于第二個捕獲組,將不會有`.`字符)。
有兩個正則表達式和統計信息名稱的示例`http.connection_manager_1.user_agent.ios.downstream_cx_total`:
```
[
{
"tag_name": "envoy.http_user_agent",
"regex": "^http(?=\.).*?\.user_agent\.((.+?)\.)\w+?$"
},
{
"tag_name": "envoy.http_conn_manager_prefix",
"regex": "^http\.((.*?)\.)"
}
]
```
第一個正則表達式將刪除`ios`,留下標簽提取名稱`http.connection_manager_1.user_agent.downstream_cx_total`。 標簽`envoy.http_user_agent`將添加`ios標簽值。
第二個正則表達式將刪除`connection_manager_1`。從第一個正則表達式`http.connection_manager_1.user_agent.downstream_cx_total`生成的標簽提取名稱中,留下`http.user_agent.downstream_cx_total`作為標簽提取名稱。在標簽`envoy.http_conn_manager_prefix`將添加`connection_manager_1`標簽值。
### StatsConfig
[StatsConfig proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L305)
統計架構[概述](../Introduction/Architectureoverview/Statistics.md)。
```
{
"stats_tags": [],
"use_all_default_tags": "{...}"
}
```
- **stats_tags**<br />
([TagSpecifier](#tagspecifier)) 每個統計信息的名稱都會通過這些標記符進行迭代處理。當標簽匹配時,將從第一個捕獲組名稱中刪除,后面的`TagSpecifiers`不能匹配相同的部分。
- **use_all_default_tags**<br />
([BoolValue](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#boolvalue)) 使用Envoy中指定的所有默認正則表達式標記。這些可以與`stats_tags`中自定義標簽結合使用。他們將在自定義標簽之前先進行處理。
注意:如果任何默認標簽被指定兩次,則配置將被視為無效。
有關Envoy中默認標記的列表,請參閱[well_known_names.h](https://github.com/envoyproxy/envoy/blob/master/source/common/config/well_known_names.h)。
如果沒有提供,則該值默認為真。
### Watchdog
[Watchdog proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L332)
Envoy進程的看門狗配置。配置后,將監視未響應的線程,并在達到配置的閾值后終止本進程。
```
{
"miss_timeout": "{...}",
"megamiss_timeout": "{...}",
"kill_timeout": "{...}",
"multikill_timeout": "{...}"
}
```
- **miss_timeout**<br />
([Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration)) Envoy統計`server.watchdog_miss`統計信息中的未響應線程的持續時間。如果沒有指定,默認是200ms。
- **megamiss_timeout**<br />
([Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration)) Envoy在`server.watchdog_mega_miss`統計信息中計算無響應線程的持續時間。如果未指定,則默認值為1000ms。
- **kill_timeout**<br />
([Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration)) 如果被監控的線程在這段時間內沒有響應,則假定編程錯誤并終止整個Envoy進程。設置為0可禁用kill行為。如果未指定,則默認值為0(禁用)。
- **multikill_timeout**<br />
([Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration)) 如果至少有兩個被監控的線程,在這個持續時間內沒有響應,則假定為真正的死鎖并殺死整個Envoy進程。設置為0可禁用此行為。如果未指定,則默認值為0(禁用)。
### Runtime
[Runtime proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L354)
Runtime[架構概述](../Configurationreference/Runtime.md)。
```
{
"symlink_root": "...",
"subdirectory": "...",
"override_subdirectory": "..."
}
```
- **symlink_root**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), 必選) 該實現假定文件系統通過符號鏈接進行訪問。并在切換到新文件目錄時,使用原子鏈接交換。此參數指定符號鏈接的路徑。Envoy將觀察位置是否更改,并在發生時重新加載文件目錄樹。
- **subdirectory**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 指定要在根目錄中加載的子目錄。如果多個系統共享相同的更新機制,這會很有用。Envoy配置文件可以包含在一個專用的子目錄中。
- **override_subdirectory**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 指定在根目錄中加載的可選子目錄。如果指定的目錄存在,則此目錄中的配置值將覆蓋在主子目錄中對應的值。當Envoy跨多種不同的服務器類型部署時,這很有用。有時為運行時配置提供每個服務集群目錄是有用的。請參閱下面的如何使用覆蓋目錄。
### RateLimitServiceConfig
[RateLimitServiceConfig proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/bootstrap.proto#L377)
速率限制[架構概述](../Configurationreference/Ratelimitservice.md)。
```
{
"cluster_name": "..."
}
```
- **cluster_name**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), 必選) 指定承載速率限制服務的群集管理器名稱。當需要進行速率限制服務請求時,客戶端將連接到該群集,獲取速率限制配置服務。
## 返回
- [上一級](../v2APIreference.md)
- [首頁目錄](../README.md)
- 首頁
- 簡介
- Envoy是什么
- 架構介紹
- 術語
- 線程模型
- 監聽器
- L3/L4網絡過濾器
- HTTP連接管理
- HTTP過濾器
- HTTP路由
- gRPC
- WebSocket支持
- 集群管理
- 服務發現
- 健康檢查
- 連接池
- 負載均衡
- 異常檢測
- 熔斷
- 全局限速
- TLS
- 統計
- 運行時配置
- 跟蹤
- TCP代理
- 訪問日志
- MongoDB
- DynamoDB
- Redis
- 熱重啟
- 動態配置
- 初始化
- 逐出
- 腳本
- 部署
- 業界對比
- 獲得幫助
- 歷史版本
- 編譯安裝
- 編譯
- 參考配置
- 演示沙箱
- 前端代理
- Zipkin跟蹤
- Jaeger跟蹤
- gRPC橋接
- 構建Envoy Docker鏡像
- 工具
- 配置參考
- V1 API 概述
- V2 API 概述
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP連接管理器
- 路由匹配
- 流量轉移/分流
- HTTP頭部操作
- HTTP頭部清理
- 統計
- 運行時設置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- 故障注入
- DynamoDB
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- 速率限制
- 路由
- Lua
- 集群管理
- 統計
- 運行時設置
- 集群發現服務
- 健康檢查
- 熔斷
- 訪問日志
- 限速服務
- 運行時配置
- 路由表檢查工具
- 運維管理
- 命令行選項
- 熱重啟
- 管理接口
- 統計概述
- 運行時配置
- 文件系統
- 自定義擴展示例
- V1 API參考
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP路由配置
- 虛擬主機
- 路由
- 虛擬集群
- 速率限制配置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- DynamoDB
- 故障注入
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- Lua
- 速率限制
- 路由
- 集群管理
- 集群
- 健康檢查
- 熔斷
- TLS上下文
- 異常值檢測
- HASH環負載均衡配置
- 異常檢測
- 集群發現服務
- 服務發現服務
- 訪問日志
- 管理接口
- 限速服務
- 運行時配置
- 跟蹤
- V2 API參考
- 啟動引導
- 監聽&監聽發現
- 集群&集群發現
- 服務發現
- 健康檢查
- HTTP路由管理&發現
- TLS配置
- 通用的類型
- 網絡地址
- 協議選項
- 發現API
- 限速組件
- 過濾器
- 網絡過濾器
- TLS客戶端身份認證
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP過濾器
- 緩存
- 故障注入
- 健康檢查
- Lua
- 速率限制
- 路由
- gRPC-JSON轉碼器
- 常見訪問日志類型
- 常見故障注入類型
- FAQ
- Envoy有多快?
- 我在哪里獲得二進制文件?
- 我如何設置SNI?
- 如何設置區域感知路由?
- 我如何設置Zipkin跟蹤?