• istio学习(四)Istio服务治理-负载均衡模型介绍



    前言

    Istio提供了三种负载均衡策略:simple、consistentHash、localityLbSetting,下面一一介绍。

    名称描述
    simple简单方式,其内置了四种负载均衡算法
    consistentHash基于HASH一致性算法的负载均衡
    localityLbSetting局部负载均衡器设置,将完全覆盖网格的设置

    一、simple

    simple方式提供四种负载均衡算法

    • 轮询(ROUND_ROBIN)
    • 最少连接(LEAST_CONN)
    • 随机(RANDOM)
    • 透传(PASSTHROUGH)
    名称描述
    ROUND_ROBIN默认算法,循环访问某个服务
    LEAST_CONN该算法随机选择两个健康的服务,最终选择活动请求较少的服务
    RANDOM该算法随机选择1个健康的服务,如果服务未配置健康检测策略,该策略的性能通常比轮询更好
    PASSTHROUGH该算法将连接转发到呼叫着请求的原始IP地址,不进行任何负载均衡,需谨慎使用

    二、consistentHash(hash一致性)

    consistentHash提供五种设置参数:

    • httpHeaderName
    • httpCookie
    • useSourceIp
    • httpQueryParamterName
    • minimumRingSize
    名称描述
    httpHeaderName基于HTTP请求头的哈希
    httpCookie基于HTTP Cookie的哈希
    useSourceIp基于源IP地址的哈希
    httpQueryParamterName基于特定HTTP请求参数的哈希
    minimumRingSize用户哈希环的最小虚拟节点,默认值为1024,

    使用useSourceIp的设置例子:

    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: newframe
      namespace: dmo
    spec:
      host: newframe-tttest-service
      trafficPolicy:
        loadBalancer:
          consistentHash:
            useSourceIp: true
        connectionPool:
          tcp:
            maxConnections: 100
          http:
            http1MaxPendingRequests: 50
            maxRequestsPerConnection: 80
      #    outlierDetection:
      #      # 实例被驱逐前的连续错误次数,默认是5.HTTP返回5xx被认为异常,TCP超时和连接出错被认为异常
      #      consecutiveErrors: 100
      #      # 驱逐的时间间隔,默认10s,要求大于1ms,可以是ms、s、m、h
      #      interval: 10s
      #      # 最小驱逐时间,默认30s。
      #      baseEjectionTime: 10s
      #      # 均衡池中可以被驱逐的故障实例最大比例。默认是10%. 避免驱逐太多服务能力下降。
      #      maxEjectionPercent: 50
      subsets:
        - name: v1
          labels:
            version: v1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    使用cookie的例子:

     apiVersion: networking.istio.io/v1alpha3
     kind: DestinationRule
     metadata:
       name: newframe
     spec:
       host: newframe
       trafficPolicy:
         loadBalancer:
           consistentHash:
             httpCookie:
               name: Authorization
               ttl: 0s # Cookie的生命周期 必须写
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    三、LocalityLoadBalancer(区域加权负载均衡)(没太懂)

    LocalityLoadBalancer提供三种算法

    • distribute
    • failover
    • enabled
    名称描述
    distribute可选,只能设置分发或故障转移之一,明确指定跨不同区域和地理位置的负载均衡权重。
    failover可选,只能 设置故障转移或分发,明确指定当本地区域中的端点变得不健康时,区域通信将降落,应该与OutlierDetection一起使用以检测不健康的端口。
    enabled启用局域负载平衡,这是DestinationRule级别,将整体覆盖网格范围的设置
  • 相关阅读:
    免费!IDEA插件推荐:Apipost-Helper
    设计模式-桥接模式
    【前端】Nesj 学习笔记
    COS 音视频实践
    k8s 部署mqtt —— 筑梦之路
    python使用flask实现前后端分离&通过前端修改数据库数据【全栈开发基础】
    海尔智家:“超预期”成为“新常态”
    SpinalHDL之实用工具(下篇)
    C++类与对象(1)—初步认识
    Vim的使用
  • 原文地址:https://blog.csdn.net/u011943534/article/details/127922336