日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

目標規則(Destination Rule)CRD說明

目標規則是服務網格ASM實現流量路由功能的關鍵資源之一。目標規則定義在路由發生后,發往目標服務的流量策略。目標規則指定了負載均衡、來自Sidecar的連接池大小以及異常檢測設置的相關配置,以便從負載均衡池中檢測并清除不健康的主機。本文介紹目標規則的配置示例和字段說明。

配置示例

示例一:簡單負載均衡策略

以下目標規則使用最少請求(LEAST_REQUEST)負載均衡算法。在將負載分配給端點時,優先考慮未完成請求最少的端點。

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: bookinfo-ratings
spec:
  host: ratings.prod.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      simple: LEAST_REQUEST

示例二:針對端口進行自定義配置

流量策略可以針對特定端口進行定制。以下目標規則使用最少請求(LEAST_REQUEST)負載均衡策略處理所有到80端口的流量,同時將使用輪詢(ROUND_ROBIN)負載均衡設置處理到9080端口的流量。

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: bookinfo-ratings-port
spec:
  host: ratings.prod.svc.cluster.local
  trafficPolicy: # Apply to all ports.
    portLevelSettings:
    - port:
        number: 80
      loadBalancer:
        simple: LEAST_REQUEST
    - port:
        number: 9080
      loadBalancer:
        simple: ROUND_ROBIN

示例三:針對特定工作負載進行自定義配置

以下示例使用workloadSelector配置將目標規則應用于特定工作負載。

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: configure-client-mtls-dr-with-workloadselector
spec:
  host: example.com
  workloadSelector:
    matchLabels:
      app: ratings
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
    portLevelSettings:
    - port:
        number: 31443
      tls:
        credentialName: client-credential
        mode: MUTUAL

字段說明

DestinationRule

目標規則定義在路由發生后,發往目的服務的流量策略。

字段

類型

是否必選

說明

host

string

服務注冊表中的服務名稱。服務名稱將在平臺的服務注冊表(例如Kubernetes服務、Consul服務等)和ServiceEntry聲明的主機中查找。對于服務注冊表中不存在服務定義的規則將被忽略。該字段適用于HTTP服務和TCP服務。

針對Kubernetes的說明如下:

  • 當使用短名稱時,例如使用reviews而不使用reviews.default.svc.cluster.local,Istio將根據路由規則的命名空間而不是服務來解析短名稱。在default命名空間中包含一個名為reviews的主機的規則將被解釋為reviews.default.svc.cluster.local,而與reviews服務的實際命名空間無關。

  • 為避免潛在的配置錯誤,建議始終使用完全限定域名而不是短名稱。

trafficPolicy

TrafficPolicy

應用的流量策略(負載均衡策略、連接池大小、異常檢測)。

subsets

Subset[]

代表服務的各個版本的一個或多個子集。服務基本的流量策略可以被子集級別覆蓋。

exportTo

string[]

目標規則導出到的命名空間列表。將目標規則解析應用于服務時,會在命名空間層級的上下文中進行。導出的目標規則允許被包含在其他命名空間中的服務解析層次結構中。此功能提供了一種機制,使服務所有者和網格管理員可以控制跨命名空間邊界的目標規則的可見性。

  • 如果未指定命名空間,目標規則默認會導出到所有命名空間。

  • .被保留并定義為導出到與目標規則的相同命名空間。

  • *被保留并定義為導出到所有命名空間。

workloadSelector

WorkloadSelector

選擇應用此目標規則的Pods的條件。

  • 如果指定,目標規則配置將僅應用于與同一命名空間中的工作負載選擇器標簽匹配的工作負載實例。工作負載選擇器不跨命名空間匹配。

  • 如果不指定,目標規則將回退到默認行為,即應用到目標服務的全部工作負載。例如,如果特定的Sidecar需要針對網格外部的服務具有出口TLS設置,而不是需要網格中的每個Sidecar都具有該配置(這是默認行為),可以指定工作負載選擇器。

