首页 > 其他分享 >自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

时间:2023-05-31 09:13:05浏览次数:53  
标签:OneMore Request Istio 流量 如下 reviews 点击 Kiali 页面

在生产环境中,直接登录服务器是非常不方便的,我们可以使用Kiali配置Istio的流量管理。

本文以Istio官方提供的Bookinfo应用示例为例,使用Kiali配置Istio的流量管理。Bookinfo应用的架构图如下:

微信搜索:万猫学社,关注后回复「ebook」得12本必读技术书籍。

其中,包含四个单独的微服务:

  • productpage:调用 detailsreviews 两个服务,用来生成页面。
  • details:包含了书籍的信息。
  • reviews:包含了书籍相关的评论。它还会调用 ratings 微服务。
  • rating:包含了由书籍评价组成的评级信息。

其中,reviews 服务有 3 个版本:

  • v1 版本不会调用 ratings 服务。
  • v2 版本会调用 ratings 服务,并使用 1 到 5 个黑色星形图标来显示评分信息。
  • v3 版本会调用 ratings 服务,并使用 1 到 5 个红色星形图标来显示评分信息。

创建路由规则

目标:把reviews 服务的所有流量都路由到v1版本

进入reviews 服务的Services页面,点击“Actions”后,点击“Request Routing”,如下图:

在“Create Request Routing”的弹窗中,选择“Route To”标签页,把reviews-v1的权重调节到100%,如下图:

点击“Add Rule”按钮,会添加一个针对所有请求的路由规则,如下图:

点击“Create”按钮,对应的虚拟服务(Virtual Service)和目标规则(DestinationRule)就创建好了,如下图:

访问几次productpage页面,可以看到一直是没有星形图标的页面,如下图:

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

基于用户身份的路由

目标:来自名为 OneMore 的用户的所有流量都路由到v2版本。

Istio 对用户身份没有任何特殊的内置机制。事实上,productpage服务在所有到 reviews 服务的 HTTP 请求中都增加了一个自定义的 end-user 请求头,其值为用户名。

仍然进入reviews 服务的Services页面,点击“Actions”后,点击“Request Routing”。

在“Update Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

选择“Route To”标签页,把reviews-v2的权重调节到100%,如下图:

点击“Add Rule”按钮,会添加一个路由规则,如下图:

看到了如下的错误信息:

Match 'Any request' is defined in a previous rule. This rule is not accessible.

我们把这个路由规则的优先级调高一下:

调整后,没有错误信息了,点击“Update”。使用 OneMore 登录后,访问productpage页面,可以看到使用黑色星形图标来显示评分信息的页面,如下图:

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

注入 HTTP 延迟故障

目标:用户 OneMore 访问时, ratings 服务注入一个 7 秒的延迟,productpage页面在大约 7 秒钟加载完成并且没有错误。

进入ratings 服务的Services页面,点击“Actions”后,点击“Request Routing”。

在“Create Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

选择“Fault Injection”标签页,开启“Add HTTP Delay”,修改“Fixed Delay”为7s,如下图:

点击“Add Rule”按钮,会添加一个路由规则,如下图:

点击“Create”按钮,对应的虚拟服务(Virtual Service)和目标规则(DestinationRule)就创建好了,如下图:

使用 OneMore 登录后,访问productpage页面,如下图:

没有达到我们预期的结果,出现了一个问题:Reviews 部分显示了错误消息:

Sorry, product reviews are currently unavailable for this book.

并且productpage页面加载实际上用了大约 6s。

查看代码后,发现了一个 bug。微服务中有硬编码超时,导致 reviews 服务失败。

按照预期,我们引入的 7 秒延迟不会影响到 reviews 服务,因为 reviewsratings 服务间的超时被硬编码为 10 秒。
但是,在 productpagereviews 服务之间也有一个 3 秒的硬编码的超时,再加 1 次重试,一共 6 秒。
结果,productpagereviews 的调用在 6 秒后提前超时并抛出错误了。

我们把延迟修改为2s,再尝试一下,才得到了我们预期的结果:大约 2 秒钟加载完成并且没有错误,如下图:

注入 HTTP 中止故障

目标:用户 OneMore 访问时, ratings 服务注入一个中止故障,productpage 页面能够立即被加载,同时显示 “Ratings service is currently unavailable” 这样的消息。

进入ratings 服务的Services页面,点击“Actions”后,点击“Request Routing”。

先把上个例子的路由规则删除,否则报“A Rule with same matching criteria is already added.”的错误。

在“Update Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

选择“Fault Injection”标签页,开启“Add HTTP Abort”,修改“HTTP Status Code”为500,如下图:

点击“Add Rule”按钮,会添加一个路由规则,如下图:

点击“Update”。使用 OneMore 登录后,访问productpage页面,如下图:

达到了我们预期的效果。

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

设置请求超时

首先,用户 OneMore 访问时, ratings 服务注入一个 2 秒的延迟,productpage页面在大约 2 秒钟加载完成并且没有错误。

按照上文注入 HTTP 延迟故障进行操作,不再赘述,效果如下:

目标:用户 OneMore 访问时, reviews 服务的请求超时设置为 0.5 秒,同时显示 “Sorry, product reviews are currently unavailable for this book.” 这样的消息。

进入reviews 服务的Services页面,点击“Actions”后,点击“Request Routing”。

在“Update Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

选择“Route To”标签页,把reviews-v2的权重调节到100%,如下图:

选择“Request Timeouts”标签页,开启“Add HTTP Timeout”,修改“Timeout”为0.5s,如下图:

点击“Add Rule”按钮,会添加一个路由规则,如下图:

