「开源资讯」大型微服务系统管理工具,Istio 了解下

我是小傅哥 2020-01-13 16:50:16 ⋅ 785 阅读

前言

Istio 是一个由谷歌、IBM 与 Lyft 共同开发的开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。Istio 项目是一款强大的工具,可帮助 CTO/CIO 们立足企业内部实施整体性安全、政策与合规性要求。



优势

集群规模可视性:在故障状况出现时,运营人员需要利用多种工具以始终关注集群运行状况并分析微服务状态图表。Istio 项目能够监控与应用程序及网络活动相关的数据,利用 Prometheus 与 Grafana 对这部分数据加以渲染,而后将相关指标与日志记录发送至任何收集、聚合与查询系统当中以实现功能扩展。Istio 项目亦利用 Zipkin 追踪分析性能热点并对分布式故障模式加以诊断。


弹性与效率:在开发微服务时,运营人员需要假设网络本身处于不可靠状态。运营人员能够利用重试、负载均衡、流量控制(HTTP/2)以及断路补偿等方式解决由网络可靠性低下所造成的各类常见故障模式。Istio 项目则提供一种统一方法以配置上述功能,使得运营人员能够更为轻松地运作高弹性水平服务网格。



开发人员生产力:Istio 项目能够确保开发人员专注于利用已选择的编程语言构建服务功能,从而极大提升其生产能力。另外,Istio 项目则负责以统一化方式处理弹性与网络挑战。开发人员无需将解决方案的分布式系统问题解决机制引入编写的代码当中。Istio 项目还能够支持 A/B 测试、金丝雀部署以及故障注入等常用功能,旨在进一步提高生产效率。


政策驱动型运营:Istio 项目能够授权具有不同职能的团队以实现独立运作。其将集群运营人员与功能开发人员进行周期性剥离,从而在无需更改代码的前提下提升安全性、监控能力、扩展性与服务拓扑水平。运营人员能够精确控制生产流量中各个子集的路由方式,从而匹配新的服务版本。另外,运营人员还能够在流量中注入故障或者提高延迟水平,用以测试服务见长的弹性 ; 同时设置速率限制以防止服务过载。Istio 项目还可用于强制执行合规性要求,例如在服务之间定义 CL 以确保仅具备授权的服务间可相互通信。


默认安全:分布式计算当中经常存在着大量网络安全问题。Istio 项目允许运营人员利用 TLS 连接以认证并保护各服务之间的所有通信,而不会给开发人员或者运营人员带来由证书管理造成的额外负担。其安全框架与新的 SPIFFE 规范保持一致,事实上谷歌公司一直在内部广泛使用类似的保障性系统。


增量化采用:在设计 Istio 项目时充分考虑到网络内所运行各服务的透明性,允许团队随着时间推移逐步采用 Istio 提供的各项功能。采用方可以先从启用集群范围内可视性起步,并在 Istio 在环境中的表现感到满意后根据实际需要启用其它功能。


官方架构图

可以看到,Istio 就是 Service Mesh 架构的一种实现,服务之间的通信(比如这里的 Service A 访问 Service B)会通过代理(默认是 Envoy)来进行。而且中间的网络协议支持 HTTP/1.1,HTTP/2,gRPC 或者 TCP,可以说覆盖了主流的通信协议。控制中心做了进一步的细分,分成了 Pilot、Mixer 和 Citadel,它们的各自功能如下:

        Pilot:为 Envoy 提供了服务发现,流量管理和智能路由(AB 测试、金丝雀发布等),以及错误处理(超时、重试、熔断)功能。用户通过 Pilot 的 API 管理网络相关的资源对象,Pilot 会根据用户的配置和服务的信息把网络流量管理变成 Envoy 能识别的格式分发到各个 Sidecar 代理中。

        Mixer:为整个集群执行访问控制(哪些用户可以访问哪些服务)和 Policy 管理(Rate Limit,Quota 等),并且收集代理观察到的服务之间的流量统计数据。

        Citadel:为服务之间提供认证和证书管理,可以让服务自动升级成 TLS 协议。

代理会和控制中心通信,一方面可以获取需要的服务之间的信息,另一方面也可以汇报服务调用的 Metrics 数据。


1.4.3 版本具体更新内容

Bug fixes

  • 修复了 Mixer 创建过多 watch,使 kube-apiserver 超载的问题

  • 修复了 Pod 有多个没有暴露端口的容器时的注入问题

  • 修复了正则表达式字段过于严格的验证

  • 修复了正则表达式字段的升级问题

  • 修复了 istioctl 安装的问题,可以正确将日志发送到 stderr

  • 修复了无法为 istioctl 安装指定文件和配置文件的问题

  • 修复了无法为 istioctl install 安装某些对象的问题

  • 修复了防止在 JWT 策略中将某些 JWK 与 EC 密钥一起使用的问题

更新说明:https://istio.io/news/releases/1.4.x/announcing-1.4.3/

总结

1、Istio 的架构在数据中心和集群管理中是比较常见,每个 Agent 分布在各个节点上(可以是服务器、虚拟机、Pod、容器)负责接收指令并执行,以及汇报信息。

2、控制中心负责汇聚整个集群的信息,并提供 API 让用户对集群进行管理。

3、Kubernetes 也是类似的架构,SDN(Software Defined Network) 也是如此。

4、数据中心要管理的节点越来越多,我们需要把任务执行分布到各节点(Agent 负责的功能)。

5、同时也需要对整个集群进行管理和控制(Control Plane 的功能),完全去中心化的架构是无法满足后面这个要求的。

