探讨和实践基于Istio的微服务治理事件监控
宏观下的监控需求 链路总体展示 展示整个服务调用过程中链路上 每一个节点的服务状况,包括延 时、吞吐量等基本信息。 服务器总体展示 展示当前所有服务器的运行状况, 包括CPU、内存、网络、I/O读写 等信息 业务总体展示 展示当前业务相关数据的 从宏观上快速定位问题,在微观上找到问题根因的 监控方案问题二:现有的系统能否完全满足需求 现有系统如何满足运维需求Istio现有的监控体系 r仓库 • 编写k8s的deployment和service配置文件 • 部署应用基于Mixer的二次开发Hanlder Handlers 。为适配器提供配置。例如,到后端的 URL 、证书、缓存选项等等。基于Mixer的二次开发Instances Instances。属性映射。基于Mixer的二次开发Rules Rules。将数据交付给适配器。 定义了一个特定的 Instance 何时调用一个特定的0 码力 | 29 页 | 8.37 MB | 5 月前3Envoy原理介绍及线上问题踩坑
LibeventDispatcher 待清理对象 ListenerManager Listener Connection 创建 监听 socket 新连接 事件 连接 socket 数据传输 事件 L4处理 读写 延迟 删除 L7处理 阻塞 运行 ConnectionHandler 匹配 监听器 • Envoy启动时创建的Listener与工作线程绑定并启动监听 (向libevent注册Read ,因此Response匹配的对上游进行L7层过滤器解码、通过Router关联关系找到下游并编码发送 HTTP请求(POD1处理类似)。 • 以上所提到的Envoy L4层网络读取及数据发送为全异步读写模式,采用网络事件触发机制完成响应数据的接收和发送。 • 由于Router部分请求处理方向需要进行更多路由选择计算及负载均衡计算工作,因此通常outbound方向处理较复杂,CPU消耗比inbound更高。0 码力 | 30 页 | 2.67 MB | 1 年前3Istio控制平面组件原理解析
Envoy不支持优雅关闭,需要通过金丝雀或蓝绿部署方式实现 Envoy优雅关闭实现方式讨论:#3307 #2920Pilot-Discovery——配置中心(PD) uv1版本和v2版本之间的区别 u建立缓存配置 u触发配置生效方式v1版本和v2版本之间的区别 V1 HTTP1 REST JSON/YAML 弱类型 轮询 SDS/CDS/RDS/LDS 奠定控制平面基础 V2 HTTP2 和Google强强联手 官方博客:The universal data plane API缓存Istio和k8s配置 ü一个小型的非持久性key/value数据库 ü借助k8s.io/client-go建立缓存 ü缓存Istio:route-rule,virtual-service,gateway等 ü缓存k8s:node,Service,Endpoints等触发配置生效方式 V2通过GRPC双向流,主动推送配置给envoy:0 码力 | 30 页 | 9.28 MB | 5 月前3Istio 在 Free Wheel 微服务中的实践
Mixer会直接影响整个Mesh的稳定性,因此替换时要做到尽可能稳妥 实践总结 • k8s/etcd 配置管理存在性能瓶颈: • 单一 resource 应控制在k级别,达到 10k 量级后响应可能会出现超 时导致配置读写状态异常,进而影响整个系统稳定性 实践总结 • Istio配置管理有局限性: • Endpoint的配置管理有防抖动处理,即使集群中的部署变化再快, 也不会阻塞Istio • Istio其他配置管理没有防抖动处理(0 码力 | 31 页 | 4.21 MB | 1 年前3
共 4 条
- 1