【云驻共创】华为云云原生黄金课程11:Istio流量治理与监控管理

举报
liuzhen007 发表于 2022/02/23 09:50:16 2022/02/23
【摘要】 十年云计算浪潮下,DevOps、容器、微服务等技术飞速发展,云原生成为潮流。2020年华为云在业界率先提出了云原生2 .0的理念。云原生2.0是企业智能升级新阶段,企业云化从“ON Cloud”走向“IN Cloud”,成为“新云原生企业”,新生能力与既有能力立而不破、有机协同,实现资源高效、应用敏捷、业务智能、安全可信。同时,微服务流量治理与监控成为了Istio的重要内容之一。

摘要

十年云计算浪潮下,DevOps、容器、微服务等技术飞速发展,云原生成为潮流。2020年华为云在业界率先提出了云原生2 .0的理念。云原生2.0是企业智能升级新阶段,企业云化从“ON Cloud”走向“IN Cloud”,成为“新云原生企业”,新生能力与既有能力立而不破、有机协同,实现资源高效、应用敏捷、业务智能、安全可信。同时,微服务流量治理与监控成为了Istio的重要内容之一。


服务治理介绍

微服务是互联网高速发展以及传统分布式、SOA架构无法适应快速的开发迭代等多重因素共同推动下的产物。微服务雏形(微服务架构概念)最早由Fred George在2012年的一次技术大会上所提出的,拆分SOA服务实现解耦。微服务发扬光大是在2014年,James Lewis 和 Martin Flowler发表了一篇名为《Microservices》的文章。


如下图所示,随着集中式服务根据功能的不同进行拆分后,会出现很多的微服务,那么怎么管理这些微服务呢?这就涉及到服务治理的概念。

服务治理主要针对微服务,那它究竟治理什么?

1. 服务注册和服务发现。由于存在众多的微服务,那么它们之间的注册和发现就是一项重要内容。

2. 服务负载均衡、路由、灰度发布、蓝绿部署。为了保证服务的高可用和健壮性,需要通过多实例部署实现。在服务多实例的管理过程中就会涉及到服务的负载均衡、路由选择,灰度发布以及蓝绿部署等问题。

3. 服务降级、熔断。当某些服务发生异常时,就会触发机制。隔离有问题的服务,降低该服务的可访问级别。

4. 服务限流,最常用的功能之一。

5. 服务监控,包含进程、CPU、请求数、请求时延等。常见的微服务架构有 SpringCloud、Dubbo。



下面介绍一下服务网格与微服务框架流量治理的对比情况:

1. 业务侵入性方面,微服务框架通过 SDK 形式,侵入式开发;服务网格通过 Sidecar 形式,无侵入。

2. 开发语言方面,微服务框架与语言强相关,通常来说,Java 生态支持比较好一些;服务网格与开发语言无关。

3. 灵活性方面,微服务框架属于静态配置,更新配置需要重启;服务网格配置时,非常灵活,可以实现动态配置。

4. 升级方面,微服务框架需要业务开发人员优雅的处理服务升级,具有很大的难度;服务网格实现优雅升级非常简单。


Istio 常用流量治理策略

1. 流量治理策略一:服务注册与发现

服务注册和发现是微服务时代最重要的内容,当注册中心出现问题的时候,整个服务集群就会不可用。如下图所示,众多的微服务都会注册到Kubernetes、Consul、Eureka、ZooKeeper中,通过Pilot实现服务发现,由Envoy提供数据支持。



2. 流量治理策略二:负载均衡

支持负载均衡策略的算法有哪些?常见的算法有加权轮询、最少请求数、环形Hash、随机选择、优先级负载均衡、Locality加权。


Istio的负载均衡策略API主要是通过DestinaRule.TrafficPoliy属性设置,第一种是Simple,类型是SimpleLB(oneof),一种简单的负载均衡策略(ROUND_ROBIN,LEAST——CONN,RANDOM,PASSTHROUGH)。第二种是consistentHash,类型是ConsistentHashLB(oneof),一致性Hash负载均衡算法(支持HTTP Header,HTTP Cookie,源地址,Query Param)。第三种是localityLbSetting,类型是LocalityLoadBalancerSetting,它是基于位置信息的负载均衡。


