Istio架构

banq 18-08-01
              



Istio由下面几个部分组成:Pilot,Mixer,Ingress-Controller和Egress-Controller,以及Istio CA(证书颁发机构):

Pilot - 负责在运行时配置Envoy和Mixer。

Envoy - 每个微服务的Sidecar代理,用于处理集群中服务之间以及从服务到外部服务之间的入口/出口流量。代理形成一个安全的微服务网格,提供丰富的功能如服务发现、丰富的第7层路由、断路器、策略实施和遥测记录/报告功能。类似Spring cloud全家桶中的eureka、ribbon和Hystrix。

Mixer- 在基础架构后端之上创建可移植层。在基础架构级别实施ACL、速率限制、配额、身份验证、请求跟踪和遥测收集等策略。

Ingress/Egress(入口/出口) - 配置基于路径的路由。类似Zuul API网关路由功能

Istio CA - 通过TLS保护服务通信。提供密钥管理系统,以自动化密钥和证书生成,分发,轮换和撤销

Istio的具体特点

1. 控制路由:大规模的微服务架构需要更高级的服务之间的通信控制。流量管理的一个方面是基于HTTP请求控制流量路由,例如用户代理字符串,IP地址或cookie。

以下yaml配置文件是将用户“jason”的所有流量发送到评论:v2

spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: jason
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v1

这些配置类似Spring Cloud的API网关Zuul路由配置,类似Nginx,只要将这yaml配置部署到k8s中API网格即可生效:

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml


分割流量:能进行黑白或蓝绿测试,包括部署金丝雀版本:

spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50


这些路由信息可以通过命令实时获得:

master $ istioctl get virtualservices
VIRTUAL-SERVICE NAME GATEWAYS HOSTS #HTTP #TCP NAMESPACE AGE
bookinfo bookinfo-gateway * 1 0 default 3m


上述结果显示:微服务bookinfo 的API网关是bookinfo-gateway。


2.负载监测:Istio可以深入了解应用程序的工作方式和性能指标。生成各种图表:

Grafana:这是Istio Grafana仪表板。仪表板返回当前正在处理的请求总数,以及每次调用的错误数和响应时间。由于Istio管理整个服务之间的通信,因此仪表板将突出显示汇总的总计和单个服务级别信息的细分。

Jaguar:为每个HTTP请求提供跟踪信息。它显示了进行了哪些调用以及每个请求中花费的时间。可查看单个请求和HTTP调用的详细信息,这是识别问题和潜在性能瓶颈的绝佳方法。

Service Graph服务图:随着系统的发展,可能难以可视化服务之间的依赖关系,服务图将绘制系统如何连接的依赖关系树。




使用Weave Scope可视化群集:Service Graph显示了系统连接方式的高级概述,而Weave Scope工具为整个群集提供了强大的可视化和调试工具。使用Scope,可以查看每个pod中正在运行的进程以及哪些pod正在相互通信。 这允许用户了解Istio及其应用程序的行为方式。




快速体验Istio

[该贴被banq于2018-08-01 12:04修改过]