TrafficPolicy

應用到指定目的地的流量策略,作用于目的地的全部端口。

字段

類型

是否必選

說明

loadBalancer

LoadBalancerSettings

設置負載均衡算法。

connectionPool

ConnectionPoolSettings

設置上游服務的連接池。

outlierDetection

OutlierDetection

設置如何從負載平衡池中清除不健康主機。

tls

ClientTLSSettings

與上游服務連接的TLS相關設置。

portLevelSettings

PortTrafficPolicy[]

端口級別的流量策略。端口級別的設置將覆蓋目的地級別的設置。當端口級別的流量策略覆蓋了目的地級別的設置時,目的地級別的其他字段的設置將不會被繼承,即在端口級別的流量策略中省略的字段將應用默認值。

tunnel

TunnelSettings

對于目標規則中指定的主機,將TCP使用其他傳輸層或者應用層協議進行隧道傳輸。TunnelSettings可應用于TCP或TLS路由,但不能應用于HTTP路由。

Subset

服務全部端點(endpoints)的一個子集。子集可用于A/B測試或路由到服務的特定版本等場景。服務級別定義的流量策略可以在子集級別被覆蓋。關于子集的更多信息,請參見虛擬服務(Virtual Service)CRD說明

您可以使用目標規則指定命名的服務子集,例如按版本為所有給定服務的實例分組。在虛擬服務的路由規則中使用這些服務子集來控制到服務不同實例的流量。在子集中可以指定特定版本的策略并覆蓋在服務級別指定的設置。以下目標規則使用輪詢(ROUND_ROBIN)負載平衡策略,將所有流量發送到名為testversion的子集。該子集由具有標簽version:v3的Endpoints組成。

說明

對子集指定的負載均衡策略,僅當目標規則將流量發送到該子集時生效。

展開查看YAML示例

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: bookinfo-ratings
spec:
  host: ratings.prod.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      simple: LEAST_REQUEST
  subsets:
  - name: testversion
    labels:
      version: v3
    trafficPolicy:
      loadBalancer:
        simple: ROUND_ROBIN

通常需要一個或多個標簽來指定子集包含的目標。當目標規則代表的主機名支持多個SNI主機名時(例如出口網關),沒有標簽的子集可能有意義。在這種情況下,可以使用包含ClientTLSSettings的流量策略來識別與命名子集對應的特定SNI主機。

字段

類型

是否必選

說明

name

string

子集的名稱。服務名稱和子集名稱可用于路由規則中的流量拆分。

labels

map<string, string>

標簽用于創建過濾器,篩選服務注冊表中服務的端點。

trafficPolicy

TrafficPolicy

要應用到該子集的流量策略。子集繼承在DestinationRule級別指定的流量策略。在子集級別指定的設置將覆蓋在DestinationRule級別指定的相應設置。

LoadBalancerSettings

應用于特定目的地的負載平衡策略。更多信息,請參見Load Balancing

  • 以下目標規則對所有發往ratings服務的流量使用Robin負載平衡策略。

    展開查看負載平衡策略YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: bookinfo-ratings
    spec:
      host: ratings.prod.svc.cluster.local
      trafficPolicy:
        loadBalancer:
          simple: ROUND_ROBIN
  • 以下目標規則為ratings服務配置會話保持功能。使用基于哈希的負載均衡器并使用httpCookie字段user作為哈希的Key。

    展開查看會話保持YAML示例

    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: bookinfo-ratings
    spec:
      host: ratings.prod.svc.cluster.local
      trafficPolicy:
        loadBalancer:
          consistentHash:
            httpCookie:
              name: user
              ttl: 0s

說明

下表類型列的oneof表示該字段的取值有多個,但是您只能任選其一進行配置。

字段

類型

是否必選

說明

simple

SimpleLB (oneof)

指定一種簡單負載平衡的算法。

consistentHash

ConsistentHashLB (oneof)

指定一種一致性哈希負載均衡的算法。

localityLbSetting

