蚂蚁金服Service Mesh渐进式迁移方案5 总结 DNS寻址方案的后续规划ü 对未来长期目标的认可 • Service Mesh(带控制平面,如Istio) • Kubernetes • 微服务 ü 现实中有很多挑战 • 还有很多应用没有实现微服务化 • 还有很多应用没有运行在kubernetes之上 • Istio目前还不够稳定,也无法原生支持我们的规模 • 现有系统中的众多应用不可能一夜之间全部迁移 ü 最重要的:平滑迁移 Mesh (Istio模式) 部署在K8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh (Istio模式) 应用终极形态 应用现状 1 1 1 2 2 2 3 4 4 4 比较理想,绝大部分 投入最终都将保留 Service Mesh (Sidecar模式) Service Mesh (Istio模式) 带完善的控制 带完善的控制 平面,如Istio 只有Sidecar, 直接集成周边 不现实 Istio的非k8s支 持投入产出比 太差 背景1:原生Istio无法支撑我们的规模 背景2:k8s(Sigma3.1)将加快普及 K8s普及在即, 不适合再大面积 铺开,快速会师ü 和路线1的核心差别 • 是先上k8s,还是先上Service Mesh • 而且是终极形态的Service Mesh(意味着更偏离目标)0 码力 | 40 页 | 11.13 MB | 6 月前3
Service Mesh结合容器云平台的思考和实践故障处理 • 故障注入 • … Mixer • 前提条件检查:安全认证,黑白名单, ACL检查 • 限流管理 • 遥测报告:日志监控 控制平面 数据平面 Istio-Auth • 服务间认证 • 终端用户认证Istio的核心组件 • Envoy 是一个高性能轻量级代理,它掌控了service的入口流量和出口流量,它提供了很多内置功能,如动态负 载服务发现、负载均衡、TLS终止、HTTP/2 金丝雀部 署)、流量管理(超时、重试、熔断)功能。Pliot接收用户指定的高级路由规则配置,转换成Envoy的 配置,使这些规则生效。 • Istio-Auth 服务间认证和终端用户认证功能Istio的Pilot功能解析Pilot官方架构Istio – EnvoyPilot-Agent的核心流程解读Pilot工作流程Pilot-Agent的部署形式 pilot-agent在pilot/cmd包下面,是个单独 d包下面,是个单独 的二进制。 pilot-agent跟envoy打包在同一个docker镜 像里,镜像由Dockerfile.proxy定义, Makefile(include了tools/istio- docker.mk)把这个dockerfile build成了 ${HUB}/proxy:${TAG}镜像,也就是 Kubernetes里跟应用放在同一个pod下的 sidecar。非Kubernetes情况下需要把0 码力 | 28 页 | 3.09 MB | 6 月前3
在Kubernetes上部署高可用的Service Mesh监控NOT a persistent store. ● Have to live with all those DBs... Prometheus Adapter Remote Storage Local disk Generic read/write protocol Custom protocolPrometheus at scale ● Prometheus is by design NOT a persistent store. ● Have to live with all those DBs... Prometheus Adapter Remote Storage Local disk Generic read/write protocol Custom protocol Performance and reliability aside, more things cluster.Voila!Monitoring your service meshMonitoring your service mesh - istio ● https://www.katacoda.com/courses/istio /deploy-istio-on-kubernetes ● Mixer, pilot and envoy exposes prometheus metrics0 码力 | 35 页 | 2.98 MB | 6 月前3
大规模微服务架构下的Service Mesh探索之路蚂蚁有大量的扩展和定制化需求 • 我们非常认可envoy在数据平面上的表现开源方案选择之第二代Service Mesh Istio • 第一选择,重点关注对象 • 奈何迟迟不能发布生产可用版本 • 性能和稳定性远远不能满足蚂蚁的 要求 • 但我们非常认可Istio的理念和方向 Conduit • 只支持k8s,而蚂蚁尚未普及k8s • 数据平面由Rust编写,过于小众,难于 从社区借力。 司的选择之一:自研 华为:CES Mesher • 使用Golang编写 • 由go chassis演进而来 • 走的是已有类库->加proxy->再加 控制平面的路线 • 部分对接Istio • 细节暂时不清楚,即将开源 新浪微博:Motan Mesh • 也是使用Golang编写 • 全新实现(原有类库是基于Java) 老成持重的稳健思路:以proxy为切入口,第 一时间获取跨语言和技术栈下沉的红利,立足 数据平面选择Envoy:成熟产品,符合 腾讯语言体系,内部广泛使用 • 控制平面据传“挣扎了一下”,最终还 是选择Istio,进行定制和扩展,解耦k8s国内公司的选择之三:另辟蹊径 UCloud:Service Mesh • 非常有意思的轻量ServiceMesh实践 • 从Istio中剥离Pilot和Envoy • 去掉Mixer和Auth • 定制Pilot,实现ETCD Adapter0 码力 | 37 页 | 7.99 MB | 6 月前3
SOFAMesh的通用协议扩展MESH 介绍 • SERVICE MESH 落地的问题 • SOFA MESH 的通用落地方案 • DNS 服务寻址方案 • X-PROTOCOL 通用协议 • 问答SOFA MESH • 从 ISTIO 克隆并保持同步更新 • 使用 SOFA-MOSN 代替 ENVOY 作为数据平面 • 打包 • 安装 • 部署 • 测试 • 支持主流的微服务框架 • SOFA • HSF • DUBBO • MESH OPERATOR • RPC SERVICE CONTROLLER • …SERVICE MESH 落地中的问题常见的 MESH 落地方案 在非 KUBERNETES 环境部署 ISTIO 把 KUBERNETES 当作一个更好用的虚拟化方案 KUBERNETES NATIVE 化微服务 PLATFORM ADAPTER 自己做控制平面KUBERNETES NATIVE 微服务 CRD 扩展新的能力 • …MESH 落地碰到的问题 • 客户端服务发现与负载均衡无法与 ISTIO 一起工作 • ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 服务注册模型落地一个微服务框架需要的工作0 码力 | 28 页 | 4.73 MB | 6 月前3
Service Mesh Meetup #3 深圳站访问控制和端到端认证等。什么是 Istio • Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有 负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任 何改动。 • 想要让服务支持 Istio,只需要在您的环境中部署一个特殊的 sidecar 代理,使用 Istio 控制平面功能配置和管理代理,拦截微服务之间的 所有网络通信。Istio 的特点 • HTTP、gRPC、WebSocket 通过强大的基于身份的验证和授权,在集群中实现安全的服务间通 信。坑 • Gitlab • external_url • Outbound requests(Allow requests to the local network from hooks and services.) • Drone • Drone 0.8 在 kubernetes 上支持的不好(RPC error); • .drone.yml Jenkins • 默认是开启全局安全和防止跨站点请求伪造(这个在测试时你可能需要关闭) • Kubernetes(Minikube) • —bootstrapper=localkube • Istio • GreatWall(http://blog.samemoment.com/articles/kubernetes/) • 应该是给我造成最多最大的问题 • SSCNCF(Cloud Native0 码力 | 45 页 | 18.62 MB | 6 月前3
Service Mesh的实践分享唯品会Service Mesh的实践分享 郑德惠 2019.1.6 Service Mesh Meetup #5 广州站• 唯品会内部Service Mesh的演进 • 与Istio的区别 • 实践中踩过的坑 • 今年规划(Roadmap)内部Service Mesh的演进 我是作者名称服务化体系1.0 • OSP(Open Service Platform) • Thrift over 复杂代码嵌入对客户端进程影响大服务化体系2.0 - Service Mesh雏形 • 物理机、sidecar • Local & Remote,主与备 • 轻量级客户端、本地调用 • Local Proxy负责服务治理与 远程通信 • Remote Proxy负责备份和非 主流流量 JavaApp Local Proxy OSP Server Service Registry Service Config 服务注册 配置下发 服务路由 网络传输 OSP client多语言客户端接入 • HTTP & TCP • Local & Remote • 根据接入对象的不同,制定 不同的接入策略,达到 • 接入简单 • 保证性能 • 节省资源 Java App Local Proxy OSP Server Remote Proxy Cluster Thrift over TCP0 码力 | 30 页 | 4.80 MB | 6 月前3
Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?要架构,还是要性能? 让我们来对ServiceMesh做一次灵魂拷问,首先:Istio的回答:架构优先,性能暂放一边 Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Istio 0.1 - 1.0 Mixer 0.1 - 1.0 In- process AdapterIstio Control Plan 为什么Istio选择Mixer和Proxy分离的架构? Part 1:Ser ConfigurationsOut-of-process Adapter 7/39 Istio的新回答:架构继续优先,性能继续放一边 Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Istio 1.1 – 1.2 Mixer 1.1 - 1.2Istio Control Plan 为什么Istio选择Out-of-Process Adapter? Part 1:Servic Infrastructure Backend ? Adapters Configurations 优点: • 架构更优雅,职责更分明,边界更清晰 • Out-of-Process Adapter不再是Istio的组成部分 • 安装部署 • 配置 • 维护Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 架构的优点 • 集中式服务: • 提高基础设施后端的可用性0 码力 | 43 页 | 2.90 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展Service Mesh是下一代SDN吗? 从通信的角度看Service Mesh的发展 赵化冰 中兴通讯 软件专家/Istio Committer 2019.10.26 Service Mesh Meetup #7 成都站什么是Service Mesh?- by Willian Morgan(Buoyant) A service mesh is a dedicated infrastructure 复杂的服务拓 扑,服务网格负责在这些拓扑中实现请求的可靠传递。 在实践中,服务网格通常实 现为一组轻量级网络代理,它们与应用程 序一起部署,但对应用程序透明。什么是Service Mesh?- by Istio 服务发现 负载均衡 流量控制 ... 黑白名单 限流 ... 身份认证 通信加密 权限控制 ... 调用追踪 指标收集 ...什么是Service Mesh?- 从网络的视角 Service Mobile DexMesh Ingress Pod Microservice Envoy (Telemetry, Policy check) 配置数据(服 务信息,路由 信息等) 定制Istio组件 应用微服务 业务请求 控制流 图例说明 Pilot Mixer APP: Canary Deployment K8s API Server 管控规则 灰度发布 网格增强组件0 码力 | 27 页 | 11.99 MB | 6 月前3
七牛容器云ServiceMesh实践优势 • 兼容Istio生态,融入Service Mesh生态 • 南北向流量使用Envoy • 兼容Kubernetes标准Restful接口 • 统一的Kubernetes管理接口 • Gimbal生态 • 多集群入口流量整合管理 • 劣势 • 缺少大规模落地案例 • 功能/非功能仍需加强Contour & Istio • 南北向流量 • API版本共存(Istio & Kubernetes Kubernetes Ingress) • 东西向流量 • Istio支持全量功能 • Contour支持Tracing能力 • 数据面共存 • 共用边车组件Envoy七牛现有Service Mesh体系 • Istio产品化 • 东西流量产品化 • 南北流量产品化 • TLS管理优化 • Contour增强 • 入口流量管控 • 跨集群调度 • 发展策略 • API版本兼容两种方式 80%以上产品线部署Contour & Istio • 涉及K8S集群约20+集群 • 功能迭代 • 先南北,后东西 • 先原生,后二开 • 先管控面,后数据面落地场景—Spock测试平台 • 历史问题 • 分布式系统性能测试问题 定位难 • 多版本并发测试 • 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理0 码力 | 15 页 | 3.86 MB | 6 月前3
共 26 条
- 1
- 2
- 3













