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:Mixer功能架构与实践_第1张图片 Istio架构回顾

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

Istio:Mixer功能架构与实践_第2张图片

Mixer在Istio中角色

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

Mixer的功能和设计

没有Mixer的时候

Istio:Mixer功能架构与实践_第3张图片

Mixer的Adapter机制

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

Istio:Mixer功能架构与实践_第4张图片

Mixer完整视图

解耦、中介、运维时配置

Istio:Mixer功能架构与实践_第5张图片

Mixer的处理流程

Istio:Mixer功能架构与实践_第6张图片 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

Istio:Mixer功能架构与实践_第7张图片 Mixer 配置模型1: Handler

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

Istio:Mixer功能架构与实践_第8张图片 Mixer 配置模型2:实例( Instance)

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

Istio:Mixer功能架构与实践_第9张图片 Mixer 配置模型3: 规则( Rule)

Request的属性处理流程

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

Istio:Mixer功能架构与实践_第10张图片 Request的属性处理流程

Mixer Adapters

Istio:Mixer功能架构与实践_第11张图片 Mixer Adapters

Mixer 的 Check Adapter

Istio:Mixer功能架构与实践_第12张图片 Mixer 的 Check Adapter

Mixer的高可用设计

  • 无状态
  • 高可以用
  • 缓存和缓冲
Istio:Mixer功能架构与实践_第13张图片 Mixer的高可用设计

Mixer 的 Batch Report

Istio:Mixer功能架构与实践_第14张图片 Mixer 的 Batch Report

Mixer的典型应用

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

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

Istio:Mixer功能架构与实践_第15张图片 Mixer典型应用1: 华为云应用服务网格

Mixer典型应用2: Google Apigee

Istio:Mixer功能架构与实践_第16张图片 Mixer典型应用2: Google Apigee
  • https://docs.apigee.com/api-platform/istio-adapter/concepts
  • https://istio.io/docs/reference/config/policy-and-telemetry/templates/analytics/

Mixer实践1

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

Istio:Mixer功能架构与实践_第17张图片 实践1 从0开发并运行一个Mixer Adapter: 原理

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

Istio:Mixer功能架构与实践_第18张图片 实践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:效果

Istio:Mixer功能架构与实践_第19张图片 Mixer服务端
Istio:Mixer功能架构与实践_第20张图片 模拟客户端

 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收集自定义的遥测数据:效果

Istio:Mixer功能架构与实践_第21张图片 Instance定义
Istio:Mixer功能架构与实践_第22张图片 Prometheus检索

 

你可能感兴趣的:(Istio-后,Kubernetes,时代)