1. 功能概述 Envoy启动时,会启动一个进程,并在这个进程中启动很多线程,这样,可以启动很多worker线程,一般worker线程数与核心数相同,每个worker线程处理所有已配置的listener上的请求,管理连接并处理filterchain,非阻塞:同时,在这个进程中会启动一个主线程,它负责启动和停止envoy,也是通过API提供配置管理的线程,同时它收集不同的指标,管理其它线程,也是非阻塞的. 2. 重要数据结构定义 2.1 Filter 过滤器,包括listener filter.n…
在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简单的Bookinfo的微服务应用程序来动手实践一下Istio是如何实现请求超时的管理.看过idou老师前面文章的老司机应该都已经对Bookinfo这个实例驾轻就熟了,当然还存在部分被idou老师的文采刚吸引过来的新同学. 下面先简单的介绍一下Bookinfo这个样例应用整体架构,以便我们更好地理解I…
大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinfo应用程序作为贯穿此任务的示例程序.首先在集群中安装并部署Istio. 1  收集遥测数据 创建一个新的YAML文件,用来保存Istio将自动生成和收集的新度量标准和日志流的配置.如下图所示: 通过命令$ kubectl apply -f new_telemetry.yaml推送刚刚配置的YAML文…
使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以及速率限制的原理. 1 使用场景 在许多场景下都需要对服务进行速率限制. 一种常见的场景是防止来自外部服务的过度调用(如爬虫). 另一种常见的场景是调用某些收费的外部服务,但是提供了免费配额,可以使用速率限制确保只使用免费的配额. 2  环境准备 在 Kubernetes 集群上部署 Istio 部…
功能概述 istio-proxy主要的功能是连接istio的控制面组件和envoy之间的交互,其中check的功能是将envoy收集的attributes信息上报给mixer,在istio中有几十种attributes(官方文档中有Attribute Vocabulary的具体介绍), mixer根据自身的adapter给envoy 反馈.为了避免每次对mixer都进行远程调用,保证运行时的性能,在istio-proxy这里配置了本地缓存. 具体实现 在proxy这里配置了两层缓存,分别是ref…
异常检测 异常检测和踢出异常主机是一个动态检查上游主机是否正常工作,对不健康主机进行移除的过程.异常检测是一种被动健康检查,根据返回状态码来判断是否满足移除条件,最后将主机移除,首先我们来了解下驱逐算法. 从上图中,可以看出来主机异常时首先会检查是不是有主机已经被移除了,如果没有被移除,那么直接移除这个不健康的主机,如果有主机被移除,则会率先检测是否超过移除阈值(maxEjectionPercent),如果超过这个阈值,则不会有任何行为发生,如果没超过这个阈值,那么则会将该主机移除一段时间,这段…
1.概述 Mixer是Istio的核心组件,提供了遥测数据收集的功能,能够实时采集服务的请求状态等信息,以达到监控服务状态目的. 1.1 核心功能 •前置检查(Check):某服务接收并响应外部请求前,先通过Envoy向Mixer(Policy组件)发送Check请求,做一些access检查,同时确认adaptor所需cache字段,供之后Report接口使用: •配额管理(Quota):通过配额管理机制,处理多请求时发生的资源竞争: •遥测数据上报(Report):该服务请求处理结束后,将请求…
大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinfo应用程序作为贯穿此任务的示例程序.首先在集群中安装并部署Istio. 1 收集遥测数据 创建一个新的YAML文件,用来保存Istio将自动生成和收集的新度量标准和日志流的配置.如下图所示: 通过命令$ kubectl apply -f new_telemetry.yaml推送刚刚配置的YAML文件…
使用Prometheus进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,为网格中的服务收集遥测数据.Mixer是负责提供策略控制和遥测收集的Istio组件. Istio通过Mixer实现流量监控的基本流程如下图:每个pod内有一个service和proxy,Envoy容器实现proxy功能,对流入和流出pod的流量进行管理.认证和控制.Mixer则主要负责访问控制和遥测信息收集.当某个服务被请求时,首先会请求istio-policy服务,来判定是否具备访问资格,若具备资格则…
使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以及速率限制的原理. 1 使用场景 在许多场景下都需要对服务进行速率限制. 一种常见的场景是防止来自外部服务的过度调用(如爬虫). 另一种常见的场景是调用某些收费的外部服务,但是提供了免费配额,可以使用速率限制确保只使用免费的配额. 2 环境准备 在 Kubernetes 集群上部署 Istio 部署…