看到了如下的错误信息:

Match 'Any request' is defined in a previous rule. This rule is not accessible.

我们把这个路由规则的优先级调高一下:

调整后,没有错误信息了,点击“Update”。使用 OneMore 登录后,访问productpage页面如下图:

可是显示了预期的错误信息,但是访问页面却用了1秒钟,这是为什么呢?
这是因为 productpage 服务中存在硬编码重试,它在返回页面之前调用 reviews 服务超时两次。

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

设置请求重试

首先,用户 OneMore 访问时, ratings 服务注入一个 2 秒的延迟,productpage页面在大约 2 秒钟加载完成并且没有错误。

按照上文注入 HTTP 延迟故障进行操作,不再赘述,效果如下:

目标:用户 OneMore 访问时, reviews 服务的请求重试次数为2次,重试超时时间为 0.5 秒,同时显示 “Sorry, product reviews are currently unavailable for this book.” 这样的错误消息。

进入reviews 服务的Services页面,点击“Actions”后,点击“Request Routing”。

在“Update Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

选择“Route To”标签页,把reviews-v2的权重调节到100%,如下图:

选择“Request Timeouts”标签页,开启“Add HTTP Retry”,修改“Attempts”为2,修改“Per Try Timeout”为0.5s,如下图:

点击“Add Rule”按钮,会添加一个路由规则,如下图:

看到了如下的错误信息:

Match 'Any request' is defined in a previous rule. This rule is not accessible.

我们把这个路由规则的优先级调高一下:

调整后,没有错误信息了,点击“Update”。使用 OneMore 登录后,访问productpage页面如下图:

可是显示了预期的错误信息,但是访问页面却用了3秒钟,这是为什么呢?
还是因为 productpage 服务中存在硬编码重试,它在返回页面之前调用 reviews 服务超时两次。

感谢你这么帅,还给我点赞

微信公众号:万猫学社

微信扫描二维码

关注后回复「电子书」

获取12本Java必读技术书籍

标签:OneMore,Request,Istio,流量,如下,reviews,点击,Kiali,页面
From: https://www.cnblogs.com/heihaozi/p/17445069.html

相关文章

  • 手摸手带你 在Windows系统中安装Istio
    Istio简介通过负载均衡、服务间的身份验证、监控等方法,Istio可以轻松地创建一个已经部署了服务的网络,而服务的代码只需很少更改甚至无需更改。通过在整个环境中部署一个特殊的sidecar代理为服务添加Istio的支持,而代理会拦截微服务之间的所有网络通信,然后使用其控制平面的功......
  • 通过operator部署istio
    1.下载安装包https://github.com/istio/istio/releases/download2.解压tarxvfistio-1.17.2-linux-amd64.tar.gzmvistio-1.17.2/bin/istioctl/usr/local/bin验证:istioctlversion3.安装isto的operatoristiooperatorinit4.安装istio istioctlmanifestapply-f......
  • Isito 入门:为什么学 Istio、Istio 是什么
    1,Istio概述......
  • 网易面经:深剖TCP协议的流量控制和拥塞控制,你懂了吗?
    TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。TCP提供全双工通信、数据可靠传输和拥塞控制等功能,适用于因特网等应用场景。TCP位于OSI七层协议模型的网络层,与用户数据报协议(UDP)一起构成了传输层协议。T......
  • 读<Wireshark数据包分析实战-第3版>之流量分类
    目录广播流量广播流量在各个网络层的地址是?对广播地址一直发送数据包,会导致整个局域网网络堵塞吗?组播流量单播流量广播流量广播流量是指在计算机网络中,发送者将数据包(通常是单播)传输给局域网内所有设备的通信方式。广播流量数据包具有特殊的目标地址,即“广播地址”,这使得接收......
  • istio ingress gataway
    在kubernetes中,kubernetesingressresource常用来指定应该暴露给集群外部服务,在一个istio中,最好的办法就是使用不同配置模型,也就是istiogateway,一个gateway允许istio的功能,比如监控和路由规则去应用到进入集群的流量。 1.准备工作[root@k8s-master01httpbin]#kubectlapp......
  • 超低功耗段码LCD液晶显示屏驱动IC-VKL144A/B QFN48 超小体积封装,可完全替代PCF8551适
    VKL144A/B概述:VKL144A/B是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。QT921功能特点......
  • 2022-2023年的jlu.test,和校园网出口的流量备忘
    2022年8月疫情结束,学生开学,jlu.test流量升高;2023年12月疫情放开,学生提前离校流量下降;2023年2月学生开始返校;2023年4月末除了南岭校区,其他校区的流量都切换到本地。2022年下半年的几次封校,流量出现陡增。今年流量比较正常,5月1日放假,流量下降不少。     20220325出......
  • 开发者们:618电商团战即将开启,“抢流量”想上分,必备这三个大招 | MobTech观察
    最卷的一届“618”大促即将来袭。5月23日晚间开始,各平台陆续对外启动预售。在消费领域加速复苏,全国各地迎来“拼经济”热潮的背景下,各平台纷纷对外喊话,将打造“史上投入最大”的一届“618”。电商平台们想借年中大促漂漂亮亮地打一场“翻身仗”,却发现这场仗并不好打。据万得(Wind)数......
  • Vnstat 流量监控器
    概述:vnstat是一个基于控制台的网络流量监控器。它保存了所选接口的每小时、每天和每月的网络流量日志。然而,它并不是一个数据包嗅探器,而是从proc(5)或sys文件系统中读取流量信息。流量信息是从proc(5)或sys文件系统中读取的,具体取决于是否可用。这样一来,即使没有root权限也可以在......