(二)Istio简介
一、Istio是什么
Istio是一个用于服务治理的开放平台。服务治理的意思就是为了保证服务的稳定高效运行而进行的一些列附加配置,比如负载均衡、流量控制、重定向、超时重试等。
Istio是一个Service Mesh形态的用于服务治理的开放平台。 Service Mesh概念前面讲过,自行翻阅。
根据 Istio 官方(https://istio.io/)的介绍,服务治理涉及连接(Connect)、安全 (Secure)、策略控制(Control)和可视化(Observe),如图所示
- 连接:智能控制服务之间的流量和API调用流,比如载均衡、熔断、故障注入、重试、重定向等服务治理。在这过程中进行一系列测试,通过灰度发布对应用进行升级。
- 安全:通过托管身份验证授权和服务之间通信的加密,自动保护您的服务。
- 控制:通过动态制定策略实现访问控 制、速率限制、配额管理、服务计费等能力。
- 可视化:自动跟踪,监控和记录你的服务的运行状况。
二、为什么使用Istio
通过负载平衡、service-to-service身份验证、监视等方法,Istio可以轻松地创建部署的服务网络,而服务代码中的代码更改很少或没有更改。您可以通过在整个环境中部署一个特殊的sidecar代理来为服务添加Istio支持,该代理可以拦截微服务之间的所有网络通信,然后使用其控制平面功能来配置和管理Istio,其中包括:
- HTTP、gRPC、WebSocket和TCP流量的自动负载平衡。
- 使用丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制。
- 支持访问控制、速率限制和配额的可插拔策略层和配置API。
- 集群内所有流量的自动度量、日志和跟踪,包括集群入口和出口。
- 在具有强大的基于身份的身份验证和授权的集群中实现安全的服务到服务通信。
三、Istio主要功能
- 自动服务发现获取服务实例列表,通过负载均衡策略选择服务实例;
- 启用双向认证和通道加密;
- 自动隔离访问不正常的服务,以提高访问质量;
- 设置最大连接数、最大请求数、访问超时等对服务进行保护;
- 提供对服务请求限流功能;
- 提供请求的重试功能;
- 修改请求中的内容;
- 对规定特征的服务进行重定向;
- 提供灰度发布功能;
- 自动记录服务访问信息;
- 记录调用链,进行分布式追踪;
- 根据访问数据形成完整的应用访问拓扑。
等等
Istio提供的所有这些功能,都不需要用户修改代码,只需在 Istio 的控制面板做一些配置即可,并且动态生效。你就说牛不牛逼吧。
四、平台支持
Istio 独立于平台,被设计为可以在各种环境中运行,包括跨云、内部环境、Kubernetes、Mesos 等等。您可以在 Kubernetes 或是装有 Consul 的 Nomad 环境上部署 Istio。Istio 目前支持:
- Kubernetes 上的服务部署
- 基于 Consul 的服务注册
- 服务运行在独立的虚拟机上