6.1 DestinationRule配置要点
- DestinationRule用于配置路由完成之后的应用于服务的流量策略,即配置如何将流量调度到上游端点,同时也是为VirtualService的Destination指定的目标提供具体的定义和实现;主要包括以下配置项:
- 负载均衡配置
- Sidercar连接池
- 异常检测相关的配置,即异常端点驱逐机制
- DestinationRule的关键字段
- host:必选字段,指定规则的适用对象,可以使用短域名;
- trafficPolicy:具体的规则内容,包括负载均衡,连接池策略和异常值检测;
- subsets:服务的子集定义,通常一个子集用于定义一个服务版本‘;
- exportTo:用于控制DestinationRule跨名称空间的可见性,即控制一个ns下定义的DestinationRule资源对象是否被其他ns下的Sidercar执行:
- “.” : 表示仅用于当前名称空间
- “*”: 表示应用于所有名称空间
- Subset:服务子集
- name:子集名称
- labels:子集上的标签
- trafficPolicy:应用于当前子集的流量策略
- TrafficPolicy主要包含如下几项重要配置
- loadBalancer:定义使用的负载均衡器,即负载均衡算法;
- 简单的负载均衡:ROUND_ROBIN、LEAST_CONN、RANDOM和PASSTHROUGH
- 一致性哈希:
- outlierDetection:异常点检测;
- consecutiveErrors:实例被驱逐前的连续错误次数和,默认为5;
- interval:驱逐的时间间隔,默认值为10s,支持,时,分,秒,毫秒为单位;
- baseEjectionTime:基准驱逐时长,具体时长取决于退避算法;
- maxEjectionPercent:可被驱逐的最大实例比例,默认为10%;
- minHealthPercent:启用异常值检测时要满足的最小健康状态实力比例,小于此比例,异常值检测将被禁用;默认为50%;
- connectionPool:连接池配置;
- Tcp连接池配置:
- maxConnections:为上游服务的所有实例建立最大连接数,默认1024;
- connectTimeout:TCP连接超时时长;
- tcpKeepalive:TCP keepalive机制,通过定期发送一个keepalive探测报文来判断是否可用;
- HTTP连接池配置:
- http1MaxPendingRequests:允许挂起的最大HTTP请求数,默认为1024,仅适用于HTTP/1.1;
- http2MaxRequests:允许的HTTP/2最大请求数,默认为1024;
- maxRequestsPerConnection:每连接的最大请求数,默认为无限制,而1表示禁用keep-alive;
- idleTimeout:空闲超时时长;
- Tcp连接池配置:
- PortTrafficPolicy:流量策略要应用的目标端口;
- loadBalancer:定义使用的负载均衡器,即负载均衡算法;