Istio控制平面组件原理解析
Istio控制平面组件原理解析 朱经惠 2018.08.25 Service Mesh Meetup #3 深圳站关于我 • 朱经惠,ETC车宝平台工程师。 • 喜欢开源,个人开源项目”Jaeger PHP Client”。 • 喜欢研究源码,对NSQ,Jaeger,Istio(控制平面)等go语言开源项目进行 过研究。 • 除了代码还喜欢爬山和第二天睡醒后全身酸疼的感觉。目录Pil uv1版本和v2版本之间的区别 u建立缓存配置 u触发配置生效方式v1版本和v2版本之间的区别 V1 HTTP1 REST JSON/YAML 弱类型 轮询 SDS/CDS/RDS/LDS 奠定控制平面基础 V2 HTTP2 GRPC Proto3 强类型 Push SDS/CDS/RDS/LDS/HDS/ADS/KDS 和Google强强联手 官方博客:The universal secretName: istio.default证书过期 üroot-cert.pem 实际有效期1年,没有找到更新方式,手动更新? ücert-chain.pem 和 key.pem 实际有效期90天,程序控制有效期45天 ü证书过期会被重新生成并挂载到/etc/certs ü触发envoy热启动ü方案一: • 把重新生成证书时间改为凌晨http://www.servicemesher.com0 码力 | 30 页 | 9.28 MB | 5 月前3Envoy原理介绍及线上问题踩坑
Iptables 规则 ./etc/istio/proxy/SDS 证书 获取 配置 文件 可以修改全局注入参数 作用于所有目标空间的 pod 证书更新 Envoy启动流程 Envoy控制面流量 Envoy数据面流量 ./etc/istio/proxy/XDS SDS xDS CSR Prometheus configmaps Copyright © Huawei Technologies GID=1337创建Envoy启动命令行与配置文件 • 可以通过自定义deployment内istio注解sidecar.istio.io/inject: “false”跳过自动注入过程,或修改部分启动参数。 • 2. 控制面通信 • Pilot-agent进程本身创建UDS接收Envoy连接,用于证书更新下发。并且与istiod建立证书更新通道。 • Envoy 通过pilot-agent转发机制与istiod建 26 华为ASM产品介绍(1) • 无需安装,一键启用,无侵入实现应用治理 Istio 基础设施 容器编排& 调度 Service Mesh 云原生应 用 一键启用 网络连接、安全、控制、监控 CCE(云容器引擎) APP APP APP ECS(弹性云主 机) BMS(裸金属 服务器) • 华为云CCE容器引擎已深度集成Istio 一键启用,与容器引擎无缝整合 内置金丝雀、A/B测试等灰度发布流程0 码力 | 30 页 | 2.67 MB | 1 年前313 Istio 流量管理原理与协议扩展 赵化冰
可以无需关注分布式架构带来的通信相关问题,而专注于其业务价值。 流量控制:服务发现、请求路由、负载均衡、灰度发布、错误重试、 断路器、故障注入 可观察性:遥测数据、调用跟踪、服务拓扑 通信安全: 服务身份认证、访问鉴权、通信加密 Proxy Application Layer Service 1 Istio 流量管理 – 概览 • 控制面下发流量规则: Pilot • 数据面标准协议:xDS • 集群内Pod流量出入: Gateway(可选,在一个集中点对外部访问进行控制) • Service discovery • Load balancing • Time out • Retries • Circuit breaker • Routing • Auth • Telemetry collecting 外部流量出口 外部流量入口 Pilot 2 Istio 流量管理 – 控制面 两类数据: q 服务数据(Mesh com/istio-ecosystem/consul-mcp) v 通过CRD定义的服务数据 q 自定义流量规则(如何将请求路由到这些服务?) v 通过CRD定义的流量规则 服务数据 流量规则 3 Istio 流量管理 – 控制面 – 服务发现 • K8s Service : Pilot 直接支持 • ServiceEntry: 手动添加 Service 到 Pilot 内部注册表中 • WorkloadEntry:单独添加0 码力 | 20 页 | 11.31 MB | 5 月前3全栈服务网格 - Aeraki 助你在 Istio 服务网格中管理任何七层流量
Aeraki Dubbo Plugin 实现了控制面的管理,支持 下述能力: ○ 流量管理: ■ 七层(请求级别)负载均衡 ■ 地域感知负载均衡 ■ 熔断 ■ 基于版本的路由 ■ 基于 Method 的路由 ■ 基于 Header 的路由 ○ 可观测性:七层(请求级别)Metrics ○ 安全:基于 Interface/Method 的服务访问 控制 #IstioCon Aeraki 地域感知负载均衡(Dubbo) 场景:在开通地域感知负载均衡功能时,consumer 的请求将缺省被发送到本区域 的provider实例,当本地域无可用的provider实例,请求会被分发到其他区域。 实现原理:控制面根据 consumer 和 provider 的地域属性为provider实例配置 不同的LB优先级,优先级的判断顺序如下: 1. 最高:相同 region,相同zone 2. 其次:相同 region,不同zone 现阶段协议扩展方案面临的挑战: ● 在 Mesh 中支持一个七层协议的工作量较大: ○ 数据面:编写一个 Envoy filter 插件——流量管理(RDS、 负载均衡、熔断、流量镜像、故障注入等)、编解码 ○ 控制面:编写一个 Aeraki 插件——运维/流量管理策略 ● 非 HTTP 协议缺少 RDS 支持: ○ Listener 内嵌路由 ○ 修改内嵌路由后,Envoy 会重建 listener,导致业务出现短0 码力 | 29 页 | 2.11 MB | 1 年前3IstioMeetupChina 服务网格热升级技术分享
need Hot-Upgrade for ServiceMesh Data-Plane • 只替换/重启Sidecar • 替换/重启过程中进/出不会出现请求失败,连接失败 • 易于运维,可以控制升级策略 理想的Sidecar升级 4 • 为什么需要服务网格数据面热升级 • 实现热升级 • 实践热升级 目录 Catalog 5 • Envoy热重启 • 以Epoch + 1的方式启动新实例,触发热重启 启动两个Sidecar,以进行Envoy热重启的排水流程两个实例并存的阶段 • 能够对整个热升级流程中的镜像替换进行控制 实现热升级 Implement Hot-Upgrade 7 • Sidecar生命周期管理能力 • 启动两个Sidecar,以进行Envoy热重启的排水流程两个实例并存的阶段 • 能够对整个热升级流程中的镜像替换进行控制 • 更强大的生命周期管理组件 • 对需要热升级的Pod注入两个Container,Sidecar 现在,让我们打开阿里云服务网格进行一次热升级吧! Now, Let try it on Alibaba cloud ServiceMesh 12 更多 More 更多特性 控制台一键启动、暂停热升级 控制台设置热升级策略,单批次实例比例 可视化观察热升级状态 13 更多 More 谢谢! Thanks! 140 码力 | 14 页 | 2.25 MB | 1 年前3Istio + MOSN 在 Dubbo 场景下的探索之路
Server 的资源;8/23 MCP mcpserver demo: https://github.com/champly/mcpserver9/23 Pilot Pilot 负责网格中的流量管理以及控制面和数据面之间的配置下发,在 Istio1.5 之后合并了 Galley、Citadel、Sidecar-Inject 和 Pilot 成为 Istiod。 功能 • 根据不同的平台(Kubernetes、Console) 根据变化的资源类型判断需要下发的 xDS资源 • 构建 xDS 资源,下发到连接的 Sidecar10/23 xDS Sidecar 通过动态获取服务信息,对服务的发现 API 被称为 xDS。 • 协议部分(ADS、控制发送的顺序以及返回的确认数据) • 数据部分(CDS、EDS、LDS、RDS、SDS)11/23 资源变化 资源名称 CDS EDS LDS RDS Virtualservices ✔ Gateways : CDS 和 EDS13/23 MOSN-listener14/23 MOSN-routers15/23 MOSN-cluster16/23 Dubbo 场景下的改造 /03 从数据面、控制面两个方面来介绍如何改造17/23 改造方案1 Istio+Envoy • 通过创建 EnvoyFilter 资源来给 xDS 资源打 patch • Envoy 解析 Dubbo 协议中的0 码力 | 25 页 | 3.71 MB | 5 月前3Istio 在 Free Wheel 微服务中的实践
• Quota: 决策容量是否足够 Mixer or Sidecar,这是一个问题 • Mixer提供了一种非常灵活的模型,让Handler可以在流量中动态的选 择一部分来引入额外的机制(如权限控制、限流等),在应用运维中 这是很重要的能力,只要是不修改请求、响应的功能都可以采用扩展 Mixer来实现 • Sidecar里接入额外的反向代理其实提供了一个修改请求、响应的接口 ,如认证之后需 注册Handler 扩展Mixer接入授权 • Mixer会直接影响整个Mesh的稳定性,因此替换时要做到尽可能稳妥 实践总结 • k8s/etcd 配置管理存在性能瓶颈: • 单一 resource 应控制在k级别,达到 10k 量级后响应可能会出现超 时导致配置读写状态异常,进而影响整个系统稳定性 实践总结 • Istio配置管理有局限性: • Endpoint的配置管理有防抖动处理,即使集群中的部署变化再快, 未来工作 • Service Contract: 封装Istio以及平台层的其他配置的复杂度,抽象出 一个安全、高效的应用运维体系 • Chaos Testing:解决复杂的微服务系统的持续运营和风险控制问题0 码力 | 31 页 | 4.21 MB | 1 年前3在网格的边缘试探:企业 Istio 试水指南
增强负载能力 • 改善交付流程 • 客户充满 Love • 开发需求保持 PeaceIstio能做什么? • 几乎全部功能都无需侵入 • 监控服务质量 • 控制服务间的访问路由 • 跟踪服务链路 • 应对服务故障 • 在服务间通信之间进行加密 • 访问控制和频率限制 • …Istio目前的突出问题 • API稳定性问题:流量管理也仅仅是v1alpha3,用alpha特性发布 1.0的情况似乎比较罕见。0 码力 | 19 页 | 11.41 MB | 5 月前3百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu
ent, fallback会使用原有治理策略。 #IstioCon 架构介绍 Ø Mesh控制中心: ü 运维中心:基于Mesh的统一运维操作中心。 ü 配置中心:维护模块上下游拓扑,管理路由配 置、通信策略。 ü 上线中心:管理Mesh组件版本,统一上线入口。 l 核心组件 Ø 控制面板:Istio-Pilot组件,路由管理、通信 策略等功能 Ø 数据面板:envoy组件,流量转发、负载均衡0 码力 | 9 页 | 2.20 MB | 1 年前3SolarMesh 基于Istio构建的流量监管平台
•Grafana,为SolarMesh提供流量的实时仪表盘 •SLO,为SolarMesh提供服务质量检测的能力 SolarMesh的特点 Copyright © 2021 Cloud To Go 控制端与业务端隔离 控制面与数据面隔离 solarmesh坏了,istio还在,业务不会中断 istiod坏了,envoy还在,业务也不会中断 Copyright © 2021 Cloud To Go 无需重启0 码力 | 20 页 | 1.29 MB | 1 年前3
共 12 条
- 1
- 2