迁移工具用于将AHAS侧应用的流控规则,隔离规则以及熔断规则(不包含默认熔断规则)迁移到MSE侧,其他规则建议手动迁移,支持按照命名空间或者应用维度进行迁移。
前置条件
开通MSE微服务治理企业版,请参见微服务治理企业版。
待迁移规则的AHAS应用已经接入MSE侧,且在MSE侧应用名与AHAS侧相同,可参见AHAS应用迁移至MSE(Agent 接入方式)或AHAS应用迁移至MSE(SDK 接入方式)中的应用接入部分。
限制条件
规则支持:迁移工具仅支持普通应用的流控规则,隔离规则以及熔断规则(不包含默认熔断规则)的复制,网关应用以及其他类型的规则需通过手动方式迁移。AHAS侧与MSE侧规则类型对应关系如表所示。
AHAS | MSE |
流控规则 | |
隔离规则 | |
熔断规则 | |
热点规则 | |
Web 防护规则 | |
网关防护规则(不针对请求属性) | |
网关防护规则(针对请求属性) |
地域支持:AHAS开服的地域均支持同地域的规则复制,其中公网地域由于其特殊性仅支持迁移至MSE杭州地域。
准备工作
使用规则复制工具的账号需包含MSE侧待迁移应用或命名空间的流量防护相关接口调用权限以及AHAS侧读权限。其中{mseNameapce}需要替换为MSE侧命名空间或者用*表示全部。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "ahas:*",
"Resource": "*",
"Condition": {
"StringNotLike": {
"Action": [
"ahas:CheckAppAuth",
"ahas:*Delete*",
"ahas:*Add*",
"ahas:*Edit*",
"ahas:*Update*",
"ahas:Sentinel*New",
"ahas:Sentinel*Edit",
"ahas:Sentinel*On",
"ahas:Sentinel*Off",
"ahas:Sentinel*Batch",
"ahas:*Create*"
]
}
}
},
{
"Effect": "Allow",
"Action": "ahas:CheckAppAuth",
"Resource": "acs:ahas:*:*:namespace/*/application/*"
},
{
"Effect": "Allow",
"Action": "mse:QueryNamespace",
"Resource": "acs:mse:*:*:*"
},
{
"Effect": "Allow",
"Action": "mse:GetApplicationList",
"Resource": "acs:mse:*:*:namespace/{mseNameapce}"
},
{
"Effect": "Allow",
"Action": [
"mse:List*Rules",
"mse:Delete*Rules",
"mse:Create*Rule",
"mse:ListSentinelBlockFallbackDefinitions",
"mse:DeleteSentinelBlockFallbackDefinition",
"mse:CreateSentinelBlockFallbackDefinition",
"mse:BindSentinelBlockFallbackDefinition"
],
"Resource": "acs:mse:*:*:namespace/{mseNameapce}/application/*"
}
]
}
工具使用说明
规则复制接口通过OpenAPI的形式对外开放,具体的调用方式请参见阿里云OpenAPI门户,下面以在线调试为例。在OpenAPI门户搜索接口CopySentinelRuleFromAhas,入参描述如下。
名称 | 类型 | 必填 | 描述 | 示例值 |
Namespace | string | 是 | MSE侧应用命名空间 | default |
AppName | string | 否 | 应用名称, MSE侧和AHAS侧需保持一致 | AppName |
AhasNamespace | string | 是 | AHAS侧应用命名空间 | default |
IsAHASPublicRegion | boolean | 否 | AHAS侧是否为公网Region | false |
请求示例
描述 | Namespace | AhasNamespace | AppName | IsAHASPublicRegion |
复制杭州地域 AHAS test-ahas 命名空间下的 testApp 应用的规则到杭州地域 MSE test-mse 命名空间下 testApp 应用 | test-mse | test-ahas | testApp | false |
复制公网地域 AHAS test-ahas 命名空间下的所有应用的规则到杭州地域 MSE test-mse 命名空间下的对应应用 | test-mse | test-ahas | - | true |
迁移工具输出信息
迁移工具以MSE侧的应用为准,基于应用名获取在AHAS侧的对应应用信息进行复制。迁移工具接口会返回步骤信息以及异常信息,您需要关注异常信息并按照提示进行手动修正。
步骤信息
每个应用迁移时的步骤信息输出如下,每个应用的处理包含以下步骤。
清理MSE侧行为以及规则。
复制AHA侧行为到MSE侧。
复制AHAS侧规则到MSE侧,并完成行为绑定。
"StepRecord": [
"完成MSE侧应用查询,共 2 个应用",
"开始删除 MSE 侧应用的行为 test-mse:testAppA ",
"完成删除 MSE 侧应用的行为 test-mse:testAppA count: 0",
"开始删除 MSE 侧应用的流控规则 test-mse:testAppA",
"完成删除 MSE 应用的流控规则 test-mse:testAppA count: 0",
"开始删除 MSE 侧应用的隔离规则 test-mse:testAppA",
"完成删除 MSE 侧应用的隔离规则 test-mse:testAppA count: 0",
"开始删除 MSE 侧应用的熔断规则 test-mse:testAppA",
"完成删除 MSE 侧应用的熔断规则 test-mse:testAppA count: 0",
"开始 AHAS prod:testAppA -> MSE test-mse:testAppA 应用的自定义行为迁移",
"完成 MSE 侧行为的创建 success count: 4 fail count: 2",
"开始 AHAS prod:testAppA -> MSE test-mse:testAppA 应用的流控规则迁移",
"完成 AHAS prod:testAppA -> MSE test-mse:testAppA 应用的流控规则迁移。AHAS 侧总规则数: 14 ;成功迁移的规则数: 7 ;完成迁移但存在异常的规则数: 2 ;迁移失败的规则数: 5",
"开始 AHAS prod:testAppA -> MSE test-mse:testAppA 应用的隔离规则迁移",
"完成 AHAS prod:testAppA -> MSE test-mse:testAppA 应用的隔离规则迁移。AHAS 侧总规则数: 3 ;成功迁移的规则数: 1 ;完成迁移但存在异常的规则数: 0 ;迁移失败的规则数: 2",
"开始 AHAS prod:testAppA -> MSE test-mse:testAppA 应用的熔断规则迁移",
"完成 AHAS prod:testAppA -> MSE test-mse:testAppA 应用的熔断规则迁移。AHAS 侧总规则数: 6 ;成功迁移的规则数: 3 ;完成迁移但存在异常的规则数: 3 ;迁移失败的规则数: 0",
"开始删除 MSE 侧应用的行为 test-mse:testAppB ",
"完成删除 MSE 侧应用的行为 test-mse:testAppB count: 0",
"开始删除 MSE 侧应用的流控规则 test-mse:testAppB",
"完成删除 MSE 应用的流控规则 test-mse:testAppB count: 0",
"开始删除 MSE 侧应用的隔离规则 test-mse:testAppB",
"完成删除 MSE 侧应用的隔离规则 test-mse:testAppB count: 0",
"开始删除 MSE 侧应用的熔断规则 test-mse:testAppB",
"完成删除 MSE 侧应用的熔断规则 test-mse:testAppB count: 0",
"开始 AHAS prod:testAppB -> MSE test-mse:testAppB 应用的自定义行为迁移",
"完成 MSE 侧行为的创建 success count: 0 fail count: 1",
"开始 AHAS prod:testAppB -> MSE test-mse:testAppB 应用的流控规则迁移",
"完成 AHAS prod:testAppB -> MSE test-mse:testAppB 应用的流控规则迁移。AHAS 侧总规则数: 1 ;成功迁移的规则数: 1 ;完成迁移但存在异常的规则数: 0 ;迁移失败的规则数: 0",
"开始 AHAS prod:testAppB -> MSE test-mse:testAppB 应用的隔离规则迁移",
"完成 AHAS prod:testAppB -> MSE test-mse:testAppB 应用的隔离规则迁移。AHAS 侧总规则数: 0 ;成功迁移的规则数: 0 ;完成迁移但存在异常的规则数: 0 ;迁移失败的规则数: 0",
"开始 AHAS prod:testAppB -> MSE test-mse:testAppB 应用的熔断规则迁移",
"完成 AHAS prod:testAppB -> MSE test-mse:testAppB 应用的熔断规则迁移。AHAS 侧总规则数: 0 ;成功迁移的规则数: 0 ;完成迁移但存在异常的规则数: 0 ;迁移失败的规则数: 0"
]
异常信息
在应用或命名空间的所有应用完成迁移后,迁移工具会输出三类异常信息,您需要关注并按照提示进行手动修正。
应用迁移异常信息
输出存在迁移异常的应用,主要分为两类:
删除XXX失败:该类错误会导致该应用停止迁移,请提交工单联系我们。
应用存在部分XXX迁移异常/失败:该类错误表示应用整体完成迁移,部分内容迁移存在异常,需要查看后续的行为迁移失败信息或是规则迁移异常信息,并根据提示进行手动修正。
"AppFailedRecord": [
"Fail to copy rule. MSE appName: test-mse:testAppA failed. Msg: 应用存在部分行为迁移失败,具体原因请查看行为迁移失败信息",
"Fail to copy rule. MSE appName: test-mse:testAppA failed. Msg: 应用存在部分流控规则迁移异常,具体原因请查看规则迁移异常信息",
"Fail to copy rule. MSE appName: test-mse:testAppA failed. Msg: 应用存在部分隔离规则迁移异常,具体原因请查看规则迁移异常信息",
"Fail to copy rule. MSE appName: test-mse:testAppA failed. Msg: 应用存在部分熔断规则迁移失败,具体原因请查看规则迁移失败信息",
"Fail to copy rule. MSE appName: test-mse:testAppB failed. Msg: 应用存在部分行为迁移失败,具体原因请查看行为迁移失败信息"
]
行为迁移失败信息
MSE侧的自定义行为目前不支持跳转到指定页面的方式,对于使用该类行为请您使用其他类型行为替代。
"FallbackFailedRecord": [
"Fail to copy fallback. AHASApp test-ahas:testAppA failed. AHAS FallbackName: RPC缓存实例自动探测 Msg: 返回类型获取方式不支持自动探测",
"Fail to copy fallback. AHASApp test-ahas:testAppA failed. AHAS FallbackName: WEB跳转 Msg: 跳转到指定页面行为不支持",
"Fail to copy fallback. AHASApp test-ahas:testAppB failed. AHAS FallbackName: WEB跳转 Msg: 跳转到指定页面行为不支持"
]
规则迁移异常信息
输出存在迁移异常的规则,主要分为三类:
XXXX,规则将不会创建:这类异常表示AHAS侧的规则使用了MSE侧不支持的配置,请手动创建满足需求规则。
规则创建成功,但FALLBACK行为不存在,请手动绑定行为:这类异常表示存在不支持的行为导致行为创建失败,请根据需求创建行为后手动绑定或重新运行脚本。
MSE熔断规则不支持配置自定义行为(规则创建成功):MSE侧的熔断规则目前不支持配置自定义行为。
"RuleFailedRecord": [
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59615 Resource: /sql Msg: 集群模式不支持,规则将不会创建",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59624 Resource: com.alibabacloud.mse.demo.c.service.HelloServiceC:hello(java.lang.String) Msg: 规则创建成功,但 FALLBACK 行为不存在,请手动绑定行为 RPC缓存实例自动探测",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59632 Resource: /flow-3 Msg: 规则创建成功,但 FALLBACK 行为不存在,请手动绑定行为 WEB跳转",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59633 Resource: /flow-4 Msg: 来源应用不支持,规则将不会创建",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59634 Resource: /flow-5 Msg: 统计维度仅支持当前接口,规则将不会创建",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59635 Resource: /flow-6 Msg: 统计维度仅支持当前接口,规则将不会创建",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59636 Resource: /flow-7 Msg: 流控效果不支持预热启动,规则将不会创建",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59641 Resource: /isolation-2 Msg: 统计维度仅支持当前接口, 规则将不会创建",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 59642 Resource: /isolation-3 Msg: 统计维度仅支持当前接口, 规则将不会创建",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 200790 Resource: com.alibabacloud.mse.demo.c.service.HelloServiceC:hello(java.lang.String) Msg: MSE熔断规则不支持配置自定义行为(规则创建成功),因此忽略 FALLBACKDEFINITION: RPC缓存实例自动探测",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 200791 Resource: com.alibabacloud.mse.demo.c.service.HelloServiceC Msg: MSE熔断规则不支持配置自定义行为(规则创建成功),因此忽略 FALLBACKDEFINITION: RPC自定义异常",
"Fail to copy rule. AHAS appName test-ahas:testAppA failed. AHAS RuleId: 200792 Resource: com.alibabacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String) Msg: MSE熔断规则不支持配置自定义行为(规则创建成功),因此忽略 FALLBACKDEFINITION: RPC自定义返回"
]