13 Istio 流量管理原理与协议扩展 赵化冰实现的七层通信相关功能抽象 出来,使用一个专用层次来实现,Service Mesh 对应用透明,因此应用 可以无需关注分布式架构带来的通信相关问题,而专注于其业务价值。 流量控制:服务发现、请求路由、负载均衡、灰度发布、错误重试、 断路器、故障注入 可观察性:遥测数据、调用跟踪、服务拓扑 通信安全: 服务身份认证、访问鉴权、通信加密 Proxy Application Layer Service 1 Istio Server LDS RDS CDS EDS Envoy 配置模型的主要概念: • Downstream:连接到 Envoy 的下游 Host,发送请求并接收响应。 • Upstream: 上游 Host 接收来自 Envoy 的连接和请求,并返回响应。 • Listener:监听器是命名网地址(可以是TCP socket 或者 Unix domain socket),可以被 下游客户端连接。在 Envoy Istio 协议支持现状 • 七层服务治理 – 服务发现(基于服务的逻辑名称) – LB、基于应用协议的错误码进行 Retries 和 Circuit Breaker – 基于七层协议 Meta data 的路由(RPC协议中的调用 服务名、方法名等) – Fault Injection(RPC 协议层的错误码) – RPC 调用的 Metrics(调用次数,调用失败率等) – Tracing • 四层服务治理0 码力 | 20 页 | 11.31 MB | 6 月前3
Envoy原理介绍及线上问题踩坑。 • ORIGINAL_DST恢复原始目标后,根据virtualInbound配置的监听过滤器找到对应的本地服务器地址。并发起localhost的请求。 • 请求进入本地服务器内进行处理并返回响应。 Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 8 Envoy原理及总体架构-流量拦截 prerouting 位置 • encodeHeaders发送请求前编码头部 • encodeData发送请求前编码数据 • encodeTrailers消息发送前编码处理 • 过滤器中可以获取连接对象并直接发送响应数据,同时可以返回StopIteration结束过滤器迭代。 • 实际使用过滤器根据Envoy静态及动态配置注册,并可以在运行中通过EnvoyFilter动态添加或删除。 Copyright © 进行L7层过滤器解码、通过Router关联关系找到下游并编码发送 HTTP请求(POD1处理类似)。 • 以上所提到的Envoy L4层网络读取及数据发送为全异步读写模式,采用网络事件触发机制完成响应数据的接收和发送。 • 由于Router部分请求处理方向需要进行更多路由选择计算及负载均衡计算工作,因此通常outbound方向处理较复杂,CPU消耗比inbound更高。 Copyright ©0 码力 | 30 页 | 2.67 MB | 1 年前3
全栈服务网格 - Aeraki 助你在
Istio 服务网格中管理任何七层流量#IstioCon MetaProtocol: 响应处理路径 处理流程: 1. Decoder 解析 Upstream 的响应,填充 Metadata 2. Router 根据 connection/stream 对应关系找到响应的 Downstream 连接 3. L7 filter 从 Metadata 获取所需的数据,进行响应方向的业务处理 4. L7 filter 将需要修改的数据放入 Encoder 根据 Mutation 结构封包 6. 将响应发送到 Downstream L7 filter 共享数据结构: ● Metadata: decode 时填充的 key:value 键值对,用于 l7 filter 的处理逻辑中 ● Mutation:L7 filter 填充的 key:value 键值对,用于 encode 时修改响应数据包 #IstioCon MetaProtocol:流量管理示例(Canary0 码力 | 29 页 | 2.11 MB | 1 年前3
Istio 在 Free Wheel 微服务中的实践Mixer提供了一种非常灵活的模型,让Handler可以在流量中动态的选 择一部分来引入额外的机制(如权限控制、限流等),在应用运维中 这是很重要的能力,只要是不修改请求、响应的功能都可以采用扩展 Mixer来实现 • Sidecar里接入额外的反向代理其实提供了一个修改请求、响应的接口 ,如认证之后需要将用户信息通过header传给下游服务 扩展Mixer接入授权 • 这里实现的例子mymock会完全拒绝所有 被匹配到的流量,右图是mymock • Mixer会直接影响整个Mesh的稳定性,因此替换时要做到尽可能稳妥 实践总结 • k8s/etcd 配置管理存在性能瓶颈: • 单一 resource 应控制在k级别,达到 10k 量级后响应可能会出现超 时导致配置读写状态异常,进而影响整个系统稳定性 实践总结 • Istio配置管理有局限性: • Endpoint的配置管理有防抖动处理,即使集群中的部署变化再快, 也不会阻塞Istio0 码力 | 31 页 | 4.21 MB | 1 年前3
Istio控制平面组件原理解析ü通过Template润色数据 ü使用Go的协程异步Flush到Adapter üAdapter展示数据 ü响应envoy数据处理完成问题讨论 Report流程回顾 üEnvoy异步批量发送数据给Mixer üMixer使用协程池处理Adapter ü处理完成所有Adapter才响应Envoy 疑问 协程池堵塞是否会影响envoy性能?Mixer协程池 ü 初始化一定量worker(协程) 初始化一定量worker(协程) ü 监听同一队列 ü 任务放入队列 ü Worker处理任务Jaeger架构设计Mixer阻塞对envoy的影响 压测环境: ü 模拟接口延迟响应 ü 使用hey压力工具 ü 相同压力 ü 先用hey进行预热 ü 从10份数据中取中位数解决方案 ü方案一 • 业务性能和日志之间的选择,出现阻塞,丢弃日志保性能 ü方案二 • 使用主题订阅模式,减少阻塞问题Istio_Ca——安全证书管理(ICA)0 码力 | 30 页 | 9.28 MB | 6 月前3
探讨和实践基于Istio的微服务治理事件监控传统的监控面临容器化和微服务化的困境 测试运维沟通鸿沟,如何提升沟通效率 监控工具繁杂,如何快速找到合适工具进行问题定位 偶发性问题场景复杂,如何保留发生现场 如何在错综复杂的未服用调用链路中找到错误源头监控场景转换 帮助运维人员快速的定位问题,解决问题 基于容器化和微服务化的监 控场景 • 应用规模巨大 • 服务之间依赖呈现为网状 • 除了日志、性能指标,需要 基于请求的依赖追踪监控 • 体现系统性能趋势 分布式追踪 • 和请求相关 • HTTP • SQL 日志系统 • 代码逻辑处理事件 • 异常、debug信息容器化和微服务下的监控需求 微观下的监控需求 快速错误追踪 可快速排查在性能测试场景下的 慢方法、异常调用以及异常报文 等信息 单次链路追踪 可细粒度排查应用单次链路调用 的包括日志、网络数据在内的所 有信息。 宏观下的监控需求 链路总体展示0 码力 | 29 页 | 8.37 MB | 6 月前3
Istio 与 Knative 踩坑实录Istio 的价值和问题13/25 灰度发布 Istio 的价值和问题14/25 性能损耗 Istio 的价值和问题 每 pod 多占用内存 20 MB -8 毫秒 测试 API 平均响应时 间变化量 吞吐量提升 5 %15/25 Pilot、Mixer 性能瓶颈 Istio 的价值和问题16/25 总结 Istio 的价值和问题 • 已经可以稳定用在生产环境 • 工程架构收益0 码力 | 26 页 | 1.35 MB | 6 月前3
在网格的边缘试探:企业 Istio 试水指南�������� ����� ����制定目标 • 集群环境申请:版本、开关、资源等。 • 功能性需求:本次试用中Istio需要提供的功能,再次强调:No Freestyle • 非功能需求:并发、成功率、响应时间等服务质量参数。 • 故障处理需求:故障预案。 • 影响范围分析。 • 选定测试版本:研读开放Issue以及Release Notes。测试方案部署 • Istio部署 • 复查集群环境 •0 码力 | 19 页 | 11.41 MB | 6 月前3
共 8 条
- 1













