Istio流量管理

概念

  • Gateway 网关
  • VirtualService 虚拟路由
  • DestinationRule 目标规则(和VS、SE配合使用)
  • ServiceEtnry 服务入口(引用外部服务)
  • WorkloadEntry 外部端点(外部集合和SE配合使用)
  • EnvoyFilter 过滤器
  • Sidecar

VSDR 的关系
VirtualService决定了流量要去哪个子集,而DestinationRule定义了到达子集后如何分配流量。
————

除了Sidecar其他生产中都已经上过了, 这篇比较粗糙 了解个大概


案例

不同接口不同服务


# VS
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
    - bookinfo.com
  http:
  - match:
    - uri:
        prefix: /reviews
    route:
    - destination:
        host: reviews
  - match:
    - uri:
        prefix: /ratings
    route:
    - destination:
        host: ratings

超时

# VS
  http:
    - match:
        - uri:
            prefix: /Beta.AiAssistantH5/
      route:
        - destination:
            host: betaaiassistanth5
            port:
              number: 80
          timeout: 30s

转发

# VS
  http:
    - match:
        - uri:
            prefix: /Beta.AiAssistantH5/
      rewrite:
        uri: /
      route:
        - destination:
            host: betaaiassistanth5
            port:
              number: 80

重定向

# VS
spec:
  hosts:
  - proxy # service名称
  http:
  - name: redirect
    match:
    - uri:
        prefix: "/backend" # 匹配前缀。
    redirect: # 重定向配置
      uri: /
      authority: backend # 后端服务,service名称
      port: 8082 # 从proxy这个service进来的请求,如果请求前缀是/backend,就把请求重定向到backend:8082/
  - name: default
    route:
    - destination:
        host: proxy # 请求前缀不是/backend的,依然让proxy服务处理

重试

下面的示例配置了在初始调用失败后最多重试 3 次来连接到服务子集,每个重试都有 2 秒的超时。

# VS
spec:
  hosts:
  - ratings
  http:
  - route:
    - destination:
        host: ratings
        subset: v1
    retries:
      attempts: 3
      perTryTimeout: 2s

权重

—— 不同的后端承接1个接口, 根据权重控制 (默认轮询)流量

# VS
spec:
  hosts:
    - bookinfo.com
  http:
  - match:
    - uri:
        prefix: /login
    route:
    - destination:
        host: reviews
        subset: v1
      weight: 70
    route:
    - destination:
        host: ratings
        subset: v2
      weight: 30

故障注入

⚠️⚠️⚠️ 不能和VirutalService中的超时、重试 结合使用

延迟:延迟是时间故障。它们模拟增加的网络延迟或一个超载的上游服务。

终止:终止是崩溃失败。他们模仿上游服务的失败。终止通常以 HTTP 错误码或 TCP 连接失败的形式出现。

下面的VS为千分之一的访问 ratings 服务的请求配置了一个 5 秒的延迟:

# VS
spec:
  hosts:
  - ratings
  http:
  - fault:
      delay:
        percentage:
          value: 0.1
        fixedDelay: 5s
    route:
    - destination:
        host: ratings
        subset: v1

熔断器

# DR
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1
    trafficPolicy:
      connectionPool:
        tcp:
          maxConnections: 100


基于源IP会话保持

---
# DR
spec:
  host: betaauthh5
  trafficPolicy:
    loadBalancer:
      consistentHash:
        useSourceIp: true

基于cookie会话保持

---
# DR
spec:
  host: beta.authserver-slave
  trafficPolicy:
    loadBalancer:
      consistentHash:
        httpCookie:
          name: beta_alb_keep
          path: /
          ttl: 0s

参考

流量管理实践

https://blog.csdn.net/qq_42515722/article/details/134207751

Istio流量管理

https://istio.io/latest/zh/docs/concepts/traffic-management/#retries

DestinationRule的路由规则

https://istio.io/latest/zh/docs/reference/config/networking/destination-rule/

Envoy路由管理

https://www.envoyproxy.io/docs/envoy/v1.5.0/intro/arch_overview/load_balancing

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值