千家信息网

idou老师教你学Istio 04:Istio性能及扩展性介

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要
千家信息网最后更新 2025年01月24日idou老师教你学Istio 04:Istio性能及扩展性介

Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要求。从发布以来,Istio官方也在不断的对其性能进行优化增强。同时,Istio控制面的可靠性是Istio用于生产的另一项重要考量标准,自动伸缩扩容,自然是可靠性保证的重要手段。下面我们先从性能测试的角度入手,了解下Istio官方提供的性能测试方法与基准,主要分为以下四个方面展开。

一、函数级别测试

Istio提供了函数级别的性能测试用例,开发者可用更好的有针对性的进行性能优化,这里不做展开,感兴趣的朋友可用参考:

https://raw.githubusercontent.com/istio/istio/release-1.0/mixer/test/perf/singlecheck_test.go

二、端到端测试基准

为了更好的跟踪Istio的性能问题,Istio提供了一个专门用于Isito性能测试的测试工具--Fortio。你可以通过kubernetes集群,轻而易举的将Forito部署起来,测试工具的安装链接如下:

https://github.com/istio/istio/tree/release-1.0/tools#istio-load-testing-user-guide。

下图是测试工具的组织结构图,其中上半部分为Istio服务网格管理的两个服务S1与S2,其中S1服务关掉了mixer上报功能(mixer遥测功能实现方案一直备受争议,业界普遍认为sidecar向mixer上报遥测数据一定程度上损害了sidecar的请求转发能力),请求通过ingressgateway流入系统,再经由sidecar分发到各个服务,是典型的Istio服务访问方式。下半部分为经典的kubernetes集群中的服务访问方式,请求经由k8s的proxy的转发,负载均衡到各个pod。两者的对比也就展示了Istio访问模式与经典模式相比,性能方面的损耗,下面介绍一下Fortio的几个功能点:

a)Fortio是一个快速,小巧,可重复使用,可嵌入的go库以及命令行工具和服务器进程,该服务器包括一个简单的Web UI和结果的图形表示;

b)Fortio也是100%开源的,除了go和gRPC之外没有外部依赖,能够轻松地重现Istio官方性能测试场景也能适应自己想要探索的变体或场景;

c)Fortio以每秒指定的qps对服务进行压测,并记录影响时延的直方图并,计算百分比,平均值,tp99等统计数值。

Fortio在kubernetes中的安装步骤:

kubectl -n fortio run fortio --image=istio/fortio:latest_release --port=8080

kubectl -n fortio expose deployment fortio --target-port=8080 --type=LoadBalancer

三、真实场景下测试基准

Acmeair(又名BluePerf)是一个用Java实现的类似客户的微服务应用程序。此应用程序在WebSphere Liberty上运行,并模拟虚拟航空公司的运营。

Acmeair由以下微服务组成:

a) Flight Service检索航班路线数据。预订服务会调用它来检查奖励操作的里程(Acmeair客户忠诚度计划)。

b) 客户服务存储,更新和检索客户数据。它由Auth服务用于登录和预订服务用于奖励操作。

c) 预订服务存储,更新和检索预订数据。

d) 如果用户/密码有效,Auth服务会生成JWT。

e) 主服务主要包括与其他服务交互的表示层(网页)。这允许用户通过浏览器直接与应用程序交互,但在负载测试期间不会执行此操作。

这个模拟航空公司的运营系统demo,能够更好的模拟在实际生产环境中的Istio应用,感兴趣的朋友可用到如下链接了解一下:https://github.com/blueperf

四、每日构建自动化测试结果

Istio与IBM会对Istio的每日构建版本进行性能测试,并将测试结果公布出来,供大家参考。自动化测试包括端对端用例fortio以及应用级别bluePerf的性能测试结果。对Isito性能感兴趣,但没有时间精力进行性能测试的朋友,可以关注一下官方的每日性能测试结果,跟踪Istio性能优化的最新进展。

● https://fortio-daily.istio.io/

● https://ibmcloud-perf.istio.io/regpatrol/

这里,我们一起来看下IBM的性能测试结果,并进行一下分析。

IBM的性能测试对比主要包括三部分,第一部分是各个Release版本之间的性能比较,其中列出了0.6.0,0.7.1,0.8.0版本的性能测试情况,这里的指标数据是qps,可以看到,前三个版本之间的数据十分相近,没有比较大的提升,且Istio与IngressOnly之间的对比可以看出,Istio造成了相当大的性能损耗,大约只能达到无Istio时百分之三十多的qps,可见,性能方面Istio还需要进一步优化。

RowRelease(A)Istio Full(B) No Mixer(C) Ingress Only(A)/(C) %(B)/(C) %
10.6.013071987380434.452.2
20.7.112942050367135.255.8
30.8.013352222370836.059.9

