前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Istio流量治理原理之负载均衡

Istio流量治理原理之负载均衡

原创
作者头像
用户5766560
修改2019-07-05 18:53:19
2.2K0
修改2019-07-05 18:53:19

流量治理是一个非常宽泛的话题,例如:

  • 动态修改服务间访问的负载均衡策略,比如根据某个请求特征做会话保持;
  • 同一个服务有两个版本在线,将一部分流量切到某个版本上;
  • 对服务进行保护,例如限制并发连接数、限制请求数、隔离故障服务实例等;
  • 动态修改服务中的内容,或者模拟一个服务运行故障等。

在Istio中实现这些服务治理功能时无须修改任何应用的代码。较之微服务的SDK方式,Istio以一种更轻便、透明的方式向用户提供了这些功能。用户可以用自己喜欢的任意语言和框架进行开发,专注于自己的业务,完全不用嵌入任何治理逻辑。只要应用运行在Istio的基础设施上,就可以使用这些治理能力。

一句话总结Istio流量治理的目标:以基础设施的方式提供给用户非侵入的流量治理能力,用户只需关注自己的业务逻辑开发,无须关注服务访问管理。

Istio流量治理的概要流程如图1所示:

图1  Istio流量治理的概要流程

在控制面会经过如下流程: (1)管理员通过命令行或者API创建流量规则; (2)Pilot将流量规则转换为Envoy的标准格式; (3)Pilot将规则下发给Envoy。

在数据面会经过如下流程: (1)Envoy拦截Pod上本地容器的Inbound流量和Outbound流量; (2)在流量经过Envoy时执行对应的流量规则,对流量进行治理。

负载均衡

下面具体看看Istio提供了流量治理中的负载均衡功能。

负载均衡从严格意义上讲不应该算治理能力,因为它只做了服务间互访的基础工作,在服务调用方使用一个服务名发起访问的时候能找到一个合适的后端,把流量导过去。

如图2所示,传统的负载均衡一般是在服务端提供的,例如用浏览器或者手机访问一个Web网站时,一般在网站入口处有一个负载均衡器来做请求的汇聚和转发。服务的虚拟IP和后端实例一般是通过静态配置文件维护的,负载均衡器通过健康检查保证客户端的请求被路由到健康的后端实例上。

图2  服务端的负载均衡器

在微服务场景下,负载均衡一般和服务发现配合使用,每个服务都有多个对等的服务实例,需要有一种机制将请求的服务名解析到服务实例地址上。服务发现负责从服务名中解析一组服务实例的列表,负载均衡负责从中选择一个实例。

如图3所示为服务发现和负载均衡的工作流程。不管是SDK的微服务架构,还是Istio这样的Service Mesh架构,服务发现和负载均衡的工作流程都是类似的,如下所述: (1)服务注册。各服务将服务名和服务实例的对应信息注册到服务注册中心。 (2)服务发现。在客户端发起服务访问时,以同步或者异步的方式从服务注册中心获取服务对应的实例列表。 (3)负载均衡。根据配置的负载均衡算法从实例列表中选择一个服务实例。

图3  服务发现和负载均衡的工作流程

Istio的负载均衡正是其中的一个具体应用。在Istio中,Pilot负责维护服务发现数据。如图4所示为Istio负载均衡的流程,Pilot将服务发现数据通过Envoy的标准接口下发给数据面Envoy,Envoy则根据配置的负载均衡策略选择一个实例转发请求。Istio当前支持的主要负载均衡算法包括:轮询、随机和最小连接数算法。

图4  Istio负载均衡的流程

在Kubernetes上支持Service的重要组件Kube-proxy,实际上也是运行在工作节点的一个网络代理和负载均衡器,它实现了Service模型,默认通过轮询等方式把Service访问转发到后端实例Pod上,如图5所示。

图5  Kubernetes的负载均衡

本篇内容节选及改编自《云原生服务网格Istio:原理、实战、架构与源码解析》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 负载均衡
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档