ToB企服应用市场:ToB评测及商务社交产业平台

标题: 还谈istio [打印本页]

作者: 大连密封材料    时间: 2024-9-7 23:53
标题: 还谈istio
一、destination rule,vitrual service, 分别是干啥用的?gateway里填写的mesh又是什么?

在Istio服务网格中,DestinationRule、VirtualService和Gateway是三种不同的资源,它们各自承担着不同的职责:
Gateway 中的 mesh:

总结来说,Gateway 负责管理进入网格的流量,VirtualService 负责定义这些流量的路由规则,而 DestinationRule 负责定义服务间通信的策略。这些资源共同工作,提供了Istio服务网格中的流量管理和微服务间通信的强大控制能力。

在 Istio 中,DestinationRule 和 VirtualService 是用于流量管理的紧张资源,而 Gateway 则用于设置收支服务网格的流量。理解它们的用途和相互关系有助于更好地管理服务间的通信。
DestinationRule

定义:DestinationRule 是 Istio 中用于为服务指定流量策略的资源。它定义了应用于特定服务的策略,好比毗连池巨细、重试策略、断路器设置等。
功能

示例
假设我们有一个名为 reviews 的服务,有两个版本 v1 和 v2。我们可以利用 DestinationRule 来定义这些子集:
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: DestinationRule
  3. metadata:
  4.   name: reviews-destination
  5. spec:
  6.   host: reviews
  7.   subsets:
  8.   - name: v1
  9.     labels:
  10.       version: v1
  11.   - name: v2
  12.     labels:
  13.       version: v2
  14.   trafficPolicy:
  15.     loadBalancer:
  16.       simple: ROUND_ROBIN
  17.     connectionPool:
  18.       http:
  19.         http1MaxPendingRequests: 1000
  20.         maxRequestsPerConnection: 1
复制代码
VirtualService

定义:VirtualService 是 Istio 中用于定义流量路由规则的资源。它决定了怎样将请求路由到指定的服务和子集。
功能

示例
我们可以利用 VirtualService 来定义将特定版本的流量路由到 reviews 服务的不同子集:
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: VirtualService
  3. metadata:
  4.   name: reviews
  5. spec:
  6.   hosts:
  7.   - reviews
  8.   http:
  9.   - match:
  10.     - uri:
  11.         prefix: "/v1"
  12.     route:
  13.     - destination:
  14.         host: reviews
  15.         subset: v1
  16.   - match:
  17.     - uri:
  18.         prefix: "/v2"
  19.     route:
  20.     - destination:
  21.         host: reviews
  22.         subset: v2
复制代码
Gateway

定义:Gateway 是 Istio 中用于设置收支服务网格的流量的资源。它主要用于管理收支服务网格的边沿流量。
功能

示例
假设我们有一个外部网关,允许访问 bookinfo 应用的流量:
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: Gateway
  3. metadata:
  4.   name: bookinfo-gateway
  5. spec:
  6.   selector:
  7.     istio: ingressgateway
  8.   servers:
  9.   - port:
  10.       number: 80
  11.       name: http
  12.       protocol: HTTP
  13.     hosts:
  14.     - "*"
复制代码
mesh 的利用
在 Istio 中,mesh 是一个特殊的关键字,用于指定网格内部的流量,而不是通过外部网关的流量。它通常在 VirtualService 中用于定义网格内部的流量路由。
示例
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: VirtualService
  3. metadata:
  4.   name: internal-service
  5. spec:
  6.   hosts:
  7.   - internal-service
  8.   gateways:
  9.   - mesh
  10.   http:
  11.   - route:
  12.     - destination:
  13.         host: internal-service
复制代码
总结


通过团结利用这些资源,可以机动地管理和控制服务网格表里的流量,确保流量管理的高效和安全。
二、熔断

在微服务架构中,熔断器(Circuit Breaker)是一种计划模式,用于进步体系的弹性和稳定性。熔断器的主要目的是防止故障蔓延,克制在服务调用链中一个服务的故障导致整个体系的崩溃。
在 Istio 中,熔断器机制可以通过 DestinationRule 来设置。Istio 的熔断器功能允许你定义在遇到特定条件时怎样处理请求,克制服务过载,并提供更好的用户体验。
熔断器的工作原理

Istio 中的熔断设置

在 Istio 中,熔断器设置是通过 DestinationRule 的 trafficPolicy 字段来定义的。下面是一个示例设置,展示怎样利用 DestinationRule 设置熔断器:
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: DestinationRule
  3. metadata:
  4.   name: reviews-circuit-breaker
  5. spec:
  6.   host: reviews
  7.   trafficPolicy:
  8.     connectionPool:
  9.       tcp:
  10.         maxConnections: 100
  11.       http:
  12.         http1MaxPendingRequests: 1000
  13.         maxRequestsPerConnection: 1
  14.     outlierDetection:
  15.       consecutiveErrors: 5
  16.       interval: 1s
  17.       baseEjectionTime: 30s
  18.       maxEjectionPercent: 100
