Istio 多主多网络本地故障转移问题

Istio 多主多网络本地故障转移问题

我无法获得“多主多网络“ 和睦相处本地故障转移(或者本地负载均衡事实上)。端点注册得很好。istio-system标有网络信息,每个节点都标有区域和地区信息,当我检查/clusters客户端的 Envoy 管理界面上的页面时,每个端点的区域和地区信息都设置正确。

问题似乎是控制平面没有分配优先事项到端点。然而,到过时的来源,只要我创建了 DestinationRule(我有),这应该会自动工作。我还创建了一个 VirtualService 以备不时之需。

$ istioctl proxy-config endpoints -n client client-6889f68cbc-z5jb6 --cluster "outbound|80||server.server.svc.cluster.local" -o json | jq '.[0].hostStatuses[] | del(.stats)'
{
  "address": {
    "socketAddress": {
      "address": "10.244.1.25",
      "portValue": 80
    }
  },
  "healthStatus": {
    "edsHealthStatus": "HEALTHY"
  },
  "weight": 1,
  "locality": {
    "region": "region2",
    "zone": "zone2"
  }
}
{
  "address": {
    "socketAddress": {
      "address": "172.18.254.1",
      "portValue": 15443
    }
  },
  "healthStatus": {
    "edsHealthStatus": "HEALTHY"
  },
  "weight": 3,
  "locality": {
    "region": "region1",
    "zone": "zone1"
  }
}

我的设置是两个使用 KinD + metallb 在本地运行的 1.20.2 集群,使用 Istio 操作符 v1.9.1。每个集群都配置为占用不同的区域和区域。

Istio 对比和灾难恢复

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: server
  namespace: server
spec:
  host: server
  trafficPolicy:
    connectionPool:
      http:
        http2MaxRequests: 10
        maxRequestsPerConnection: 10
    loadBalancer:
      localityLbSetting:
        enabled: true
      simple: ROUND_ROBIN
    outlierDetection:
      baseEjectionTime: 1m
      consecutive5xxErrors: 1
      interval: 1s
      maxEjectionPercent: 51
      minHealthPercent: 0
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: server
  namespace: server
spec:
  hosts:
  - server
  http:
  - route:
    - destination:
        host: server

基亚利景观酒店

基亚利景观

从 Kiali 仪表板中可以看到,DR 和 VS 都处于活动状态。两个集群都是可路由的。但流量平等地流向两者,而流量应该只流向一个。我还尝试在 DR 规范中明确指定分发和故障转移,但没有成功。

答案1

这是 istio 1.9.1 在裸机环境中运行时的一个错误。客户端必须有一个附加服务。当提供服务时,位置信息会从第一个实例中提取。但是,当没有定义服务时,云元数据提供程序用于将位置信息分配给代理实例(sidecar 本身会查询元数据服务器)。

看:

https://github.com/istio/istio/blob/bf5dd51386f4d78b20dd1f9c14f09b562a6ecd6e/pilot/pkg/xds/ads.go#L584-L600

相关内容