Istio – Destination Rule讲解
Istio 的 DestinationRule
用于定义对服务调用的策略。以下是 DestinationRule
的主要功能:
- 负载均衡(Load Balancing):
- 轮询(ROUND_ROBIN): 轮流将请求分配给每个后端实例。
- 最少请求数(LEAST_CONN): 将请求分配给连接数最少的实例。
- 随机(RANDOM): 随机将请求分配给后端实例。
- 哈希(HASH): 基于某些特征(如请求头、请求路径等)将请求分配给特定实例。
- 连接池(Connection Pooling):
- 限制连接的数量和超时时间。
- 断路器(Circuit Breaker):
- 设置对某服务实例的最大连接数和失败请求数,以防止服务过载。
- TLS 设置:
- 配置服务间通信的 TLS 加密。
YAML
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: example-destination-rule
namespace: default
spec:
host: my-service.default.svc.cluster.local # 指定服务
trafficPolicy: # 定义流量策略
loadBalancer: # 负载均衡设置
simple: LEAST_CONN # 使用最少连接数的负载均衡策略
connectionPool: # 连接池设置
tcp:
maxConnections: 100 # 最大TCP连接数
connectTimeout: 30ms # 连接超时时间
http:
http1MaxPendingRequests: 1000 # 最大待处理的HTTP/1请求数
maxRequestsPerConnection: 10 # 每个连接的最大请求数
idleTimeout: 1m # 空闲连接的超时时间
outlierDetection: # 断路器设置
consecutiveErrors: 5 # 连续失败请求数
interval: 5s # 检测间隔
baseEjectionTime: 30s # 实例弹出时间
maxEjectionPercent: 50 # 最大弹出实例的百分比
tls: # TLS设置
mode: ISTIO_MUTUAL # 使用Istio双向TLS
YAML
Facebook评论