6、Istio 的出现为负责的微服务架构减轻了很多的负担,开发者不用关心服务调用的超时、重试、Rate Limit 的实现,服务之间的安全、授权也自动得到了保证。

7、集群管理员也能够很方便地发布应用(AB 测试和灰度发布),并且能清楚看到整个集群的运行情况。

8、但是这并不表明有了 Istio 就可以高枕无忧了,Istio 只是把原来分散在应用内部的复杂性统一抽象出来放到了统一的地方,并没有让原来的复杂消失不见。

9、因此我们需要维护 Istio 整个集群,而 Istio 的架构比较复杂,尤其是它一般还需要架在 Kubernetes 之上,这两个系统都比较复杂,而且它们的稳定性和性能会影响到整个集群。

总的来说Istio 使用门槛是相对较高的,需要提升整体团队技术能力,在使用前必须做好清晰的规划,衡量它带来的好处是否远大于额外维护它的花费。



全部评论: 0

    我有话说:

    Istio 1.8.3 发布,大型服务系统管理工具

    Istio 1.8.3 已发布,Istio 是一个由谷歌、IBM 与 Lyft 共同开发开源项目,旨在提供一种统一化的服务连接、安全保障、管理与监控方式。具体来说,Istio 是一个开源服务网格

    开源资讯】JWCloud 专业版 v1.0.0 发布,基于 SpringCloud 研发的服务框架

    简介 JavaWeb_Cloud 服务平台是一款基于 SpringCloud 框架研发的分布式微服务框架,主要使用技术栈包括: SpringCloud、Vue、ElementUI

    你的老板逼你上服务了吗?

    “ 这些年软件的设计规模越来越庞大,业务需求也越来越复杂,针对系统的性能、高吞吐率、高稳定性、高扩展等特性提出了更高的要求。   图片来自 Pexels可以说业务需求是软件架构能力的

    「转载」服务分布式架构中,如何实现日志链路跟踪?

    背景 开发排查系统问题用得最多的手段就是查看系统日志,在分布式环境中一般使用ELK来统一收集日志,但是在并发大时使用日志定位问题还是比较麻烦,我们来看下面的图     上图

    Istio 1.8.2 发布,修复了部分 bug 以提升稳定性

    Istio 1.8.2 已发布,Istio 是一个由谷歌、IBM 与 Lyft 共同开发开源项目,旨在提供一种统一化的服务连接、安全保障、管理与监控方式。具体来说,Istio 是一个开源服务网格

    开源资讯】phpMyAdmin 4.9.7 和 5.0.4 发布,可视化 MySQL 管理后台

    phpMyAdmin 4.9.7 和 5.0.4 发布了。phpMyAdmin 是一个非常受欢迎的 web MySQL 数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增

    小型系统如何“服务开发

    提到“服务”,我相信网上各种“服务”的演变案例都会给人一种“因大而分”的前提错觉,这可能会导致许多的“小白”产生没有机会接触“大项目”而对“服务”可望而不可及也。

    工具集001

      1.  Google项目管理工具 Tables   2. 终端 taskwarrior --- TODO List Taskwarrior is

    最全Mac工具

      MacTool Mac 开源免费工具汇总, 只罗列开源好用的。更全列表请参考awesome-mac 必备 Homebrew - 体验通过命令行安装 Mac 软件的工具(大部分是

    WeCube 2.7.1 发布,一站式 IT 架构管理和运维管理工具

    WeCube简介 众银行在分布式架构实践的过程中,发现将银行核心系统构建于分布式架构之上,会遇到一些与传统单体应用不同的痛点(例如,服务器增多,部署难度大;调用链长,全链路跟踪困难; 系统复杂

    架构实战篇:认识一服务架构

    服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持服务

    WeCube 2.7.0 版本发布,一站式架构和运维管理工具

    WeCube简介 众银行在分布式架构实践的过程中,发现将银行核心系统构建于分布式架构之上,会遇到一些与传统单体应用不同的痛点(例如,服务器增多,部署难度大;调用链长,全链路跟踪困难; 系统复杂

    开源资讯」Kooteam 0.9.1 发布,新一代轻量级团队协助系统

    Kooteam 是一款轻量级的在线团队协作工具,提供各类文档工具、在线思维导图、在线流程图、项目管理、任务分发等工具,并接入了企业信,钉钉开放平台,使用便捷高效。

    分享一个标星42.4k 的商城管理后台项目模板

    项目简介 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品

    开源资讯」BookChat v2.4 发布,通用书籍阅读信小程序

    BookChat - 面向程序员的开源书籍和文档阅读学习小程序

    推荐一款前端数据源管理工具 algeb

    ALGEB 简介 这是一个比较抽象的库,一开始可能比较难理解。我写它的初衷,是创建可响应的数据请求管理。在传统数据请求中,我们只是把携带ajax代码的一堆函数放在一起,这样就可以调用接口。但是这种

    开源资讯】cppweb 1.0.2 发布,基于 C++ 开发的 Web 服务器

    cppweb是一个基于C++开发的 WEB 服务器,支持C/C++、Python、Java等多语言混合开发WEB应用。 cppweb同时也是一个跨平台的服务开发框架,通过两个核心组件

    开源文档管理系统 Wizard 1.2.6 发布

    概述 Wizard 是一款开源的文档管理系统,支持 Markdown 文档,Swagger 文档以及表格文档,适应于中小规模的技术团队文档管理,完全免费。Wizard 并不是一款云产品,不提供任何云

    精品推荐:服务架构静态数据通用缓存机制

    在分布式系统中,特别是最近很火的服务架构,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在的关键问题以及探寻通用的解决之道。