什么是Istio?
目前而言,在公司内使用云平台有大量的优点,然而,使用云技术也给DevOps团队带来压力,比如:开发人员必须使用微服务来设计系统可移植性,同时,运维人员也在管理非常庞大的混合部署和多云部署。Istio可以让你对服务的连接、安全、控制和监控进行管理。
进一步来说,ISTIO有助于减少这些部署的复杂性,减轻开发团队的压力。它是一个完全开源的服务网格,服务网格层对现有的分布式应用程序来讲是透明的。它也是一个平台,包括很多API接口,可以方便的将Istio集成到其他日志平台、遥测或策略系统中。Istio的多样的功能集可以让你能够成功、高效地运行分布式微服务架构,并提供一种统一的方式来保证微服务的安全、连接和监控。
服务网格
Istio解决了开发人员和运维人员在单体应用向分布式微服务架构过渡时面临的挑战困难。(可以在Istio的服务网格中查看更多细节)。
许许多多的微服务组成系统应用,服务网格是指这些微服务之间的网络,以及微服务之间的交互。随着服务网格的规模和复杂性的增长,服务网格变得越来越混乱和管理困难。就产生了很多新的需求,包括服务发现、负载均衡、故障恢复、度量和监控。服务网格通常还具有更复杂的运维要求,如A/B测试、金丝雀部署、流量控制、访问控制和端到端身份验证。
Istio提供了对整个服务网格的行为洞察力和操作控制,提供了一个完整的解决方案来满足微服务应用程序的各种需求。
为什么要使用Istio?
使用Istio的话,微服务代码稍作修改或者不用变更,就可以非常容易的创建一个包括负载平衡、服务到服务身份验证、监控等功能的部署服务的网络。通过在整个环境中部署一个特殊的sidecar代理,来为服务添加Istio支持,该代理拦截微服务之间的所有网络通信,然后使用控制面板功能配置和管理Istio,包括:
- HTTP、gRPC、WebSocket和TCP流量的自动负载平衡。
- 细粒度流量行为控制,丰富的路由规则、重试、故障转移。
- 插件化策略层和配置API,支持访问控制、速率限制和配额功能。
- 自动度量、日志和跟踪,包括集群内的所有流量的、集群入口流量和出口流量。
- 基于身份的身份验证和授权来保护群集中的服务之间的通信。
Istio是为可扩展性而设计的,可以满足不同的部署需求。
Istio的核心功能
Istio在服务网格中统一提供了许多关键功能:
- 流量管理
Istio进行简单规则配置和流量路由,就可以让你控制服务之间的流量和API调用。Istio简化了诸如熔断、超时和重试等服务的配置,并可以轻而易举的完成一些重要工作,如A/B测试、金丝雀实施(canary rollouts)和基于百分比的流量分割控制)
有了更好的流量可见性和开箱即用的故障恢复功能,您可以在问题产生之前发现它,无论您面临什么情况,都可以使调用更可靠,网络更健壮。
有关更多详细信息,请参阅“流量管理”指南。
- 策略管理
Istio允许为你的应用配置自定义策略,以便在运行时强制执行规则,例如:
动态限制服务流量的速率
通过拒绝、白名单和黑名单控制,限制对服务的访问
头重写和重定向
Istio还允许您创建自己的策略适配器,用于添加自定义的授权行为。
有关更多详细信息,请参阅策略管理指南。
- 监控管理
Istio有强大的跟踪、监控和日志记录功能,让您深入的了解服务网格的部署。通过Istio的监控功能,您可以真正了解服务性能如何影响上游和下游的情况,而其自定义的仪表板提供了对所有服务性能的可视化管理,并让您了解该服务的性能如何影响其他进程的。
Istio的Mixer组件负责策略控制和遥测收集。它提供了后端抽象和中间件功能,将Istio的其余部分与单个基础架构后端的实现细节隔离开来,并为运维人员提供了对网格和基础架构后端之间的所有交互的细粒度控制。
所有这些特性使您能够更有效地配置、监控和强制服务SLO。当然,最根本的是您可以快速有效地检测和修复问题。
有关详细信息,请参阅可视化指南。
- 平台支持
Istio是与平台无关的架构,设计用于在各种环境中运行,包括跨云平台、本地部署、Kubernetes、Mesos等环境。你可以把Istio部署在Kubernetes身上,也可以部署在使用Consul的Nomad上。Istio目前支持:
Kubernetes上的服务部署
在Consul上注册服务
在单个虚拟机上运行的服务
- 集成和定制
ISTIO的策略实施组件可以被扩展和定制,以及与ACL、日志记录、监控、配额、审计以及更多的现有解决方案进行集成。