探讨和实践基于Istio的微服务治理事件监控终生成 一个可执行文件。 Adapter作为grpc服务端,运行在独立的pod当中, Mixer通过通过rpc调用,将属性与日志发送给Adapter。基于Mixer的二次开发的流程 • 编写grpc服务端程序,接收来自mixer的数据,并实现自身业务逻辑 • 编写handler、instance、rule配置文件 • 编译打包adapter,上传至docker仓库 • 编写k8s的d 、证书、缓存选项等等。基于Mixer的二次开发Instances Instances。属性映射。基于Mixer的二次开发Rules Rules。将数据交付给适配器。 定义了一个特定的 Instance 何时调用一个特定的 Handler插件编译和镜像打包 插件的编译 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build - a -installsuffix cgo -o eventadapter0 码力 | 29 页 | 8.37 MB | 6 月前3
 Envoy原理介绍及线上问题踩坑基于WASM(WebAssembly)技术,支持沙箱、热升级、 跨语言的扩展机制,处理L4层新连接、数据收发。 envoy.filters.network.dubbo_pro xy L4网络过滤器 解析dubbo RPC协议并提取请求中方法、接口、 metadata等信息,并根据元数据进行路由选择。 envoy.filters.network.local_rateli mit L4网络过滤器 基于L4层网络限流,通过令牌桶防止定期时间间隔内 22 针对Envoy做的一些优化及效果 内核 conn1 conn2 conn3 监听 virtualoutbond 15001 线程1 线程2 线程3 handler1 handler2 handler3 fd1 envoy Virtual listener1 backend listener1 Listener filter dst conn2 内核随机 挑选目标线程0 码力 | 30 页 | 2.67 MB | 1 年前3
 百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu? Ø 部分模块上下游超时配置不合理,超时倒挂,集中管理调整成本比较高。 Ø 多数模块对单点异常,慢节点等异常缺乏容忍能力,推动每个模块独立修复,成本高,上线周期长。 Ø 因重试导致雪崩,底层RPC框架需要重复建设来定制动态熔断能力。 Ø 升级一级服务建设中,发现很多模块单点、多点故障不能容忍,能否低成本解决? Ø 比如常用运维降级、止损能力各个产品线重复建设,方案差异大,OP期望运维能力在不同产品线之间能够通用化, 务实、高稳定性、低迁移成本。 l 核心思路 Ø 先单跳,后双跳。 Ø 服务发现下沉到Envoy。 Ø 基于 RPC + 服务发现实现透明流量劫持。 Ø 自建配置中心,产品化封装。 l 关键技术 Ø 内核劫持,使用Loopback IP 与 服务发现一一对应。 Ø RPC劫持,构建可快速扩展标准方案。 Ø 自身稳定性,降级(兜底)、隔离、监控多种方式保证。 ①bns, 百度内部基础设施层 loopback地址的管理和分配。 Ø 需要打通业务和loopback之间的映射管 理。 RPC劫持:可扩展方案 Ø envoy启动后注册port到bns-agent。 Ø rpc框架查询bns-agent IP与治理策略数据。 Ø bns-agent判断否使用envoy进行服务治理。 Ø rpc框架根据反馈的IP,治理策略信息请求对 应IP,会cache数据,需要即时更新。 Ø en0 码力 | 9 页 | 2.20 MB | 1 年前3
 全栈服务网格 - Aeraki 助你在
