Istio 负载平衡功能总结
负载平衡概述
负载平衡是指将传入的网络流量分配到后端服务,以实现资源优化和高效处理。Istio 提供了多种负载平衡策略,包括轮询(Round Robin)、最少连接(Least Connection)和随机(Random)。
Istio 负载平衡默认配置
- 默认策略:轮询(Round Robin)
- 其他策略:最少连接(Least Connection)、随机(Random)
Istio 负载平衡配置方式
通过 DestinationRule 资源进行配置,关键配置项包括:
apiVersion: networking.istio.io/v1alpha3 或 v1beta1
kind: DestinationRule
metadata: 名称
spec:
host: 服务名
trafficPolicy:
connectionPool: HTTP 连接池配置
loadBalancer: 负载平衡策略
localityLbSetting: 启用局部负载平衡
failover: 故障转移配置
outlierDetection: 异常值检测
高级负载平衡策略
-
加权最小请求(WLR):
- 新默认值,按权重分配流量
- 重命名为
LEAST_REQUEST
-
修改后的局部故障转移:
示例配置
示例 1:简单负载平衡
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: frontend-service
spec:
host: frontend.online-boutique.svc.cluster.local
trafficPolicy:
connectionPool:
http:
maxRequestsPerConnection: 1
loadBalancer:
simple: LEAST_CONN
localityLbSetting:
enabled: true
failover:
- from: us-east1
to: us-west1
outlierDetection:
consecutive5xxErrors: 1
interval: 1s
baseEjectionTime: 1m
示例 2:加权负载平衡
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: frontend-service
spec:
host: frontend.online-boutique.svc.cluster.local
trafficPolicy:
connectionPool:
http:
maxRequestsPerConnection: 1
loadBalancer:
localityLbSetting:
enabled: true
distribute:
- from: us-east1
to: \"us-west1\": 70
- from: \"Europe-north1\": 30
outlierDetection:
consecutive5xxErrors: 100
interval: 1s
baseEjectionTime: 1m
总结
Istio 提供了灵活的负载平衡策略,支持默认轮询、最少连接、随机分配,并通过 DestinationRule 进行精细配置。高级策略如加权最小请求和局部故障转移进一步优化流量分配,提高系统可用性和性能。