LocalityLoadBalancerSetting

本地負載均衡器設置。此配置將完全覆蓋網格范圍的設置。此對象和MeshConfig中的對象不會進行合并。

warmupDurationSecs

Duration

服務的預熱持續時間。如果設置了該字段,服務的新端點將在其創建時間開始保持預熱模式,持續該字段指定的時間。在此期間Istio將逐漸增加該端點的流量,而不是發送相應比例的流量。

  • 此配置應該對需要預熱才能在合適的延遲內滿狀態工作的服務開啟。

  • 此配置在出現少量新端點的情況下最為有效,例如Kubernetes的擴容事件。當所有端點都相對較新時(例如新部署時)不太有效,因為所有端點最終都會獲得相同數量的請求。

  • 此配置僅支持ROUND_ROBINLEAST_REQUEST負載均衡器。

ConnectionPoolSettings

連接到上游主機的連接池設置。這些設置適用于上游服務中的每個主機。更多信息,請參見Envoy的circuit breaker。連接池設置可應用于TCP級別和HTTP級別。

例如,以下規則對名為myredissrv的Redis服務設置100個連接的上限,并設置連接超時為30毫秒。

展開查看DestinationRule YAML示例

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: bookinfo-redis
spec:
  host: myredissrv.prod.svc.cluster.local
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
        connectTimeout: 30ms
        tcpKeepalive:
          time: 7200s
          interval: 75s

字段

類型

是否必選

說明

tcp

TCPSettings

HTTP和TCP上游連接的通用設置。

http

HTTPSettings

HTTP連接池設置。

OutlierDetection

跟蹤上游服務中主機的狀態的熔斷器,適用于HTTP和TCP服務。

  • 對于HTTP服務,API調用不斷返回5xx錯誤的主機將在指定時間內從可用主機池中排除。

  • 對于TCP服務,給定主機的連接超時或連接失敗在計算連續錯誤指標時都被視為錯誤。更多信息,請參見Envoy的outlier detection

以下目標規則將連接池大小設置為100個HTTP1連接,發送到reviews服務的請求或連接不超過10個。為HTTP2請求設置1000并發的上限,并將上游主機配置為每5分鐘掃描一次。任何連續7次出現502、503或504錯誤代碼的主機將被熔斷15分鐘。

展開查看DestinationRule YAML示例

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: reviews-cb-policy
spec:
  host: reviews.prod.svc.cluster.local
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
      http:
        http2MaxRequests: 1000
        maxRequestsPerConnection: 10
    outlierDetection:
      consecutive5xxErrors: 7
      interval: 5m
      baseEjectionTime: 15m

字段

類型

是否必選

說明

splitExternalLocalOriginErrors

bool

指定是否區分本地源故障和外部錯誤。默認為false。設置為true,consecutiveLocalOriginFailures將被用于異常值檢測計算。

以下場景時,您可以使用此功能。

  • 根據本地看到的錯誤(例如連接失敗、連接超時等)而不是上游服務返回的狀態代碼,來計算異常狀態。

  • 當上游服務明確為某些請求返回5xx,而您需要忽略這些來自上游服務的響應,來確定主機的異常檢測狀態。

consecutiveLocalOriginFailures

UInt32Value

觸發排除需要的連續本地故障數。默認為5。該字段僅在splitExternalLocalOriginErrors設置為true時生效。

consecutiveGatewayErrors

UInt32Value

將主機排除出連接池需要的網關錯誤數。當通過HTTP訪問上游主機時,502、503或504返回碼被視為網關錯誤。當通過不透明的TCP連接訪問上游主機時,連接超時和連接錯誤/失敗事件被視為網關錯誤。默認情況或設置值為0時,此功能關閉。

說明
  • consecutiveGatewayErrorsconsecutive5xxErrors可以分別或一起使用。

  • 由于consecutiveGatewayErrors計算的錯誤也包含在consecutive5xxErrors中,如果consecutiveGatewayErrors的值大于或等于consecutive5xxErrors的值,則consecutiveGatewayErrors不會起作用。

