Istio:Mixer功能架构与实践

目录

大纲

Istio架构回顾&Mixer介绍

Istio 官方四大功能中两个基于Mixer实现(Control、Observe)

Mixer在Istio中角色

Mixer的功能和设计

没有Mixer的时候

Mixer的Adapter机制

Mixer完整视图

Mixer的处理流程

Mixer的配置模型

Mixer 配置模型概述

Mixer 配置模型1: Handler

Mixer 配置模型2:实例( Instance)

Mixer 配置模型3: 规则( Rule)

Request的属性处理流程

Mixer Adapters

Mixer 的 Check Adapter

Mixer的高可用设计

Mixer 的 Batch Report

Mixer的典型应用

Mixer典型应用1: 华为云应用服务网格

Mixer典型应用2: Google Apigee

Mixer实践1

实践1 从0开发并运行一个Mixer Adapter: 原理

实践1 从0开发并运行一个Mixer Adapter:两个角色

实践1 从0开发并运行一个Mixer Adapter: 步骤

实践1 从0开发并运行一个Mixer Adapter:效果

 Mixer实践2

 实践2 通过Mixer收集自定义的遥测数据:目标

实践2 通过Mixer收集自定义的遥测数据:步骤

实践2 通过Mixer收集自定义的遥测数据:效果


大纲

Istio架构回顾&Mixer介绍
Mixer的功能和设计
Mixer的配置模型
Mixer的典型应用
Mixer实践1和2

Istio架构回顾&Mixer介绍

  • Pilot -- 配置管理,在Istio中相当于一个大管家,还有服务发现--管理Proxy和Service运行时的配置
  • Mixer-- 守护神,负责管理相对静态的配置
  • Adapter是一个模板,Handler是一个实现
Istio架构回顾

Istio 官方四大功能中两个基于Mixer实现(Control、Observe)

Mixer在Istio中角色

  • 功能上:负责策略控制和遥测收集
  • 架构上:提供插件模型,可以扩展和定制

Mixer的功能和设计

没有Mixer的时候

Mixer的Adapter机制

  • Mixer 处理不同基础设施后端的灵活性是通过使用通用插件模型实现的,这种插件称为Adapter。
  • Mixer通过它们与不同的基础设施后端连接,这些后端可提供核心功能,提供日志、监控、配额、 ACL 检查等

Mixer完整视图

解耦、中介、运维时配置

Mixer的处理流程

Mixer的处理流程
  1. Envoy生成属性上报Mixer
  2. Mixer 调用对应后端处理属性

参考:https://istio.io/docs/reference/config/policy-and-telemetry/attribute-vocabulary/

Mixer的配置模型

Mixer 配置模型概述

  • Handler: 创建 Handler,即配置Mixer适配器
  • Instance: 从 Istio 属性中生成 instance。
  • Rule: 配置一组规则,这些规则描述了何时调用特定适配器及哪些实例。

Mixer 配置模型1: Handler

Mixer 配置模型1: Handler

Mixer 配置模型2:实例( Instance)

Mixer 配置模型2:实例( Instance)

Mixer 配置模型3: 规则( Rule)

Mixer 配置模型3: 规则( Rule)

Request的属性处理流程

接收属性
补充属性,
处理属性

Request的属性处理流程

Mixer Adapters

Mixer Adapters

Mixer 的 Check Adapter

Mixer 的 Check Adapter

Mixer的高可用设计

  • 无状态
  • 高可以用
  • 缓存和缓冲
Mixer的高可用设计

Mixer 的 Batch Report

Mixer 的 Batch Report

Mixer的典型应用

Mixer典型应用1: 华为云应用服务网格

https://console.huaweicloud.com/Istio/

Mixer典型应用1: 华为云应用服务网格

Mixer典型应用2: Google Apigee

Mixer典型应用2: Google Apigee

Mixer实践1

实践1 从0开发并运行一个Mixer Adapter: 原理

实践1 从0开发并运行一个Mixer Adapter: 原理

实践1 从0开发并运行一个Mixer Adapter:两个角色

实践1 从0开发并运行一个Mixer Adapter:两个角色

实践1 从0开发并运行一个Mixer Adapter: 步骤

1.创建独立的Adapter目录,并开发Adapter的代码开发Adapter代码
cd $MIXER_REPO/adapter && mkdir mysampleadapter && cd mysampleadapter
#创建mysampleadapter .go文件定义处理逻辑

2. //配置config.proto,描述配置的定义。 #创建config.proto文件,描述adapter的配置参数
mkdir config

3. 根据proto生成go的配置,并在adapter代码中使用
go generate ./...
go build ./...

4.在Mixer中注册这个新的Adapter。 # 在inventory.yaml 中注册adapter,
mysampleadapter: "istio.io/istio/mixer/adapter/mysampleadapter"
go generate $MIXER_REPO/adapter/doc.go

5. 配置并使用新创建的adapter。 #在testdata目录下创建使用该adapter的配置,即handler, instance, rulle。
mkdir $MIXER_REPO/adapter/mysampleadapter/testdata
#确认两个文件attributes.yaml和mysampleadapter.yaml

6. 启动mixer 服务端
pushd $ISTIO/istio && make mixs
$GOPATH/out/linux_amd64/release/mixs server --configStoreURL=fs://$(pwd)/mixer/adapter/mysampleadapter/testdata

7.启动一个客户端,模拟上报数据
pushd $ISTIO/istio && make mixc
$GOPATH/out/linux_amd64/release/mixc report -s destination.service="svc.cluster.local" -t request.time="2019-01-10T20:00:00Z"

8.查看结果输出
tail $ISTIO/istio/out.txt

实践1 从0开发并运行一个Mixer Adapter:效果

Mixer服务端
模拟客户端

 Mixer实践2

 实践2 通过Mixer收集自定义的遥测数据:目标

  • 编写自定义的Metric模板
  • 在Istio中创建自定义Metric、 Prometheus Handler和Rule
  • 认识Prometheus Adapter
  • 实践Prometheus 的主要能力

实践2 通过Mixer收集自定义的遥测数据:步骤

--1. 创建配置,包括prometheus的handler、 metric和rule
kubectl apply -f double-request.yaml


--2. 查看创建的对象
kubectl get metrics.config.istio.io -nistio-system
kubectl get rules.config.istio.io -nistio-system
kubectl get prometheus.config.istio.io -nistio-system


-- 3. 发起对服务的访问,生成访问metric数据


--4.通过Prometheus查看metric数据
--4.1 查看doublereques的metric

http://49.4.84.29:9090/graph?g0.range_input=1h&g0.expr=istio_double_request_count&g0.t
ab=1

--4.2 通过prometheus检索特定目标的metric
istio_double_request_count{destination="details-v1"}

实践2 通过Mixer收集自定义的遥测数据:效果

Instance定义
Prometheus检索
发布了393 篇原创文章 · 获赞 1094 · 访问量 165万+

猜你喜欢

转载自blog.csdn.net/fly910905/article/details/104040395