复制代码
设置说明


例子解释

假设我们有一个 reviews 服务,我们设置了如下的熔断器策略:

这种设置可以确保在 reviews 服务出现题目时,及时停止对其的调用,防止题目扩大,同时在恰当的时候重新尝试调用以检测服务是否恢复。
三、故障注入 (为了提前练习)

在 Istio 中,故障注入和终止故障是两种用于加强体系弹性和稳定性的机制。它们可以帮助模拟各种故障情景,以便测试服务的容错能力和体系的团体鲁棒性。
故障注入(Fault Injection)

定义:故障注入是一种测试技术,通过有意引入故障(如延迟、错误响应等)来模拟服务在现实运行中可能遇到的题目,从而验证体系的容错能力和弹性。
应用场景

Istio 中的设置
故障注入通过在 VirtualService 中设置 fault 字段来实现。可以注入两种范例的故障:延迟(delay)和错误(abort)。
示例
假设我们有一个 reviews 服务,我们希望注入 5 秒的延迟和 10% 的错误响应:
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: VirtualService
  3. metadata:
  4.   name: reviews
  5. spec:
  6.   hosts:
  7.   - reviews
  8.   http:
  9.   - fault:
  10.       delay:
  11.         percentage:
  12.           value: 50.0
  13.         fixedDelay: 5s
  14.       abort:
  15.         percentage:
  16.           value: 10.0
  17.         httpStatus: 500
  18.     route:
  19.     - destination:
  20.         host: reviews
  21.         subset: v1
复制代码
设置说明

终止故障(Abort Fault)

定义:终止故障是一种故障注入技术,通过有意地返回错误响应来模拟服务不可用的情况。它主要用于测试服务在接收到错误响应时的处理逻辑和恢复能力。
应用场景

Istio 中的设置
终止故障同样通过在 VirtualService 中设置 abort 字段来实现。
示例
假设我们希望在 reviews 服务的 10% 请求中返回 503 错误:
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: VirtualService
  3. metadata:
  4.   name: reviews
  5. spec:
  6.   hosts:
  7.   - reviews
  8.   http:
  9.   - fault:
  10.       abort:
  11.         percentage:
  12.           value: 10.0
  13.         httpStatus: 503
  14.     route:
  15.     - destination:
  16.         host: reviews
  17.         subset: v1
复制代码
设置说明

故障注入与终止故障的区别和接洽


接洽

实践中的应用

测试体系弹性

验证设置

提拔服务稳定性

通过公道地利用故障注入和终止故障,可以大大提拔体系的弹性和稳定性,确保在现实运行中能够应对各种潜在的题目。
四、流量镜像

流量镜像(Traffic Mirroring),有时也称为影子流量(Shadow Traffic),是一种在生产情况中测试新版本或新功能的技术。它通过将生产情况中的真实流量复制一份发送到新版本或新功能的实例上,从而不影响生产情况的正常运行。流量镜像可以帮助发现潜在的题目和性能瓶颈,确保新版本在正式发布前能够处理现实流量。
流量镜像的应用场景

Istio 中的流量镜像设置

在 Istio 中,可以通过在 VirtualService 中设置 mirror 字段来实现流量镜像。mirror 字段指定将生产流量的副本发送到哪个服务或服务子集。
示例
假设我们有一个 reviews 服务,我们希望将 100% 的流量镜像到 reviews-v2 子集,以便在 reviews-v2 上进行测试:
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: VirtualService
  3. metadata:
  4.   name: reviews
  5. spec:
  6.   hosts:
  7.   - reviews
  8.   http:
  9.   - route:
  10.     - destination:
  11.         host: reviews
  12.         subset: v1
  13.   - mirror:
  14.       host: reviews
  15.       subset: v2
  16.     mirrorPercentage:
  17.       value: 100.0
复制代码
设置说明

流量镜像的优点

实践中的流量镜像

总结

流量镜像是 Istio 提供的一种强大的测试和验证工具,通过将生产情况中的真实流量复制一份发送到测试实例上,帮助发现和办理潜在的题目,确保新版本和新功能在正式发布前能够处理现实流量。公道利用流量镜像,可以大大进步体系的稳定性和发布质量。
五、补充

镜像也可以通过主数据库同步到从数据库,你的应用用从数据库测试。但是这不符合三级等保要求
测试

写 vs,全部流量都到v1版本,v2版本获取mirror, 然后logs -f v1和v2就能看到curl的结果。发起请求的也要在pod内
监控

自带监控

jaeger 能查谁的性能差。

六、


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4