第二部分是当前release每日构建版本的性能情况,可以对比出每天的修改对性能方面的影响,这里我们列出一部分,更详细的信息大家可以到相应链接中查看,可以看到近期每日构建版本相较于1.0基线版本,有了一定的提升。

最后一部分是master分支的每日构建性能测试结果。可以看到,最新的master分支的性能测试结果,相较基线版本已经有了较大的提升,但是QPS损耗严重的问题依然存在,同时,千级别的QPS也不能真正满足生产需求,我们期待Istio的发展与进步。

五、Isito的可靠性与可扩展性

对控制面各组件的作用作用及故障影响进行了汇总,结果如下:

组件作用及故障影响
istio-ingressgateway对外流量入口,该组件挂掉将导致整个应用服务无法从外部访问,建议设置多实例,增强可靠性
istio-telemetry Mixer相关组件,用于采集envoy上报的遥测数据,该组件挂掉将导致各监控运维插件无法采集到数据,同时,该组件在高并发情境下,会承受较大负荷,建议设置为多实例,增强可靠性
istio-policy Mixer相关组件,用于与envoy交互,check需要上报的数据,确定缓存内容,挂掉会影响check相关功能
istio-pilot控制sidecar中envoy的启动与参数配置,即流量规则实际下发者,挂掉将会导致新策略配置失效
istio-sidecar-injector用于实现sidecar自动注入功能,挂掉将会导致sidecar无法自动注入,同时,若注入策略设置为必须注入(policy为Fail),则会导致新creating的pod无法启动
istio-citadel用于安全相关功能,挂掉则会导致认证,安全相关功能失效

a) 考量到Istio控制面的可靠性,以及对资源的有效利用,建议将重要组件设置为多实例,包括:

● ingressgateway:作为外部流量入口,服务网格管理的所有服务的对外流量,都要经过gateway才能进入到服务网格内部,与业务逻辑强相关,建议配置为多实例;

● mixer:遥测数据的搜集端,用于汇总服务网格内所有服务上报的日志、监控数据,处理数据量巨大,建议设置为多实例,并给予更多资源配置;

● 其他控制面组件运行压力并不大,可根据需要自行调整实例数。

b) 容器自动扩缩容,Istio为主要组件gateway,pilot与mixer设置了自动扩缩容策略,且策略可以在安装时配置,我们以pilot为例看一下其自动扩缩容配置,以CPU占用率55%作为阈值,进行pod实例数的扩缩容侧率:

c) 高可用(HA),可根据需要,为Istio控制面组件设置亲和性策略,使相同控制面组件的多个不同pod运行不同node上,确保Istio控制面的高可用状态,下面以pilot为例,Istio为其增加了节点反亲和策略,使pod尽可能不运行在相同架构操作系统的节点上,大家可根据需要,自行增加亲和与反亲和策略。

d) 健康检查,Istio也为控制面组件配置了健康检查策略,以保证控制面组件异常时,k8s能够将其重新拉起,同样以sidecarinjector为例,设置了启动健康检查readinessProbe与运行时健康检查livenessProbe,以确保容器正常运行:

六、总结

再次说明一下,性能与可靠性是Istio生产可用至关重要的一环,功能方面Istio已经做的十分强大,并在不断的完善发展中,但在性能与可靠性方面,Istio还有很长的路要走。其中微服务sidecar的路由转发与mixer遥测功能对请求时延的影响,是摆在Istio性能提升前面的两道障碍,我们共同努力,共同关注,望Istio早日成熟,发展壮大,扬帆起航。

性能 服务 测试 组件 数据 结果 控制 功能 可靠性 版本 策略 应用 实例 影响 配置 方面 运行 官方 建议 检查 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何在网页上面显示服务器时间 下列哪一列不属于网络安全法 数据库类别代码是什么 监理怎么样与工业网络技术结合 安徽省暨合肥市网络安全展馆 微店网络技术有限公司 流媒体存储服务器 监控 长宁区无线网络技术有哪些 企业网的组建及网络安全研究 皇姑分局网络安全保卫大队 基层科普网络技术 华科网络安全研究生就业前景 山东省网络技术职业学院 网络安全硬件哪种好 如何查看服务器ssh地址 隐形网络安全 服务器上有蓝牙功能吗 网络安全管理局 英文 以最大力度保障网络安全畅通 我的世界像素文明社会模拟服务器 一些新兴的互联网科技 涉密软件开发资质公司 沈阳排队网络技术有限公司 软件开发的流程自考题 怎么保障自己网络安全 产品的软件开发材料 网络安全协会职责 无法打开服务器控制管理器 淮安市力创互联网科技产业园 上海特种网络技术服务优势
0