1、负载均衡算法原理与实战html
负载均衡算法(load balancing algorithm),定义了几种基本的流量分发方式,在Istio中一共有4种标准负载均衡算法。算法
•Round_Robin: 轮询算法,顾名思义请求将会依次发给每个实例,来共同分担全部的请求。cookie
•Random: 随机算法,将全部的请求随机分发给健康的实例网络
•Least_Conn: 最小链接数,在全部健康的实例中任选两个,将请求发给链接数较小的那一个实例。负载均衡
接下来,咱们将根据以上几个算法结合APM(应用性能管理)的监控拓扑图来实战下。dom
·实战环境·curl
华为云开启了Istio服务网格的CCE集群 性能
官方最佳时间Bookinfo应用,而且给Reviews配置了五个实例测试
开通APM测试服务(免费)url
咱们知道若是用户不进行任何配置,负载均衡算法默认是轮询算法,因此咱们现将负载均衡算法设为随机(Random)。
步骤 1
在云容器引擎界面点击应用管理,选择流量治理。
步骤 2
右侧出现拓扑图,在上面的选项栏中选择集群,命名空间,应用。而后点击咱们想配置的组件,这里是 reviews,右侧则会出现流量治理的界面。
步骤 3
在负载均衡算法中,由Round_Robin 改成random。
步骤 4
在左侧导航栏中选择流量治理下面的流量监控,再选择相应的集群,命名空间,应用。多访问几回,或者后台写脚本一直curl productpage,能够从拓扑图中观察数据。
步骤 5
当有流量时,鼠标右键点击reviews组件,选择展开选项这时咱们能够看到全部实例的被分发状况。
实例编号 | 1 | 2 | 3 | 4 | 5 |
访问次数 | 62 | 38 | 39 | 42 | 52 |
其他负载均衡算法基本同样,咱们在步骤上不作赘述,直接展现结果。
轮询算法:
实例编号 | 1 | 2 | 3 | 4 | 5 |
访问次数 | 47 | 47 | 48 | 46 | 47 |
2、会话保持原理与实战
会话保持(Session Affinity)是经过设定的某个指标来计算,将哈希值相同的请求分发至某个固定的实例来处理。如今支持基于HTTP头部设定指标和Cookie键值设定指标。
咱们当前还在轮询算法中,因此全部请求会均匀的分配给全部实例,设置会话保持基于HTTP请求头部,而且设为Cookie。咱们后台curl的请求cookie设为了一个固定值,理论上来说全部的请求都会分发至同一个pod。
咱们依然采用流量监控,展开reviews组件来观察分发状况。
根据图中不难看出,全部的请求都分发至了第二个实例,由于cookie一致因此保持了这个会话连接。
3、故障注入原理与实战
故障注入(Fault Injection)为开发和测试人员主动向系统中引入故障,来观察系统在非正常状态下的行为,是一种可靠性,稳定性的验证手段。Istio也支持了非侵入式的注入故障,分为时延故障和中断故障。
故障注入的步骤大体相同在流量治理页面的下方,选择时延故障,而且输入触发百分比和延时时间。而后再打开productpage 手动刷新几回,能明显感受到延迟有了变化,固然也能够打开F12调试界面,观察网络请求情况,不难发现productpage请求耗时都在2秒上下。
这时候咱们打开流量监控界面观察下发现productpage与reviews受到了明显的影响。红色表示请求状态极差,虚线表示是由时延形成的。
接下来咱们来测试而且使用中断故障,咱们对details配置中断故障,中断返回码设为501。
配置完后,咱们再去手动访问几回productpage来观察下结果。
发现如今的右侧details已经报了error
咱们回到流量监控图,能够看到组件之间的访问状况。在给ratings配置了中断故障后,本来调用ratings组件的reviews组件,已经没法和ratings通讯了。
本文以华为云istio服务结合APM服务为你们演示了流量治理中的主要功能。但愿你们在从此的开发和测试中能够利用istio灵活的非侵入的治理功能提升开发和测试的效率。
相关服务请访问https://support.huaweicloud.com/cce/index.html?cce_helpcenter_2019