Istio

看!闲鱼在ServiceMesh的探索和实践

萝らか妹 提交于 2020-11-15 04:56:49
背景: 在阿里服务端开发以Java为主的大背景下,其他异构语言业务如何调用现有Java服务,如何与集团中间件打通,就成为使用非Java语言团队必须要解决的首要问题。 已有方案问题: 在ServiceMesh方案成熟之前,我们采用: 通过Dart C/C++扩展方式调用各中间件客户端SO库(类JNI) 。该方案在业务初期很好的解决了Dart服务端生态建设问题。但是该方案还存在以下几个问题: 运维耦合度高。业务代码和客户端SO库代码打包在一起,运行在同一进程,一旦微服务框架需要升级,业务代码也需要维护和重启。 复杂性:进程内的多个语言环境,跨语言数据表示和传输等问题,都会增加系统的复杂性,降低原有服务的性能。 接入成本高 新功能滞后 ServiceMesh方案: 由于现有方案存在的一些问题,我们转向ServiceMesh寻找解决问题的思路 如上图所示:与目前比较常见的微服务框架相比,ServiceMesh把微服务客户端核心功能独立出来,并作为一个独立Proxy进程部署在每一个主机上,业务进程通过Proxy进程与外界通信。这个独立的Proxy进程就是ServiceMesh的核心: SideCar。 业务进程和SideCar之间最常见的两种通信方案:1. 基于Iptables的流量拦截转发方案,2. 业务进程通过轻量化Mesh客户端直连SideCar。从实现原理上看

陌陌 Service Mesh 架构的探索与实践

我的未来我决定 提交于 2020-11-10 06:46:54
关注我 们, 设为星标,每天7:30不见不散,架构路上与您共享 回复" 架构师 "获取资源 作者 | 高飞航 编辑 | 田晓旭 2016 年,Service Mesh 进入公众视野之后一直保持着高速发展的状态,目前已成为业内广泛认可的下一代微服务架构,并且被 CNCF 列入构建容错性好、易于管理与观察的云原生应用所依赖的关键技术。 2019 年底,经过多年微服务架构实践积累、对现有架构痛点总结分析以及多个阶段的思考与评估后,陌陌正式启动了 Service Mesh 落地项目 MOA Mesh。本文将从原有微服务架构谈起,详细讲述陌陌 Service Mesh 架构的探索过程,希望能给业内同样关注如何落地 Service Mesh 的技术人员提供参考。 1 陌陌微服务架构演进 2013 年,陌陌架构团队完成了微服务架构的研发与推广,考虑到当时业内还没有成熟的开源产品,陌陌自研了服务框架 MOA(Momo service Oriented Architecture),并应用到了多条业务线,例如附近动态、直播、IM、短视频等。 随着业务的不断增长,MOA 完成了对自身能力与稳定性的验证,发布服务 2000+,注册实例 2 万 +,全天调用量 3500 亿,峰值时 QPS 达到 600 万。 发展历程 为了支撑大规模业务服务运行,MOA 除了需要不断完善自身之外

Kubernetes/K8s架构师实战集训营【2020最新】

做~自己de王妃 提交于 2020-11-08 15:26:07
Kubernetes/K8s架构师实战集训营【2020最新】 下载地址: 百度云盘 这门课上线有 2 年多了,目前进行到 第11期,已有 800 多位学习,并实现了加薪和提升技能的目标,得到学员一致好评,好评率达99%! 为满足不同需求,这个架构课分为初中级和中高级两个阶段,也可根据需要选择学习。 虽说今年的大环境不是很好,但是从拉钩网招聘数据来看,K8s岗位薪资不降反而上涨不少!工作5年,薪资范围普遍 30k~40k 主要还是因为K8s大势所趋,大公司已经完成落地,正在不断迭代,需要这方面人才来支撑,小公司正在为迁移筹备,也需要这方面人才做主导;而K8s又是一个功能强大、生态完善的容器云平台,运维这个平台就需要具备非常强的专业能力,也就是说不是随便找个高级开发或者架构师就能替代该岗位的! 章节目录: 01 开班仪式 【回放】开班仪式:行情分析、内容综述及学习建议(7月28日 21:00-22:30) 02 赠送视频 【录播】搭建一个生产级K8S高可用集群(1)(33分钟) 【录播】搭建一个生产级K8S高可用集群(2)(95分钟) 【录播】搭建一个生产级K8S高可用集群(3)(106分钟) 【录播】搭建一个生产级K8S高可用集群(4)(36分钟) 【录播】Ansible入门(基本使用)(126分钟) 【录播】Ansible入门(Playbook&Roles详解)(147分钟) 03