接下来重点介绍一个第三种负载均衡策略LocalityLoadBalancerSetting,它支持两种模式,第一种是Distribute, 类型是Distribute[],显式的指定跨不同可用域的负载均衡权重。第二种是Failover,类型是Failover[],显式的指定负载均衡故障转移策略,指明当本区域的服务实例变得不健康时,请求转移到哪些区域。


下面介绍一下负载均衡使用说明。


1)simple属性设置方式如下所示:

2)consistentHash属性设置方式如下所示:

3)高级LocalityLoadBalancerSetting属性设置failover的方式如下所示:

4)高级LocalityLoadBalancerSetting属性设置distribute的方式如下所示:

3. 流量治理策略三:路由(流量切分、灰度发布)

路由匹配条件,根据不同条件设置不同的权重。Istio的实现路由治理的API是通过VirtualService.HTTPRoute属性设置,主要有两种方式,第一种是Match,类型是HTTPMatchRequest[],HTTP匹配(uri,header,scheme,method,query param等)第二种是Route,类型是HTTPRouteDestination[],用来指定路由目的端,支持权重设置。


下面介绍路由策略的使用说明。

1)subsets属性设置方式如下所示:

2)http属性设置方式如下所示:

4. 流量治理策略四:熔断、降级


Istio实现服务熔断和降级的API主要是通过ConnectionPoolSettings属性设置实现的,其中包括TCP和HTTP两种模式。TCP模式,类型是TCPSettings,主要作用于TCP连接池设置。HTTP模式,类型是HTTPSettings,作用于HTTP连接池设置。


下面详细介绍一下TCPSettings属性,它包括maxConnections(最大连接数)、connectTimeout(连接超时时间)、tcpKeepAlive(Keepalive设置);HTTPSettings属性包括http1MaxPendingRequests(最大并发请求)、http2MaxRequests(最大并发请求)、maxRequestPerConnection(每条连接最大请求数);OutlierDetection属性包括consecutiveGatewayErrors(连续网管错误502、503、504)、Consecutive5XxErrors(连续5xx错误)、Interval(Eject分析间隔)、baseEjectionTime(最小Eject周期)、maxEjectionPercent(最大Eject百分比)。


下面介绍熔断策略的使用说明。

1)ConnectionPool和OutlierDetection属性设置方式如下所示:


5. 流量治理策略五:故障注入


故障注入可以用来识别系统最薄弱的环节,支持的类型如下:

1) HTTP请求响应延时注入

2) HTTP、gRPC错误码注入

如下图所示,图1设置20%的流量有5s的时延,图2设置10%的流量有500的错误码。

下面介绍故障注入的使用说明。

1)下图对应20%的流量有5s延时的设置情况:


2)下图对应10%的流量有500错误码的设置情况:



6. 流量治理策略六:限流


Istio支持两种限流方式:

1) 中心集中式限流,如下图1所示。

2) 本地限流,直接作用到Envoy,响应速度更快,如下图2所示。



下面介绍限流策略的使用说明,演示本地限流模式的设置方法:


7. 流量治理策略七:失败重试


Istio支持失败重试HTTPRetry,提高系统的Resilience,常用策略之一。Istio实现失败重试的API是HTTPRetry,其中包含的字段有四个,Attempts,类型是int32,表示重试次数、perTryTimeout,类型HTTPSettings,表示每次重试的超时时间、retryOn,类型是string,重试条件(5xx,gateway-error,connect-failure)、retryRemoteLocalities,类型是BoolValue,是否重试到其他地域的Endpoints。


下面介绍失败重试的使用说明,配置方式如下图所示:


Istio 监控介绍

1. Istio可观测性

Istio 以非侵入的方式提供了以下遥测类型:

1) Metrics,基础方式。

2) Distributed Traces,分布式调用链。

3) Access Logs,Istio默认日志访问记录。


2. 监控界面展示

Istio Metrics监控界面:


Istio 分布式调用链监控界面:

Istio 分布式调用链拓扑图:

Istio访问日志:


结尾

本文主要介绍了服务治理的基本概念以及Istio常用的流量治理策略和使用方法,最后还介绍了Istio的监控内容。通过本文的介绍,相信大家对于Istio的流量治理和服务监控有了一定的了解。Istio作为一个连接、安全加固、控制和服务观察的开放平台在云原生时代注定扮演重要的角色。

本文整理自华为云社区【内容共创】活动第13期。

https://bbs.huaweicloud.com/blogs/330939

任务17.华为云云原生黄金课程11:Istio流量治理与监控管理

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200