consecutive5xxErrors

UInt32Value

將主機排除出連接池需要的5xx錯誤數量。當通過不透明的TCP連接訪問上游主機時,連接超時、連接錯誤或失敗、請求失敗事件都被視為5xx錯誤。默認值為5。您可以通過將值設置為0來關閉此功能。

說明
  • consecutiveGatewayErrorsconsecutive5xxErrors可以分別或一起使用。

  • 由于consecutiveGatewayErrors計算的錯誤也包含在consecutive5xxErrors中,如果consecutiveGatewayErrors的值大于或等于consecutive5xxErrors的值,則consecutiveGatewayErrors不會起作用。

interval

Duration

排除操作掃描的時間間隔。格式為1h/1m/1s/1ms。該值必須≥1毫秒。默認為10秒。

baseEjectionTime

Duration

最短排除時間。主機被排除出連接池的時間等于最短排除時間和主機被排除次數的乘積。該字段允許系統自動增加不健康的上游服務器的彈出時間。格式為1h/1m/1s/1ms。該值必須≥1毫秒。默認為30秒。

maxEjectionPercent

int32

可以排除出負載均衡池的上游服務主機的最大百分比。默認為10%。

minHealthPercent

int32

當負載均衡池至少有min_health_percent比例的主機處于健康狀態時,啟用異常檢測。當負載均衡池中健康主機的百分比低于此閾值時,異常檢測將被禁用,代理將在池中的所有主機(健康和不健康)之間進行負載均衡。您可以通過將閾值設置為0%來禁用該閾值。默認值為0%,因為它通常不適用于每個服務只有幾個Pod的K8s環境。

ClientTLSSettings

上游連接的SSL/TLS相關設置。該配置適用于HTTP和TCP上游。更多信息,請參見Envoy的TLS context

  • 以下目標規則將客戶端配置為使用雙向TLS連接到上游數據庫集群。

    展開查看YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: db-mtls
    spec:
      host: mydbserver.prod.svc.cluster.local
      trafficPolicy:
        tls:
          mode: MUTUAL
          clientCertificate: /etc/certs/myclientcert.pem
          privateKey: /etc/certs/client_private_key.pem
          caCertificates: /etc/certs/rootcacerts.pem
  • 以下目標規則將客戶端配置為在與域名*.foo.com匹配的外部服務對話時使用TLS。

    展開查看YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: tls-foo
    spec:
      host: "*.foo.com"
      trafficPolicy:
        tls:
          mode: SIMPLE
  • 以下目標規則將客戶端配置為在與ratings服務通信時使用Istio雙向TLS。

    展開查看YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: ratings-istio-mtls
    spec:
      host: ratings.prod.svc.cluster.local
      trafficPolicy:
        tls:
          mode: ISTIO_MUTUAL

字段

類型

是否必選

說明

mode

TLSmode

指定是使用TLS對此端口的連接進行安全保護。該字段的值決定TLS的應用方式。

clientCertificate

string

客戶端側TLS證書的文件路徑。

  • 如果modeMUTUAL,則此字段必選。

  • 如果modeISTIO_MUTUAL,則此字段為空。

privateKey

string

客戶端私鑰的文件路徑。

  • 如果modeMUTUAL,則此字段必選。

  • 如果modeISTIO_MUTUAL,則此字段為空。

caCertificates

string

用于驗證證書的CA證書的文件路徑。

  • 如果省略,代理將不會驗證服務器的證書。

  • 如果modeISTIO_MUTUAL,則此字段為空。

credentialName

string

保存包括CA證書在內的客戶端TLS證書的密鑰的名稱。密鑰必須存在于使用證書的代理所在的相同名稱空間中。