Istio Helm Chart 详解

匆匆过客 提交于 2020-11-03 13:01:44
这是《Istio Helm Chart 详解》系列的第四篇,对 Gateways Chart 进行一些介绍,并讲解一下使用 Helm 创建 Istio Gateway 的方法。 前言 前面提到过,Istio 的 Helm Chart,除去用于安装之外,还有部分对 Istio 部署进行调整的能力。Gateways 一节内容,就包含了定制 Istio Ingress/Egress Gateway 的能力。 这个 Chart 的文件结构和其他组件类似,不同的在于内容,它通过对 values.yaml 中定义的 Gateways 相关内容的循环遍历,生成不同的 Gateway 单元,下面将会进行讲解和试验。 values.yaml 中的变量定义: gateways: enabled: true istio-ingressgateway: enabled: true labels: app: istio-ingressgateway istio: ingressgateway replicaCount: 1 autoscaleMin: 1 autoscaleMax: 5 resources: {} # limits: # cpu: 100m # memory: 128Mi #requests: # cpu: 1800m # memory: 256Mi cpu:

istio部署-helm

早过忘川 提交于 2020-11-03 11:27:15
参考 istio/istio istio/Kubernetes Customizable Install with Helm Istio安装参数介绍 1. Istio Chart 目录结构 PATH: istio-1.1.7/install/kubernetes/helm 1.1 Chart.yaml Chart 的基础信息文件,其中包含版本号,名称,关键字等元数据信息。 1.2 values-*.yaml 提供 istio 在各种场景下的关键配置范本,范本文件可以作为 helm 的输入文件,对 istio 进行典型定制; 对输入文件改写后,使用 helm template 命令生成最终的部署文件。 1.3 requirements.yaml 用于管理对子 Chart 的依赖关系,其中定义了一系列开关变量‘ 在 helm 的输入内容中对相关变量进行定义,就可以对 istio 的部署文件进行修改,来控制对应组件的启用状态。 1.4 templates 1.4.1 _affinity.tpl 生成一组节点亲和或互斥元素,供各个组件在渲染 yaml 时使用; 在该文件里使用一系列变量,用于控制 istio 组件的节点亲和性,即 istio 在部署时对节点的选择。 定义了两个局部模版: nodeAffinityRequiredDuringScheduling : 会根据全局变量中的

Istio

丶灬走出姿态 提交于 2020-11-03 11:13:41
1,istio 概念 1.2 istio 是什么? 使用云平台可以为组织提供丰富的好处。然而,不可否认的是,采用云可能会给 DevOps 团队带来压力。开发人员必须使用微服务已满足应用的可移植性,同时运营商管理了极其庞大的混合和多云部署。istio允许你连接、保护、控制和观测服务。 在较高的层次上,istio 有助于降低这些部署的复杂性,并减轻开发团队的压力。它是一个完全开源的服务网络,可以透明地分层到现有的分布式应用程序上。它也是一个平台,包括允许它集成到任何日志记录平台、遥测或策略系统的API。istio 的多样化功能集使您能够成功高效地运行分布式微服务架构,并提供保护、连接和监控微服务的统一方法。 1.3 什么是服务网络? 在从单位应用程序向分布式微服务架构的转型过程中,开发人员和运维人员面临诸多挑战,使用 istio 可以解决这些问题。 服务网路(Service Mesh)这个术语通常用于描述构成这些应用程序的微服务网路以及应用之间的交互。随着规模和复杂性的增长,服务网路越来越难以理解和管理。它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求,例如 A/B 测试、金丝雀发布、限流、访问控制和端到端认证等。 istio 提供了一个完整的解决方案,通过为服务网络提供行为洞察和操作控制来满足微服务应用程序的多样化需求。 1.4 为什么要使用