Istio 服务网格中管理任何七层流量Service Message Broker RPC RPC RPC Message Message Message Cache RDB NoSQL We need to manage multiple types of layer-7 traffic in a service mesh, not just HTTP and gRPC ● RPC:HTTP, gRPC, Thrift Thrift, Dubbo, Proprietary RPC Protocol … ● Messaging: Kafka, RabbitMQ … ● Cache: Redis, Memcached ... ● Database: mySQL, PostgreSQL, MongoDB ... ● Other Layer-7 Protocols: ... Control Plane (Traffic application in an Istio service mesh, but the inter-services communication are done by AwesomePRC, our own RPC protocol, instead of HTTP. So, how could we achieve layer-7 traffic management for AwesomeRPC in0 码力 | 29 页 | 2.11 MB | 1 年前3
 13 Istio 流量管理原理与协议扩展 赵化冰服务发现(基于服务的逻辑名称) – LB、基于应用协议的错误码进行 Retries 和 Circuit Breaker – 基于七层协议 Meta data 的路由(RPC协议中的调用 服务名、方法名等) – Fault Injection(RPC 协议层的错误码) – RPC 调用的 Metrics(调用次数,调用失败率等) – Tracing • 四层服务治理 – 服务发现(基于 VIP 或者 Pod IP:DNS ServantName, FuncName, Context Dubbo service name service name, service version, service method Any RPC Protocol service name in message header some key:value pairs in message header 13 Istio 协议扩展:协议无关的通用路由框架 breaker • Fault injection • Telemetry collecting Pilot 将通用协议路由规则解析为统一格式 的 xDS 配置下发。 RPC Filter Framework Awesome RPC Specific Logic Decoding/encoding Parsing header …… Routing …… 优点: • 控制面的扩展性好 问题: • 需要修改0 码力 | 20 页 | 11.31 MB | 6 月前3
 Istio 在 Free Wheel 微服务中的实践Report: 上报数据 • Check: 决策是否允许当前访问 • Quota: 决策容量是否足够 Mixer or Sidecar,这是一个问题 • Mixer提供了一种非常灵活的模型,让Handler可以在流量中动态的选 择一部分来引入额外的机制(如权限控制、限流等),在应用运维中 这是很重要的能力,只要是不修改请求、响应的功能都可以采用扩展 Mixer来实现 • Sidecar里接入额 被匹配到的流量,右图是mymock Handler的基本原理 • mymock handler 是 mymock adapter的初始化配置 • 完成初始化后rule将checknothing配置 与handler关联起来,其实就是做了流 量的匹配,满足一定条件的流量上应用 mymock handler • mymock adapter直接拒绝被匹配的请 求 扩展Mixer接入授权 定义Handler Spec Spec 扩展Mixer接入授权 实现Handler接口 扩展Mixer接入授权 实现Handler接口 扩展Mixer接入授权 注册Handler 扩展Mixer接入授权 • Mixer会直接影响整个Mesh的稳定性,因此替换时要做到尽可能稳妥 实践总结 • k8s/etcd 配置管理存在性能瓶颈: • 单一 resource 应控制在k级别,达到 10k 量级后响应可能会出现超0 码力 | 31 页 | 4.21 MB | 1 年前3
 Istio audit report - ADA Logics - 2023-01-30 - v1.0requests which is: “The first request on an h2c connection is read entirely into memory before the Handler is called. To limit the memory consumed by this request, wrap the result of NewHandler in an http w.Write(bytes.Repeat([]byte("Test"), bufferSize)) }, )) srv := &http.Server{ Addr: ":6969", Handler: mux, } go func() { if err = srv.ListenAndServe(); err != nil && err != http.ErrServerClosed Fix: https://github.com/istio/istio/pull/41872 Description Golangs golang.org/x/net/http2/h2c handler reads the first request in an h2c connection entirely into memory which could allow a malicious actor0 码力 | 55 页 | 703.94 KB | 1 年前3
 Istio Security AssessmentComponent Istio Location • istio/istio/mixer/adapter/list/list.go#194 • istio/istio/mixer/pkg/runtime/handler/signature.go#80 • istio/istio/mixer/pkg/config/store/fsstore.go#91 • istio/istio/pkg/mcp/creds/pollingWatcher Infof("Fetched list is unchanged") h.resetPurgeTimer() return } • istio/istio/mixer/pkg/runtime/handler/signature.go (line 80) 15 | Google Istio Security Assessment Google / NCC Group Confidential if was used to override the sidecar’s Envoy proxy configuration with one that contains a Lua request handler for executing arbitrary shell commands in the context of the Envoy proxy process. When loaded, instead0 码力 | 51 页 | 849.66 KB | 1 年前3
共 8 条
- 1
 













