13 Istio 流量管理原理与协议扩展 赵化冰Istio 流量管理原理与协议扩展 赵化冰 赵化冰 腾讯云 服务网格团队 https://zhaohuabing.com Service Mesh Service Mesh Layer 处理服务间通信(主要是七层通信)的云原生基础设施层: Service Mesh 将各个服务中原来使用 SDK 实现的七层通信相关功能抽象 出来,使用一个专用层次来实现,Service Mesh 对应用透明,因此应用 Layer Service 1 Istio 流量管理 – 概览 • 控制面下发流量规则: Pilot • 数据面标准协议:xDS • 集群内Pod流量出入: Sidecar Proxy • 集群外部流量入口:Ingress Gateway • 集群外部流量出口:Egress Gateway(可选,在一个集中点对外部访问进行控制) • Service discovery • Load balancing 可以绑定到端口上直接对外服务,也可以不绑 定到端口上,而是接收其他 listener 转发的请求。 • Cluster:集群是指 Envoy 连接的一组上游主机,集群中的主机是对等的,对外提供相 同的服务,组成了一个可以提供负载均衡和高可用的服务集群。Envoy 通过负载均衡 策略决定将请求路由到哪个集群成员。 xDS 协议的主要概念: • Listener Discovery Service (LDS) : 监听器发现服务。0 码力 | 20 页 | 11.31 MB | 6 月前3
Envoy原理介绍及线上问题踩坑Technologies Co., Ltd. All rights reserved. Page 3 目录 1. Envoy启动及配置文件 2. Envoy流量拦截原理、常用部署方式 3. Envoy可扩展过滤器架构、可观测性 4. Envoy线程模型 5. 生产环境问题分析及解决方法 6. 针对Envoy做的一些优化及效果 7. 常用性能分析测试工具及使用方法 8. 华为ASM产品介绍 Copyright 微服务架构最早由Fred George在2012年的一次技术大会上所提出,他讲到如何通过拆分SOA服务实现服务之间的解耦, 这是微服务最早的雏形。 • 微服务架构通过细粒度的服务解耦拆分,带来缩短开发周期、独立部署、易扩展等好处的同时,同时带来对服务发现、负 载均衡、熔断等能力前所未有的诉求。 • 第一阶段为dubbo、SpringCloud侵入式开发框架,语言强相关。 • 非侵入服务网格最早为2016年Linkerd。 能力,包括服务发现、路由、高级负载均衡、动态配置、链路安全及证书更新、目标健康检查、 完整的可观测性等。 • 目前常见数据面主要有三种:Envoy、Linkerd、Traefic。Envoy由于高性能和扩展能力前在数据面遥 遥领先。 • Iptables使Pod间出入应用的流量均由Envoy代理,对应用来说完全透明。支持主要常用网路协议 Http1/Http2/Tls/gRPC/Tcp等。 Copyright0 码力 | 30 页 | 2.67 MB | 1 年前3
Extending service mesh capabilities using a streamlined way based on WASM and ORASEnvoy’s Filter Chain Listener Downstre am Filter Filter Filter Cluster Upstrea m Filter Chain 扩展自定义Filter, 并通过xDS API动态配置 L4 Network Filters L7 Http Filters 3 Listener & Filters before outbound 理中。 ■ 简化了扩展Envoy的过程, 这种解决方案通常使用WebAssembly(WASM)的新技术, 它是一种有效的可移植二进制指令格式,提供了可嵌入和隔离的执行环境。 6 使用Wasm for Proxy ● Pros ○ 敏捷性:过滤器可以动态加载到正在运行的Envoy进程中,而无需停止或重新编译。 ○ 可维护性:不必更改Envoy自身基础代码库即可扩展其功能。 ○ 多样性: 在阿里云服务网格ASM中使用WASM ● 进行统一的代理扩展插件的生命周期管理 14 在ASM中启用wasm部署功能 ● aliyun servicemesh UpdateMeshFeature -- ServiceMeshId=xxxxxx --WebAssemblyFilterEnabled=true ○ 部署一个DaemonSet(asmwasm-controller)到K8s集群中 ○ asmwasm-co0 码力 | 23 页 | 2.67 MB | 1 年前3
Istio 在 Free Wheel 微服务中的实践在FreeWheel,我们已经有一套复杂的自定义认证、授权机制,为了 充分利用Istio,我们通过扩展Istio来整合这些系统,涉及两方面: • 扩展Sidecar:加入认证支持,提供了对业务系统的认证支持,将用 户相关信息以header的形式传入mesh,后续的授权、监控、限流 都可以用Istio原生的机制来完成 • 扩展Mixer:选择一部分流量来应用对应的授权逻辑 FreeWheel的Istio实践 FreeWheel的Istio实践 • 右图为接入FreeWheel自定义认证和 授权模块的原理图 扩展Sidecar接入认证 • 修改 istio-system/istio-sidecar- injector 这个ConfigMap,加入自定 义反向代理 FreeWheel的Istio实践 • 通过在Sidecar中增加FreeWheel自定义认证支持,下游可以充分利用 Istio提供的授权、限流、监控接口,不过要注意Sidecar也有一些小坑 t,也无法通过容器内环境变量自 动建立master连接,需要管理额外的kubeconfig • Sidecar内的服务流量默认是不被劫持的,如果需要劫持需要添加额 外的annotation 扩展Mixer接入授权 • 右图为Mixer的基本原理,Template 是对Proxy上报的Attribute的特定处 理机制的框架,支持四类: • Preprocess: 汇总流量相关元数据0 码力 | 31 页 | 4.21 MB | 1 年前3
Istio + MOSN 在 Dubbo 场景下的探索之路EnvoyFilter 资源来给 xDS 资源打 patch • Envoy 解析 Dubbo 协议中的 Serivce 和 Method • 根据路由策略配置把流量转发到对应的 Provider • 通过WASM扩展 华为云:https://support.huaweicloud.com/bestpractice-istio/istio_bestpractice_3005.html18/23 改造方案2 MOSN+Dubbo-go • 数据面改造 • 控制面适配20/23 数据面改造21/23 控制面适配 通过一个独立的进程(Adapter) • 对接注册中心 • 对接配置中心 • 连接多个集群 • 根据服务的信息结合配置信息下发对应的集群的资源22/23 多点Service Mesh改造架构图23/23 Demo 演示 说明 • 由于没有真正的注册,所以使用手动添加 ServiceEntry 的方式代替0 码力 | 25 页 | 3.71 MB | 6 月前3
Kubernetes容器应用基于Istio的灰度发布实践限流 ACL 故障注入 服务身份和安全 认证 鉴权 平台支持 Kubernetes CloudFoundry Eureka 集成和定制 ACL 日志 配额 Consul 功能 扩展 Istio总体架构 Istio & Kubernetes:架构结合 Kube-APIServer Etcd istioctl / kubectl Pilot Envoy SVC Pod "unknown" response_code: response.code | 200 Istio & Kubernetes: 总结 对于云原生应用,采用Kubernetes构建微服务部署和集群管理能力,采用 Istio构建服务治理能力,将逐渐成为应用微服务转型的标准配置。 Agenda • Istio & Kubernetes • Istio & Kubernetes上的灰度发布 基于K8S的Serverless容器服务 云容器引擎 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service Mesh Istio在华为云:华为云容器应用 Istio在华为云:服务网格 只需在创建集群时选 择“启用服务网格” 即可使用Istio服务治 理功能 Istio在华为云: 灰度发布流程 Y N Y N Istio在华为云: 灰度发布 Istio & Kubernetes 在Google0 码力 | 38 页 | 14.93 MB | 1 年前3
SolarMesh 基于Istio构建的流量监管平台Copyright © 2021 Cloud To Go 为什么我们需要服务网格 - 业务上k8s带来的问题 Ø 集群内的情况不可见 Ø 环境不统一,很难复现问题 Ø 集群中的网络限制 Ø ... Ø 学习k8s成高 Ø 测试方法发生了改变 Ø 有些问题只能在集群内出 现,难以测试 Ø ... 测试难 运维难 Ø 学习k8s成高 Ø 缺少好用的工具 Ø ... 排错难 Copyright © 2021 Cloud To Go 应用场景 - 异地容灾 通过智能路由实现异地容灾 在SolarMesh中,只需要声明哪些 集群是属于同一个mesh,借助istio 的智能路由能力,同名service将会 获得多集群容灾的能力 流量将会按照策略智能分配到正常 的工作负载上 Copyright © 2021 Cloud To Go SolarMesh的架构设计 核心组件少安装简单,轻量的架构赋予SolarMesh极低的资源占用以及极低的维护成本 •规范 标准的istio规范操作,实时反映真实集群状态,告别terminal。 •便捷 一键安装,UI操作,流量策略模板复用,批量设置 •多集群支持,零成本接入 流量视图提供统一的拓扑图界面,让您的视角可以统揽全局 •附加组件 •Jaeger,为SolarMesh提供分布式链路追踪的能力0 码力 | 20 页 | 1.29 MB | 1 年前3
在网格的边缘试探:企业 Istio 试水指南策略 • 安全试用服务范围 • 不要 All in! • 稳定——性能和业务! • 什么服务不怕死? • 什么服务可以慢? • 集群规模别太大。 • 能切换/回滚。 • 有完善的性能、功能测试方案。禁则 �������� ����� ����制定目标 • 集群环境申请:版本、开关、资源等。 • 功能性需求:本次试用中Istio需要提供的功能,再次强调:No Freestyle • 非功 非功能需求:并发、成功率、响应时间等服务质量参数。 • 故障处理需求:故障预案。 • 影响范围分析。 • 选定测试版本:研读开放Issue以及Release Notes。测试方案部署 • Istio部署 • 复查集群环境 • 调整资源参数 • 调整亲和性参数 • 调整HPA • 日志输出和调试开关复查 • Istio功能裁剪 • 备用业务部署 • 试用服务部署 • 服务YAML复查 • 缺省路由设置 • 根据功能需求,编写和部署0 码力 | 19 页 | 11.41 MB | 6 月前3
Kubernetes容器应用基于Istio的灰度发布实践"unknown" response_code: response.code | 20015 Istio & Kubernetes: 总结 对于云原生应用,采用Kubernetes构建微服务部署和集群管理能力,采用 Istio构建服务治理能力,将逐渐成为应用微服务转型的标准配置。16 Agenda • Istio & Kubernetes • Istio & Kubernetes上的灰度发布17 基于K8S的Serverless容器服务 云容器引擎 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service Mesh28 Istio在华为云:华为云容器应用29 Istio在华为云:服务网格 只需在创建集群时选 择“启用服务网格” 即可使用Istio服务治 理功能30 Istio在华为云: 灰度发布流程 Y N Y N31 Istio在华为云: 灰度发布32 Istio & Kubernetes0 码力 | 34 页 | 2.64 MB | 6 月前3
Istio 与 Knative 踩坑实录1 版本 486 天 服务范围 覆盖了不同业务链路的四十余个服务 40+ 服务 K8S安装环境 覆盖自建机房、IDC机房、云主机、海外云 服务等各种环境和不同的K8S版本 5 集群 服务网格实践进展5/25 Istio Community 服务网格实践进展6/25 Knative FAAS实践进展7/25 Faas(函数即服务)基础设施 FAAS实践进展8/250 码力 | 26 页 | 1.35 MB | 6 月前3
共 12 条
- 1
- 2













