13 Istio 流量管理原理与协议扩展 赵化冰
Istio 流量管理原理与协议扩展 赵化冰 赵化冰 腾讯云 服务网格团队 https://zhaohuabing.com Service Mesh Service Mesh Layer 处理服务间通信(主要是七层通信)的云原生基础设施层: Service Mesh 将各个服务中原来使用 SDK 实现的七层通信相关功能抽象 出来,使用一个专用层次来实现,Service Mesh 对应用透明,因此应用 断路器、故障注入 可观察性:遥测数据、调用跟踪、服务拓扑 通信安全: 服务身份认证、访问鉴权、通信加密 Proxy Application Layer Service 1 Istio 流量管理 – 概览 • 控制面下发流量规则: Pilot • 数据面标准协议:xDS • 集群内Pod流量出入: Sidecar Proxy • 集群外部流量入口:Ingress Gateway • 集群外部流量出口:Egress Retries • Circuit breaker • Routing • Auth • Telemetry collecting 外部流量出口 外部流量入口 Pilot 2 Istio 流量管理 – 控制面 两类数据: q 服务数据(Mesh 中有哪些服务?缺省路由) v Service Registry § Kubernetes:原生支持 § Consul、Eureka 等其他服务注册表:MCP0 码力 | 20 页 | 11.31 MB | 5 月前3全栈服务网格 - Aeraki 助你在 Istio 服务网格中管理任何七层流量
全栈服务网格 - Aeraki 助你在 Istio 服务网格中管理任何七层流量 赵化冰@腾讯云 #IstioCon Huabing Zhao Software Engineer @ Tencent Cloud https://zhaohuabing.com @zhaohuabing @zhaohuabing @zhaohuabing @zhaohuabing #IstioCon #IstioCon Agenda ❏ Service Mesh 中的七层流量管理能力 ❏ 几种扩展 Istio 流量管理能力的方法 ❏ Aeraki - 在 Isito 服务网格中管理所有七层流量 ❏ Demo - Dubbo Traffic Management ❏ MetaProtocol - Service Mesh 通用七层协议框架 #IstioCon Protocols in a Typical Management, Security, Observability) #IstioCon What Do We Expect From a Service Mesh? 为了将基础设施的运维管理从应用代码中剥离,我们需要七层的流量管 理能力: ● Routing based on layer-7 header ○ Load balancing at requet level ○ HTTP0 码力 | 29 页 | 2.11 MB | 1 年前3Istio 在 Free Wheel 微服务中的实践
FreeWheel 是一家为客户提供数字视频广告管理技术和服务的公司。其业务端产 品需要对接客户,提供视频广告投放优化界面,类似于 Web ERP,是一个典型 的三层架构。 微服务之痛 • 两年来,我们将若干复杂的Rails单体应用拆分、迁移到微服务架构, 逻辑用Golang重写,引入了Kubernetes。随着模块越来越多,复杂 的通信带来矛盾日渐突出:流量管理、监控… 最初的尝试:Gateway 理,成为了微服务中的瓶颈,模 块流量会互相影响 • 大锅饭带来了复杂的配置管理, 渐渐难以为继 • Istio的架构和基本原理 • FreeWheel的Istio实践 • 未来工作 • FreeWheel的痛点 Istio架构 • Istio Proxy: 劫持Pod的所有通信, 是Mesh的基础 • Pilot: 为Proxy提供动态配置管理 • Citadel: 自动维护mTLS密钥 • Mixer: Istio从架构上可以分为4个板块: • Istio Proxy: Mesh的基础 • 网络安全:兼容Spiffe标准实现 • 配置管理:为C++实现的Proxy接 入k8s的动态配置管理 • Attribute Machine: 授权,Quota ,Tracing,监控的基础 Istio管理下的微服务 • 右图是部署mock1.v1 Pod之后发生的事 情: • Sidecar Injection:0 码力 | 31 页 | 4.21 MB | 1 年前3Envoy原理介绍及线上问题踩坑
Envoy启动配置及xDS listener router upstream pool Envoy cluster istiod pilot-agent LDS RDS CDS EDS tls证书 管理 SDS CSR创建证书 stat tracing 支持采集或 主动上报 监控系统 过滤器 过滤器 连接 连接 xDS 描述 模式 请求路径 LDS 监听器配置 POST /envoy 连接。 • 之后对于此连接的所有处理都在此线程进行,包括下游数据集解码,路由选择、上游数据编 码发送等。 • 同时此工作线程还要处理定期观测信息与主线程同步(通过异步加回调)、线程内配置及集 群管理器状态更新等工作。 • 请求完成后延迟释放内存,解决本次事件处理中回调所引用对象可以被安全访问,并在下次 事件处理中安全删除。 admin连接 数据面连接 主 机 健 康 检 查 看 门 狗 当收到节点变化EDS消息时,需要通知到工作线程内新上线、下线主机。 • 4. Envoy使用前面提到的TLS方式实现集群状态更新,集群管理器保存一个TLS slot ,类型为ThreadLocalClusterManagerImpl。 当节点变化、DNS解析更新、健康状态变化时,将调用集群管理器的postThreadLocalClusterUpdate方法 • 5. 此方法将延迟调用所有线程内ThreadLo0 码力 | 30 页 | 2.67 MB | 1 年前3百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu
部分模块上下游超时配置不合理,超时倒挂,集中管理调整成本比较高。 Ø 多数模块对单点异常,慢节点等异常缺乏容忍能力,推动每个模块独立修复,成本高,上线周期长。 Ø 因重试导致雪崩,底层RPC框架需要重复建设来定制动态熔断能力。 Ø 升级一级服务建设中,发现很多模块单点、多点故障不能容忍,能否低成本解决? Ø 比如常用运维降级、止损能力各个产品线重复建设,方案差异大,OP期望运维能力在不同产品线之间能够通用化, 集中化管理,甚至做到自动决策 集中化管理,甚至做到自动决策 Ø 精细故障能力(异常query、注入延迟等)期望能够标准化、低成本跨产品线复制 Ø 百度APP架构缺少上下游模块视图和流量视图,黄金指标不足,导致容量管理压测效率低、混沌工程实施成 本高、故障定位成本高。 #IstioCon 目标 l 服务治理策略平台化 联合公司内部,通过合作共建方式实现完整的Service Mesh架构,提升架构策略灵活性,缩 减服务治理迭代周期,降低服务治理研发成本。 自身稳定性,降级(兜底)、隔离、监控多种方式保证。 ①bns, 百度内部基础设施层,服务发现。 ②bns-agent,服务发现接入层。 ㊟ 内核劫持:Loopback方案 Ø loopback地址的管理和分配。 Ø 需要打通业务和loopback之间的映射管 理。 RPC劫持:可扩展方案 Ø envoy启动后注册port到bns-agent。 Ø rpc框架查询bns-agent IP与治理策略数据。0 码力 | 9 页 | 2.20 MB | 1 年前3IstioMeetupChina 服务网格热升级技术分享
实现热升级 Implement Hot-Upgrade 6 • Sidecar生命周期管理能力 • 启动两个Sidecar,以进行Envoy热重启的排水流程两个实例并存的阶段 • 能够对整个热升级流程中的镜像替换进行控制 实现热升级 Implement Hot-Upgrade 7 • Sidecar生命周期管理能力 • 启动两个Sidecar,以进行Envoy热重启的排水流程两个实例并存的阶段 阶段 • 能够对整个热升级流程中的镜像替换进行控制 • 更强大的生命周期管理组件 • 对需要热升级的Pod注入两个Container,Sidecar & Empty • 支持对热升级过程中Sidecar Container生命周期进行管理 实现热升级 Implement Hot-Upgrade 8 • Envoy热重启参数的协商 • PilotAgent需要使用正确的Epoch参数启动Envoy,才能触发热重启0 码力 | 14 页 | 2.25 MB | 1 年前3Kubernetes容器应用基于Istio的灰度发布实践
熔断限流 • 负载均衡 • 服务发现 • 扩缩容 • 运维 • 部署 Kubernetes Istio Istio治理的不只是微服务,只要有访问的服务,都可以被治理。 Istio关键能力 流量管理 负载均衡 动态路由 灰度发布 可观察性 调用链 访问日志 监控 策略执行 限流 ACL 故障注入 服务身份和安全 认证 鉴权 平台支持 Kubernetes CloudFoundry "unknown" response_code: response.code | 200 Istio & Kubernetes: 总结 对于云原生应用,采用Kubernetes构建微服务部署和集群管理能力,采用 Istio构建服务治理能力,将逐渐成为应用微服务转型的标准配置。 Agenda • Istio & Kubernetes • Istio & Kubernetes上的灰度发布 灰度发布:蓝绿 "/catalog1" } }, 一个典型的VirtualService Istio在华为云:Kubernetes全栈容器服务 应用运维管理 丰富可定制的容器应用立体化运维 容器镜像服务 容器镜像一站式构建、存储与交付 应用编排服务 应用云上自动化编排与设施管理 云容器实例 基于K8S的Serverless容器服务 云容器引擎 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service0 码力 | 38 页 | 14.93 MB | 1 年前3Kubernetes容器应用基于Istio的灰度发布实践
• 负载均衡 • 服务发现 • 扩缩容 • 运维 • 部署 Kubernetes Istio9 Istio治理的不只是微服务,只要有访问的服务,都可以被治理。10 Istio关键能力 流量管理 负载均衡 动态路由 灰度发布 可观察性 调用链 访问日志 监控 策略执行 限流 ACL 故障注入 服务身份和安全 认证 鉴权 平台支持 Kubernetes CloudFoundry "unknown" response_code: response.code | 20015 Istio & Kubernetes: 总结 对于云原生应用,采用Kubernetes构建微服务部署和集群管理能力,采用 Istio构建服务治理能力,将逐渐成为应用微服务转型的标准配置。16 Agenda • Istio & Kubernetes • Istio & Kubernetes上的灰度发布17 "/catalog1" } }, 一个典型的VirtualService27 Istio在华为云:Kubernetes全栈容器服务 应用运维管理 丰富可定制的容器应用立体化运维 容器镜像服务 容器镜像一站式构建、存储与交付 应用编排服务 应用云上自动化编排与设施管理 云容器实例 基于K8S的Serverless容器服务 云容器引擎 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service0 码力 | 34 页 | 2.64 MB | 5 月前3Istio控制平面组件原理解析
Client”。 • 喜欢研究源码,对NSQ,Jaeger,Istio(控制平面)等go语言开源项目进行 过研究。 • 除了代码还喜欢爬山和第二天睡醒后全身酸疼的感觉。目录Pilot-Agent——管理生命周期(PA) u启动envoy u热重启envoy u监控envoy u优雅关闭envoy启动envoy ü监听/etc/certs目录 ü生成envoy静态配置文件envoy-rev0.json • Pilot-Agent只是负责启动S,其他步骤由envoy完成。 • 1. 启动另外一个S进程(Secondary process) • 2. S通知P(Primary process)关闭其管理的端口,由S接管 • 3. S加载配置,开始绑定listen sockets,在这期间使用UDS从P获取合适的listen sockets • 4. S初始化成功,通知P停止监听新的链接并优雅关闭未完成的工作 先用hey进行预热 ü 从10份数据中取中位数解决方案 ü方案一 • 业务性能和日志之间的选择,出现阻塞,丢弃日志保性能 ü方案二 • 使用主题订阅模式,减少阻塞问题Istio_Ca——安全证书管理(ICA) u证书生成 u证书挂载 u证书过期证书生成 ü生成root-cert.pem ü生成cert-chain.pem ü生成key.pem证书挂载 üICA以Name为istio.d0 码力 | 30 页 | 9.28 MB | 5 月前3Extending service mesh capabilities using a streamlined way based on WASM and ORAS
oras cli类似于docker cli 10 在ACR EE中使用ORAS CLI ● 阿里云容器镜像服务企业版ACR EE作为企业级云原生应用制品管理平台, 提供容器镜像、Helm Chart以及符合OCI规范的制品的生命周期管理; ● oras login --username=<登录账号> acree-1-registry.cn- hangzhou.cr.aliyuncs.com b-istio/ ● Wasm filter被推送到ACR EE注册库中 12 阿里云服务网格ASM架构 13 在阿里云服务网格ASM中使用WASM ● 进行统一的代理扩展插件的生命周期管理 14 在ASM中启用wasm部署功能 ● aliyun servicemesh UpdateMeshFeature -- ServiceMeshId=xxxxxx --WebAssemblyFilterEnabled=true0 码力 | 23 页 | 2.67 MB | 1 年前3
共 14 条
- 1
- 2