istio部署-istio dashboard

回眸只為那壹抹淺笑 提交于 2020-11-03 11:13:23
参考 fleeto/sleep fleeto/flaskapp 1. istio 配置变更示例 Helm 的 --set 参数可以变更默认配置,如: cd istio-1.1.7 helm template install/kubernetes/helm/istio \ --name istio --namespace istio-system \ --set sidecarInjectorWebhook.enabled=false istio 的 Sidecar 自动注入功能是通过 Kubernetes 的 mutating 控制器完成; 如果启用了自动生效的 istio 安装清单,就会生成1个名为 istio-sidecar-injector 的 mutatingwebhookconfiguration 对象,其中保存的就是自动注入的配置; 根据 Helm 与 Kubernetes 的工作原理,重复执行 kubectl apply 命令不会执行删除操作,因此通过上面操作生成的清单如果被提交,后果就是 mutating 控制器继续使用 istio-sidecar-injector 的配置进行工作; 所以此方式只针对 新增或修改 操作生效,对于 删除操作无效 。 2. 使用 istio dashboard 2.1 启用 Grafana # istion 默认没有启用 grafana

istio1.7.3版本启用ISTIO-CNI后istio-validation无法启动

怎甘沉沦 提交于 2020-11-03 09:08:34
启用ISTIO-CNI后自动注入的POD会启动istio-validation容器用来检测网络是否正常,在为我们公司另外一条业务线的测试环境Setup时发现istio-validation容器无法启动,日志输出: Error connecting to 127.0.0.6:15002: dial tcp 127.0.0.1:0->127.0.0.6:15002: connect: connection refused 各种排查,最后查看系统日志journalctl -ex Nov 02 14:50:30 k8s-worker-03 kubelet[1029]: W1102 14:50:30.291177 1029 cni.go:202] Error validating CNI config list { Nov 02 14:50:30 k8s-worker-03 kubelet[1029]: "name": "cbr0", Nov 02 14:50:30 k8s-worker-03 kubelet[1029]: "cniVersion": "0.3.1", Nov 02 14:50:30 k8s-worker-03 kubelet[1029]: "plugins": [ Nov 02 14:50:30 k8s-worker-03 kubelet[1029]: { Nov 02

云原生之微服务新观

混江龙づ霸主 提交于 2020-10-31 13:52:51
​微服务架构可谓是当前软件开发领域的技术热点,它在各种博客、知识媒体和业界知名会议演讲上的出镜率非常之高,无论是做基础架构还是做业务系统的工程师,对微服务都相当关注,而这个现象与热度已经持续了近5年之久,经久不衰。 然而,随着云原生技术的推广,以及大量的微服务落地,反微服务的声音越发响亮。尤其是在今年3月初,服务网格的著名开源项目 Istio 发布了 1.5 版本,其控制面由原先的多个微服务组件,合并成了一个单体应用,大大简化了其架构与部署运维的复杂性,赢得了满堂喝彩。社区关于微服务模式质疑的声音此起彼伏,也有文章大声呼喊:“ 醒醒,你不是真的需要微服务! ” 那么,在云原生时代,是否需要微服务?什么时候应该采用微服务?微服务究竟能给业务带来哪些好处?如何在不同环境下正确合理地落地微服务?希望读完本文后,每位读者都能在心中有个答案。 微服务是什么 2 014年,Martin Fowler 与 James Lewis 共同提出微服务的概念,定义了微服务架构 是以一组小型服务的方式来开发一个独立的应用系统,每个服务都以一个独立进程的方式运行,每个服务与其他服务使用轻量级(通常是 HTTP )通信机制。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署,同时服务会使用最小规模的集中管理能力,也可以采用不同的编程语言和数据库,实现去中心化的服务管理。 而早在 2005年