支持generictls兩種密鑰類型。

  • 如果密鑰類型為generic,則應包含以下鍵和值:key: <privateKey>, cert: <clientCert>, cacert: <CACertificate>CACertificate用于驗證服務器證書。

  • 如果密鑰類型為tls,則應包含客戶端證書和CA證書中的ca.crt鍵。只能同時指定以下任意一種。

    • clientCertificatecaCertificates

    • credentialName

說明

只有DestinationRule中指定了工作負載的選擇器(workloadSelector)時,本字段才會對Sidecar生效。否則本字段僅適用于網關,Sidecar將繼續使用證書路徑。

subjectAltNames

string[]

用于驗證證書中主體身份的備用名稱列表。

  • 如果指定,代理將驗證服務器證書的主體備用名稱是否與指定值列表中任意值匹配,并且此列表會覆蓋ServiceEntry中subjectAltNames的值。

  • 如果未指定,當VERIFY_CERTIFICATE_AT_CLIENTENABLE_AUTO_SNI環境變量設置為true時,會根據下游HTTP Host或者Authority Header自動驗證上游呈現的證書。

sni

string

在TLS握手期間提供給服務器的SNI字符串。如果未指定,當將ENABLE_AUTO_SNI環境變量設置為true時,在簡單TLS和相互TLS模式下,會基于下游HTTP Host或者Authority Header自動設置SNI。

insecureSkipVerify

BoolValue

此字段指定代理是否跳過驗證與主機對應的服務器證書的CA簽名和SAN。默認為false。

僅當啟用全局CA簽名驗證,并且將VerifyCertAtClient環境變量設置為true,但不希望對特定主機進行驗證時,才應設置此標志。如果啟用InsecureSkipVerify,無論是否啟用VerifyCertAtClient,都將跳過CA簽名和SAN的驗證。

LocalityLoadBalancerSetting

