(可能不是原创)Redhat 提供 Istio 在线交互式教学
Posted 伪架构师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(可能不是原创)Redhat 提供 Istio 在线交互式教学相关的知识,希望对你有一定的参考价值。
Redhat 新近为用户提供了 Istio 的交互式学习工具,基于 Openshift 和最新的 Istio 0.6,试用了一下,主要有三个方面让我非常满意:
无需注册即可使用。
不受国内网络限制。
精心调校的示例应用和相关规则。
以上优点让这一工具的运行非常流畅,能够完整、直观并快速的为用户提供一个对于 Istio 的第一印象。下面用著名的老大难问题——断路器的课程,来看看这一教学工具的好处。
首先进入系列教程的首页。页面上排布了一系列的 Service Mesh 相关教程,分别是一个直通教程,外加八个 Workshop 环节,这里我们用第七个,也就是断路器的 Workshop 来看看这一教程的使用过程。
启动服务
进入首页之后,点击醒目的红色按钮,进入场景。会看到三栏式的页面:
左侧为教程区域:注意这里深色背景的文字,点击后是会作为命令输出到 Shell 中进行执行的。
右上角为文件浏览区:点击文件名称,会打开文件内容浏览区域。
右下角是交互式 Shell
点击左侧教程区域的文字,./install-microservices.sh
,或者在 Shell 中直接输入,两种方式的结果是一样的,会在当前集群中下载、构建并启动微服务。
服务启动之后,可以使用oc get pods -w
查看 Pod 运行情况,所有 Pod 成功启动之后,就可以跟进教程的curl
指令验证启动服务的输出了。
安装 Siege
这一步骤安装 Siege 工具,用于后续的负载省城工作。
根据最大连接以及排队请求情况进行熔断
第一步首先创建了一个路由规则,这一规则在服务recommandation
的 v1 和 v2 版本间进行 1:1 的流量分配。
然后使用siege -r 2 -c 20 -v
,也就是一共20
并发,每并发两次请求的方式对服务进行测试。应该会得到这样的结果:
Transactions: 40 hits
Availability: 100.00 %
Elapsed time: 15.45 secs
Data transferred: 0.00 MB
Response time: 4.62 secs
Transaction rate: 2.59 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 11.95Successful transactions: 40
接下来会创建一个熔断规则,其中的文件链接点击会出现规则的文本,声明了针对v2
服务的熔断规则,下面节选关键内容:
maxConnections: 1 # 最大连接数
httpMaxPendingRequests: 1 # 最大排队数
sleepWindow: 2m # 休眠窗口
httpDetectionInterval: 1s # 采样频率
httpMaxEjectionPercent: 100 # 最大熔断比例,此处为 100%
httpConsecutiveErrors: 1 # 最大错误数量
httpMaxRequestsPerConnection: 1 # 每连接最大请求
在规则中可以看到这一服务的要求变得非常脆弱,不能出错、不能并发,每秒钟都会进行检查。
使用 Siege 重复测试,会发现大量的 503 返回,也就是针对v2
服务的熔断措施生效了。
Pod 的排除操作
第四节模拟了断路器从负载均衡池中剔除故障 Pod 的情景:
给
v1
和v2
两个版本的服务都加入同样的熔断设置。模拟
v2
的故障情况。会发现重新测试,
v2
出现一次故障之后,就被排除在响应列表之外了。
加入重试操作
在上一节的基础上,又加入一个重试操作:
httpReqRetries:
simpleRetry:
perTryTimeout: 1s # 一秒钟超时
attempts: 3 # 重试三次
这样就很符合我们日常服务过程中的策略设置了:如果服务中部分实例发生故障,则停止向其发送请求,转而向同一服务的其他健康实例重发请求。
结语
根据这个例子可以看出,这一交互课程不仅涵盖了 Istio 官方文档中的 Task 内容,同时还加入了更加接近实战要求的丰富规则,应该会对 Istio/Service Mesh 普及产生非常有力推动。
链接: https://learn.openshift.com/servicemesh
点击原文链接进入网站
以上是关于(可能不是原创)Redhat 提供 Istio 在线交互式教学的主要内容,如果未能解决你的问题,请参考以下文章
Istio 迎来版本 1.0:一种开源的 Service Mesh
Istio Service Mesh 教程——一文了解 Istio 全部功能,示例见 GitHub