当使用ASM管理多个集群时,一个服务的工作负载可能会同时部署在多个集群中。访问服务时,流量默认在多集群之间进行负载均衡。若您希望访问服务时,流量只保持在本集群中,可以使用集群内流量保持功能。以Bookinfo应用为例,本文介绍如何在多集群场景下启用ASM本地集群内流量保持功能。
前提条件
已在同一VPC下创建两个ACK集群(本文以m1c1和m1c2为例)。具体操作,请参见创建Kubernetes专有版集群。
已创建一个ASM实例,且版本为1.15.3.101及以上(本文以mesh1为例)。具体操作,请参见创建ASM实例。
准备工作
步骤一:配置集群的互访联通性
(可选)修改集群的安全组名称
将两个集群对应的安全组名称修改为易于辨识的名称,方便后续配置。本示例安全组名称配置为m1c1-sg和m1c2-sg。
添加安全组访问规则
为两个集群添加安全组访问规则,使集群可以相互访问。在m1c1-sg安全组配置界面,添加以m1c2-sg为授权对象的访问规则;在m1c2-sg安全组规则配置界面,添加以m1c1-sg为授权对象的访问规则。具体操作,请参见添加安全组规则。
步骤二:添加集群到ASM实例并部署集群的入口网关
将两个集群添加到ASM实例后,两个集群已实现访问互通,因此只需为一个集群部署入口网关即可。
将两个集群添加到ASM实例。具体操作,请参见添加集群到ASM实例。
为m1c1集群部署入口网关。具体操作,请参见创建入口网关。
步骤三:在两个集群中分别部署Bookinfo应用
本文以在两个集群中分别部署Bookinfo应用为例,验证ASM集群内流量保持功能。两个集群中服务的区别为m1c1中Reviews组件为v1版本,m1c2中Reviews组件为v2版本,其他保持一致。
使用bookinfo-with-reviews-v1.yaml,在m1c1中部署包含v1版本的Reviews Deployment的Bookinfo应用。具体操作,请参见在ASM实例关联的集群中部署应用。
v1版本的Reviews Deployment在网页的书评区域,将不展示星形评分。
使用bookinfo-with-reviews-v2.yaml,在m1c2中部署包含v2版本的Reviews Deployment的Bookinfo应用。
v2版本的Reviews Deployment在网页的书评区域,将以黑白五角星的形式展示评分。
步骤四:在ASM中创建网关规则、虚拟服务和目标规则
操作步骤
下文以按照服务级别开启集群内流量保持功能为例,将请求Reviews服务的流量保持在本集群。关于按照全局或命名空间开启集群内流量保持功能的具体操作,请参见相关操作。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在基本信息页面的配置信息区域,单击集群内流量保持右侧的编辑。
在配置集群内流量保持服务对话框,打开开启保持集群内流量的能力开关,选中部分服务生效,然后单击选择服务。
在添加服务对话框,选中服务,命名空间选择default,在选择服务区域,选中reviews,单击图标,然后单击确定。
配置完成后,在配置集群内流量保持服务对话框,单击确定。
在配置信息区域,集群内流量保持右侧显示已配置,表明集群内流量保持功能已开启。
验证集群内流量保持功能是否生效。
在浏览器访问http://{入口网关IP}/productpage1,并刷新网页。
您可以看到书评区域始终不显示评分。
在浏览器访问http://{入口网关IP}/productpage2,并刷新网页。
您可以看到书评区域始终只显示包含黑白星形评分。
以上结果表明集群内流量保持功能生效。
结果分析
集群内流量保持功能开启前后,网格中流量的调用链路示意图如下。
类型 | 说明 |
未开启集群内流量保持功能 | 在Bookinfo应用中,Productpage组件会调用Reviews服务以获取书评信息。在浏览器访问http://{入口网关IP}/productpage1时,会访问m1c1集群中的Productpage;在浏览器访问http://{入口网关IP}/productpage2时,会访问m1c2集群中的Productpage。 在m1c1和m1c2两个集群中都存在Reviews服务的工作负载。默认情况下,即使访问某个特定集群(例如m1c1集群中的Productpage),对Reviews服务的请求也会在两个集群之间进行负载均衡。您可以在Productpage页面的书评区域交替看到星形评分信息。 |
已开启集群内流量保持功能 | 访问某个特定集群时(例如m1c1集群中的Productpage),对Reviews服务的请求不会在两个集群之间进行负载均衡。您可以看到在Productpage页面的书评区域始终不显示评分,不会出现交替星形评分信息的情况。 重要 流量保持功能开启后,如果m1c1集群中的Reviews-v1因故障等原因下线,Productpage无法通过访问m1c2集群中的Reviews-v2来提供服务。 |
如果您为一个服务开启了集群内流量保持功能,当其它服务的工作负载访问此服务时,将只能访问到该服务在同集群内的端点。即使该服务在同集群内的端点不可用,访问该服务的流量目标也不会降级到该服务在其它集群的端点。
如果您希望为服务实现集群内流量保持的效果,同时实现流量降级,请参考基于流量规则配置实现流量泳道和流量降级,使用流量规则为不同集群中的服务创建流量泳道并实现流量降级。
相关操作
按照全局开启集群内流量保持功能
在基本信息页面的配置信息区域,单击集群内流量保持右侧的编辑。
在配置集群内流量保持服务对话框,打开开启保持集群内流量的能力开关,选中全部服务生效,然后单击确定。
开启后,集群的流量都将保持在本集群内。
按照命名空间开启集群内流量保持功能
在基本信息页面的配置信息区域,单击集群内流量保持右侧的编辑。
在配置集群内流量保持服务对话框,打开开启保持集群内流量的能力开关,选中部分服务生效,然后单击选择服务。
在添加服务对话框,选中命名空间,在选择服务区域,选中目标命名空间,单击图标,然后单击确定。
在配置集群内流量保持服务对话框,单击确定。
开启后,访问目标命名空间下服务的流量都将保持在本集群内。