提供一個區域加權的負載均衡,使管理員能夠根據流量的源位置和終止位置來控制流量分配到端點的比例。區域信息可以使用任意標簽指定。這些標簽以{region}/{zone}/{sub-zone}形式指定區域的層次結構。更多信息,請參見Locality Weight

  • 以下示例展示如何在整個網格中設置區域加權。假設有一個包含工作負載和服務的網格被部署到區域hangzhou/zone1/hangzhou/zone2/。本示例指定當訪問服務的流量源自hangzhou/zone1/的工作負載時,80%的流量將被發送到hangzhou/zone1/中的端點(即同一區域),剩下的20%將被發送到hangzhou/zone2/中的端點。此設置優先將流量路由到相同本地性的終點。對于源自hangzhou/zone2/的流量,也指定了類似的設置。

    展開查看YAML示例

      distribute:
        - from: hangzhou/zone1/*
          to:
            "hangzhou/zone1/*": 80
            "hangzhou/zone2/*": 20
        - from: hangzhou/zone2/*
          to:
            "hangzhou/zone1/*": 20
            "hangzhou/zone2/*": 80
  • 如果您的目標不是跨區域或可用區分配負載,而是限制故障轉移的區域性,則可以設置failover策略而不是distribute策略。

    以下示例設置區域故障轉移策略。假設服務駐留在杭州、北京和上海的區域中。此策略指定當杭州的端點變為不健康時,流量應轉移到北京區域或子區域中的端點。同理,當北京的端點變為不健康狀態時,流量應該轉移到上海的端點。

    展開查看YAML示例

     failover:
       - from: hangzhou
         to: beijing
       - from: beijing
         to: shanghai

字段

類型

是否必選

說明

distribute

Distribute[]

明確指定跨不同區域和地理位置的負載均衡權重。如果為空,則根據其中的端點數設置區域權重。更多信息,請參見Locality weighted load balancing

說明

只能設置distributefailoverfailoverPriority三者中的任意一項。

failover

Failover[]

明確指定當本地區域中的端點變為不健康時,流量將轉移到哪個區域。該字段需要與OutlierDetection一起使用,以檢測不健康的端點。如果未指定OutlierDetection,此設置將不會生效。

說明

只能設置distributefailoverfailoverPriority三者中的任意一項。

failoverPriority

string[]

一個有序的標簽列表,用于對端點進行排序以進行基于優先級的負載平衡。該字段用于支持跨不同端點組的流量故障轉移。該字段需要與OutlierDetection一起使用,以檢測不健康的端點。如果未指定OutlierDetection,此設置將不會生效。

假設一共指定了N個標簽:

  1. 與客戶端代理匹配所有N個標簽的端點具有優先級P(0),即最高優先級。

  2. 與客戶端代理匹配前N-1個標簽的端點具有優先級P(1),即第二高優先級。

  3. 通過擴展此邏輯,僅有第一個標簽與客戶端代理匹配的端點具有優先級P(N-1),即第二低的優先級。

  4. 所有其他端點都具有優先級P(N),即最低優先級。

    說明

    匹配的標簽,其前的標簽必須匹配,即只有前N-1個標簽匹配時,才會認為第N個標簽匹配。

此字段可以是在客戶端和服務端工作負載上指定的任何標簽,并支持以下具有特殊語義的標簽:

  • topology.istio.io/network:用于匹配端點的網絡元數據,可以通過Pod或Namespace標簽topology.istio.io/network,Sidecar環境變量ISTIO_META_NETWORK指定。

  • topology.istio.io/cluster:用于匹配端點的clusterID,可以通過Pod labeltopology.istio.io/cluster或Pod環境變量ISTIO_META_CLUSTER_ID指定。

  • topology.kubernetes.io/region:用于匹配端點的區域元數據,映射到Kubernetes節點標簽topology.kubernetes.io/region或棄用標簽failure-domain.beta.kubernetes.io/region

  • topology.kubernetes.io/zone:用于匹配端點的可用區元數據,映射到Kubernetes節點標簽topology.kubernetes.io/zone或棄用標簽failure-domain.beta.kubernetes.io/zone

  • topology.istio.io/subzone:用于匹配端點的子可用區元數據,映射到Istio節點標簽topology.istio.io/subzone

以下拓撲配置的優先級說明如下:

failoverPriority:
- "topology.istio.io/network"
- "topology.kubernetes.io/region"
- "topology.kubernetes.io/zone"
- "topology.istio.io/subzone"
  • 具有與客戶端代理相同的networkregionzonesubzone標簽的端點為最高優先級。

  • 與客戶端代理相同的networkregionzone標簽但具有不同subzone標簽的端點為第二高優先級。

  • 與客戶端代理相同的networkregion標簽但具有不同zone標簽的端點為第三高優先級。

  • 具有與客戶端代理不同的network標簽的所有其他端點為最低優先級。

說明

只能設置distributefailoverfailoverPriority三者中的任意一項。

enabled

BoolValue

啟用區域負載均衡。該配置為DestinationRule級別,將完全覆蓋網格級別的設置。例如,該字段配置為true表示無論網格級別是什么設置,都為此DestinationRule開啟區域負載均衡。

TrafficPolicy.PortTrafficPolicy

服務特定端口的流量策略。

字段

類型

是否必選

說明

port

PortSelector

指定應用此策略的目標服務上的端口號。

loadBalancer

LoadBalancerSettings

控制負載均衡器算法。

connectionPool

ConnectionPoolSettings

控制與上游服務的連接量。

outlierDetection

OutlierDetection

控制從負載平衡池中排除不健康主機。

tls

ClientTLSSettings

與上游服務連接的TLS相關設置。

LoadBalancerSettings.ConsistentHashLB

Consistent Hash-based load balancing可用于提供基于HTTP頭部、Cookie或其他屬性的軟會話保持。一致性哈希在會話保持方面弱于傳統的基于HostName的會話保持。當一個或多個主機被添加或刪除時,使用一致性哈希算法的負載均衡會導致一小部分請求的會話保持失效。基于HostName的會話保持通常在Cookie中編碼特定目標,確保只要后端保持不變就會維持關聯。

一致性哈希的優勢在于可以實現更好的負載均衡,對云上系統更加友好。

一致性哈希取決于每個代理擁有一致的端點視圖。當啟用區域負載平衡時,不保證每個代理擁有一致的端點視圖情況。區域負載平衡和一致性哈希只有在所有代理都在同一區域時才能一起生效,或者套一個更高層級的負載均衡去處理區域親和性。

字段

類型

是否必選

說明

httpHeaderName

string

基于特定HTTP標頭的哈希。 httpHeaderNamehttpCookieuseSourceIphttpQueryParameterName這四個參數只能填一個。

httpCookie

HTTPCookie

基于HTTP Cookie的哈希。

httpHeaderNamehttpCookieuseSourceIphttpQueryParameterName這四個參數只能填一個。

useSourceIp

bool

基于源IP地址的哈希,適用于TCP和HTTP連接。

httpHeaderNamehttpCookieuseSourceIphttpQueryParameterName這四個參數只能填一個。

httpQueryParameterName

string

基于指定HTTP查詢參數的哈希。

httpHeaderNamehttpCookieuseSourceIphttpQueryParameterName這四個參數只能填一個。

ringHash

RingHash

Ring或Modulo負載均衡器實現的對后端主機的一致性哈希。

ringHashmaglev這兩個參數只能填一個,都不填默認是ringHash

maglev

MagLev

Maglev負載均衡器實現的對后端主機的一致性哈希。

ringHashmaglev這兩個參數只能填一個,都不填默認是ringHash

ASM從1.16開始支持maglev算法。

minimumRingSize

uint64

已棄用。請改用ringHash

LoadBalancerSettings.ConsistentHashLB.RingHash

字段

類型

是否必選

說明

minimumRingSize

uint64

Ring算法的最小虛擬節點數。默認為1024。較大的環會導致更細粒度的負載分布。如果負載均衡池中的主機數量大于環大小,則每臺主機將分配一個虛擬節點。

LoadBalancerSettings.ConsistentHashLB.MagLev

字段

類型

是否必選

說明

tableSize

uint64

Maglev算法中散列表的大小,有助于控制當后端主機發生變化時的干擾。增加表格大小可以減少干擾的程度。

LoadBalancerSettings.ConsistentHashLB.HTTPCookie

指定將被用作一致性哈希負載均衡器的哈希鍵。如果該Cookie不存在,則將生成該Cookie。

字段

類型

是否必選

說明

name

string

這個cookie的內容將會被用作Hash Key。如果這個cookie不存在并且下面的ttl沒有設置,將不會生成hash。

path

string

如果指定了,在這個Cookie不存在時,將會生成一個帶有TTL的Cookie。如果TTL存在并且等于零,生成的Cookie將會作為Session Cookie。

ttl

Duration

Cookie的生命周期。

ConnectionPoolSettings.TCPSettings

HTTP和TCP上游連接通用的設置。

字段

類型

是否必選

說明

maxConnections

int32

到目標主機的最大HTTP1或TCP連接數。默認為2^32-1

connectTimeout

Duration

TCP連接超時時長。格式:1h/1m/1s/1ms。必須≥1毫秒。默認為10秒。

tcpKeepalive

TcpKeepalive

如果設置,則在Socket上設置SO_KEEPALIVE以啟用TCP Keepalive。

maxConnectionDuration

Duration

連接的最長持續時間。持續時間定義為自建立連接的時間間隔。如果未設置,則沒有最大持續時間。當達到maxConnectionDuration時,連接將被關閉。持續時間必須至少為1毫秒。

ConnectionPoolSettings.HTTPSettings

適用于HTTP1.1、HTTP2、GRPC連接的設置。

字段

類型

是否必選

說明

http1MaxPendingRequests

int32

隊列中等待連接就緒的最大請求數。默認為1024。此配置適用于HTTP/1.1和HTTP2。關于何時為HTTP2創建新連接,請參見circuit_breaking

http2MaxRequests

int32

發往一個目的地的最大活躍請求數。默認為1024。此配置適用于HTTP/1.1和HTTP2。

maxRequestsPerConnection

int32

每個連接的最大請求數。此參數設置為1,將禁用HTTP Keepalive。默認為0,表示無限制,最大為2^29。

maxRetries

int32

在給定時間對集群中所有主機可以進行的最大重試次數。默認為2^32-1。

idleTimeout

Duration

上游連接池連接的空閑超時時間。空閑超時時間指沒有活動請求的時間段。如果未設置,則默認為1小時。當達到空閑超時時間時,連接將被關閉。如果連接是HTTP/2連接,則在關閉連接之前將發送Drain Sequence。

基于請求的超時表明HTTP/2 PING不會使連接保持活動狀態。該配置適用于HTTP1.1和HTTP2連接。

h2UpgradePolicy

H2UpgradePolicy

指定是否將連接到相應目的地的HTTP1.1連接升級為HTTP2連接。

useClientProtocol

bool

如果設置為true,則在向后端發起連接時將保留客戶端使用的協議,Ah2UpgradePolicy將會無效,即客戶端連接不會升級到HTTP2。

ConnectionPoolSettings.TCPSettings.TcpKeepalive

TCP Keepalive的相關設置。

字段

類型

是否必選

說明

probes

uint32

在確定連接已死之前要發送而沒有響應的最大保活探測數。默認使用操作系統級別的配置(除非被覆蓋)。Linux默認為9。

time

Duration

在開始發送保活探測之前連接需要空閑的持續時間。默認使用操作系統級別的配置(除非被覆蓋)。Linux默認為7200秒,即兩小時。

interval

Duration

保活探測之間的間隔時間。默認使用操作系統級別的配置(除非被覆蓋)。Linux默認為75秒。

google.protobuf.UInt32Value

uint32的包裝信息。

字段

類型

是否必選

說明

value

uint32

uint32值。在JSON中UInt32Value需要表示成一個JSON數字值。

LoadBalancerSettings.SimpleLB

標準負載平衡算法。

字段

說明

UNSPECIFIED

不指定負載均衡算法。Istio將選擇一個合適的默認值。

RANDOM

隨機負載均衡算法隨機選擇一個健康的主機。如果沒有配置健康檢查策略,隨機負載均衡器通常比輪詢性能好。

PASSTHROUGH

此選項會將連接轉發到調用者請求的原始IP地址,而不進行任何形式的負載均衡。此項屬于高級用法,請謹慎使用。更多信息,請參見Original destination

ROUND_ROBIN

基本的輪詢循環負載均衡策略。在許多場景(例如使用端點加權時)不太安全,因為它會使端點負擔過重。通常情況下,最好使用LEAST_REQUEST作為ROUND_ROBIN的替代方案。

LEAST_REQUEST

最少請求負載均衡在將負載分配給端點時,會優先考慮未完成請求最少的端點。通常更加安全,幾乎在所有情況下都優于ROUND_ROBIN。建議使用LEAST_REQUEST作為ROUND_ROBIN的替代方案。

LEAST_CONN

已棄用。請改用LEAST_REQUEST

ConnectionPoolSettings.HTTPSettings.H2UpgradePolicy

將HTTP1.1連接升級到HTTP2的策略。

字段

說明

DEFAULT

使用全局默認值。

DO_NOT_UPGRADE

不將連接升級到HTTP2。

UPGRADE

將連接升級到HTTP2。

ClientTLSSettings.TLSmode

TLS連接模式。

字段

說明

DISABLE

不建立與上游端點的TLS連接。

SIMPLE

建立與上游端點的TLS連接。

MUTUAL

通過提供客戶端證書進行身份驗證,使用雙向TLS保護與上游的連接。

ISTIO_MUTUAL

通過提供客戶端證書進行身份驗證,使用雙向TLS保護與上游的連接。與Mutual模式相比,該模式使用Istio自動生成的證書進行mTLS身份驗證。使用此模式時,ClientTLSSettings中所有其他字段都應為空。