【问题标题】:Can one Virtual service fan out the request to multiple services一个虚拟服务能否将请求扇出到多个服务
【发布时间】:2019-05-15 07:50:55
【问题描述】:

您将请求(例如 /test ),并且该请求必须重定向到多个服务 一种多任务行为

我试过下面的东西,但没有用 - 路线: - 目的地: 主持人:详情 子集:v1 - 目的地: 主持人:预览 子集:v1

我有匹配测试前缀的代码,并且只添加了实际重定向发生的部分。

以更简单的方式。我想知道,如何在istio中实现扇出

【问题讨论】:

    标签: istio


    【解决方案1】:

    您尚未共享完整的 VirtualService 清单,但是在类似的场景中,我使用以下配置通过应用特定的自定义标头来区分对相同前缀路径的 HTTP 请求:

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
        - example
      gateways:
        - example-gateway
      http:
      - match:
        - headers:
            test:
              exact: details
        - uri:
            prefix: /test
        route:
        - destination:
            host: details
            subset: v1
      - match:
        - headers:
            test:
              exact: preview
        - uri:
           prefix: /test
        route:
        - destination:
            host: preview
            subset: v1
    

    当然不要忘记完成适当的DestinationRule's

    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: details
    spec:
      host: details
      subsets:
      - name: v1
        labels:
          version: v1
    ---
    
    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: preview
    spec:
      host: preview
      subsets:
      - name: v1
        labels:
          version: v1
    

    您可以在官方 Istio 流量管理documentation 中找到更多相关信息。

    【讨论】:

    • 谢谢 mk_sta 。但我的情况略有不同。我会收到来自外部的一个请求,该请求将发送到多个服务。
    • 实际上,您必须指定流量路由的匹配条件,并且每个路由规则必须是唯一的,这就是为什么我使用自定义标头以便在同一 URI 路径中拆分网络流量。此外,VirtualService 应该为每个主机定义一个。
    • 我已经使用NAT流实现了
    【解决方案2】:

    尝试在 Istio 中使用镜像选项https://istio.io/docs/tasks/traffic-management/mirroring/

    【讨论】:

      猜你喜欢
      • 2016-12-06
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多