Istio 在 Free Wheel 微服务中的实践
两年来,我们将若干复杂的Rails单体应用拆分、迁移到微服务架构, 逻辑用Golang重写,引入了Kubernetes。随着模块越来越多,复杂 的通信带来矛盾日渐突出:流量管理、监控… 最初的尝试:Gateway • 如右图,最初我们尝试用一个自研的 简单Gateway来提供统一的认证、授 权、限流、监控,但问题很快凸显出 来了: • Gateway是一个中心化的反向代 理,成为了微服务中的瓶颈,模 块流量会互相影响 • 配置管理:为C++实现的Proxy接 入k8s的动态配置管理 • Attribute Machine: 授权,Quota ,Tracing,监控的基础 Istio管理下的微服务 • 右图是部署mock1.v1 Pod之后发生的事 情: • Sidecar Injection: 注入initContainer, Sidecar, istio-certs volume • Citadel: 都可以用Istio原生的机制来完成 • 扩展Mixer:选择一部分流量来应用对应的授权逻辑 FreeWheel的Istio实践 • 右图为接入FreeWheel自定义认证和 授权模块的原理图 扩展Sidecar接入认证 • 修改 istio-system/istio-sidecar- injector 这个ConfigMap,加入自定 义反向代理 FreeWheel的Istio实践0 码力 | 31 页 | 4.21 MB | 1 年前3SolarMesh 基于Istio构建的流量监管平台
标准的istio规范操作,实时反映真实集群状态,告别terminal。 •便捷 一键安装,UI操作,流量策略模板复用,批量设置 •多集群支持,零成本接入 流量视图提供统一的拓扑图界面,让您的视角可以统揽全局 •附加组件 •Jaeger,为SolarMesh提供分布式链路追踪的能力 •Grafana,为SolarMesh提供流量的实时仪表盘 •SLO,为SolarMesh提供服务质量检测的能力0 码力 | 20 页 | 1.29 MB | 1 年前3Envoy原理介绍及线上问题踩坑
RPC协议并提取请求中方法、接口、 metadata等信息,并根据元数据进行路由选择。 envoy.filters.network.local_rateli mit L4网络过滤器 基于L4层网络限流,通过令牌桶防止定期时间间隔内 过多下游连接。 envoy.filters.network.http_conne ction_manager L4网络过滤器 专门用于处理HTTP请求的网络过滤器,根据协议类型 处理HTTP编解码并调用L7层HTTP过滤器。 基于Lua脚本语言,处理HTTP请求及相应,每个Lua运 行时运行在工作线程中。 envoy.filters.http.local_ratelimit L7 HTTP过滤器 基于L4层请求限流,通过令牌桶防止定期时间间隔内 过多下游请求 envoy.filters.http.wasm L7 HTTP过滤器 基于WASM(WebAssembly)技术,支持沙箱、热升级、 跨语言的扩展机制,处理L7层HTTP请求编解码。 outbound|xx|191130102|xx.xx.svc.cluster.local - 10.17.8.9:xx 100.95.165.3:28788 100.85.225.193 - 原因 分析 1. 抓包看到出现短时间内大量Retransmission 2. 超过cluster内建立与目标主机连接的最大重试次数(3次) 3. 原因为客户POD内部署两个对外服务端口,当客户端同时发起对不同服务的访问时,路由结果可能会落0 码力 | 30 页 | 2.67 MB | 1 年前3Istio 与 Knative 踩坑实录
Knative 简介 FAAS 实践进展19/25 酷家乐 FAAS 方案 FAAS 实践进展20/25 Knative 基本实践数据 FAAS 实践进展 分享主题:字号 分享嘉宾 平均冷启动时间 不包含 Istio-proxy 业务为 go 语言或 nodejs 语言的简单接口 3.6 秒 额外内存占用 30~60 MB 为 queue-proxy 占用21/25 踩过的坑/问题 Activator 重复创建并占用大量资源22/25 Knative 当前瓶颈 FAAS 实践进展 • 还未发布 Production-ready 版本 • Queue-proxy 过重 • 冷启动时间亟待优化 • 支持代码级更新?23/25 展望-推动组织变革 FAAS 实践进展24/25 总结 FAAS 实践进展 • 深入掌握后可谨慎使用 • 可能颠覆组织和职能的运作方式,推进需要技巧0 码力 | 26 页 | 1.35 MB | 5 月前3Istio控制平面组件原理解析
sockets,在这期间使用UDS从P获取合适的listen sockets • 4. S初始化成功,通知P停止监听新的链接并优雅关闭未完成的工作 • 5. 在P优雅关闭过程中,S会从共享内存中获取stats • 5. 到了时间S通知P自行关闭 • 6. S升级为P • 官方博客:Envoy hot restart什么时候会进行热重启?监控envoy ü获取非正常退出状态 ü抢救机制触发 ü抢救令牌减少一个(总共10个) ücert-chain.pem 和 key.pem 实际有效期90天,程序控制有效期45天 ü证书过期会被重新生成并挂载到/etc/certs ü触发envoy热启动ü方案一: • 把重新生成证书时间改为凌晨http://www.servicemesher.com0 码力 | 30 页 | 9.28 MB | 5 月前3IstioMeetupChina 服务网格热升级技术分享
修改SidecarSet,指定新版本镜像 • SidecarSet将EmptyContainer替换为新Sidecar镜像,新Sidecar镜像启动 • 新Envoy进程与老Envoy交互,开始进行热重启流程 • 最大排水时间到达,SidecarSet Controller将老Container替换为Empty镜像 • 热升级结束 10 • 为什么需要服务网格数据面热升级 • 实现热升级 • 实践热升级 目录 Catalog0 码力 | 14 页 | 2.25 MB | 1 年前3在网格的边缘试探:企业 Istio 试水指南
����� ����制定目标 • 集群环境申请:版本、开关、资源等。 • 功能性需求:本次试用中Istio需要提供的功能,再次强调:No Freestyle • 非功能需求:并发、成功率、响应时间等服务质量参数。 • 故障处理需求:故障预案。 • 影响范围分析。 • 选定测试版本:研读开放Issue以及Release Notes。测试方案部署 • Istio部署 • 复查集群环境 • 调整资源参数0 码力 | 19 页 | 11.41 MB | 5 月前3
共 7 条
- 1