配置文件说明

配置文件示例

MOSN 配置文件主要由如下 MOSNConfig 结构体中的成员组成

  1. type MOSNConfig struct {
  2. Servers []ServerConfig `json:"servers,omitempty"` //server config
  3. ClusterManager ClusterManagerConfig `json:"cluster_manager,omitempty"` //cluster config
  4. ServiceRegistry ServiceRegistryConfig `json:"service_registry"` //service registry config, used by service discovery module
  5. //tracing config
  6. RawDynamicResources json.RawMessage `json:"dynamic_resources,omitempty"` //dynamic_resources raw message
  7. RawStaticResources json.RawMessage `json:"static_resources,omitempty"` //static_resources raw message
  8. }

ServerConfig 配置块

参考 示例 中的 servers 块,其对应的结构体为 ServerConfig
包含启动 MOSN 作为 Server 的一些配置项

  1. type ServerConfig struct {
  2. //default logger
  3. DefaultLogPath string `json:"default_log_path,omitempty"`
  4. DefaultLogLevel string `json:"default_log_level,omitempty"`
  5. //graceful shutdown config
  6. GracefulTimeout DurationConfig `json:"graceful_timeout"`
  7. //go processor number
  8. Processor int
  9. Listeners []ListenerConfig `json:"listeners,omitempty"`
  10. }
  • DefaultLog* 等定义当前 Server 块默认的日志路径

  • ListenerConfig 对应 Server 的监听器对象,结构体为

  1. type ListenerConfig struct {
  2. Name string `json:"name,omitempty"`
  3. Address string `json:"address,omitempty"`
  4. BindToPort bool `json:"bind_port"`
  5. FilterChains []FilterChain `json:"filter_chains"`
  6. StreamFilters []FilterConfig `json:"stream_filters,omitempty"`
  7. //logger
  8. LogPath string `json:"log_path,omitempty"`
  9. LogLevel string `json:"log_level,omitempty"`
  10. //HandOffRestoredDestinationConnections
  11. HandOffRestoredDestinationConnections bool `json:"handoff_restoreddestination"`
  12. //access log
  13. AccessLogs []AccessLogConfig `json:"access_logs,omitempty"`
  14. // only used in http2 case
  15. DisableConnIo bool `json:"disable_conn_io"`
  16. }
  1. BindToPort 需要设置为 true , 否则监听器将不工作
  2. DisableConnIo 在协议为HTTP2的时候设置为 true, 表示使用协议自带的 io
  3. FilterConfig 为定义的 stream filters, 当前支持 fault_inject 和 healthcheck

    • 其结构为:

      1. type FilterConfig struct {
      2. Type string
      3. Config map[string]interface{}
      4. }
    • 示例:

      1. {
      2. "type": "fault_inject",
      3. "config": {
      4. "delay_percent": 100,
      5. "delay_duration_ms": 2000
      6. }
      7. }
  4. FilterChain 用于配置 Proxy 等,在 FilterConfig 的基础上包了一层,
    • 结构为:
      1. type FilterChain struct {
      2. FilterChainMatch string `json:"match,omitempty"`
      3. TLS TLSConfig `json:"tls_context,omitempty"`
      4. Filters []FilterConfig `json:"filters"`
      5. }
      FilterConfig 定义了 proxy 具体参考

Upstream 配置块

参考 示例 中的 clusters 块,其对应的结构体为 ClusterConfig
定义了 MOSN 上游的 Cluster 以及 Host 信息

  1. type ClusterConfig struct {
  2. Name string
  3. Type string
  4. SubType string `json:"sub_type"`
  5. LbType string `json:"lb_type"`
  6. MaxRequestPerConn uint32
  7. ConnBufferLimitBytes uint32
  8. CircuitBreakers []*CircuitBreakerdConfig `json:"circuit_breakers"`
  9. HealthCheck ClusterHealthCheckConfig `json:"health_check,omitempty"` //v2.HealthCheck
  10. ClusterSpecConfig ClusterSpecConfig `json:"spec,omitempty"` // ClusterSpecConfig
  11. Hosts []v2.Host `json:"hosts,omitempty"` //v2.Host
  12. LBSubsetConfig v2.LBSubsetConfig
  13. TLS TLSConfig `json:"tls_context,omitempty"`
  14. }
  • CircuitBreakers 为熔断的配置项
  • HealthCheck 定义了对此 cluster 做健康检查的配置
  • LBSubsetConfig 定义了此 cluster 的 subset 信息
  • Hosts 为 cluster 中具体的 host ,结构体定义为
  1. type Host struct {
  2. Address string
  3. Hostname string
  4. Weight uint32
  5. MetaData Metadata
  6. }