迁移工具使用

更新时间:2024-11-21 09:37:08

迁移工具用于将AHAS侧应用的流控规则,隔离规则以及熔断规则(不包含默认熔断规则)迁移到MSE侧,其他规则建议手动迁移,支持按照命名空间或者应用维度进行迁移。

前置条件

限制条件

规则支持:迁移工具仅支持普通应用的流控规则,隔离规则以及熔断规则(不包含默认熔断规则)的复制,网关应用以及其他类型的规则需通过手动方式迁移。AHAS侧与MSE侧规则类型对应关系如表所示。

AHAS

MSE

AHAS

MSE

流控规则

配置流控规则

隔离规则

配置隔离规则

熔断规则

配置熔断规则

热点规则

配置热点参数防护规则(RPC 请求)

Web 防护规则

配置热点参数防护规则(HTTP 请求)

网关防护规则(不针对请求属性)

网关防护规则(针对请求属性)

配置热点参数防护规则(HTTP 请求)

地域支持: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门户搜索接口CloneSentinelRuleFromAhas,入参描述如下。

名称

类型

必填

描述

示例值

名称

类型

必填

描述

示例值

Namespace

string

MSE侧应用命名空间

default

AppName

string

应用名称, MSE侧和AHAS侧需保持一致,不填则默认复制所有应用在AHAS命名空间下的规则。

AppName

AhasNamespace

string

AHAS侧应用命名空间

default

IsAHASPublicRegion

boolean

AHAS侧是否为公网Region

false

请求示例

描述

Namespace

AhasNamespace

AppName

IsAHASPublicRegion

描述

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自定义返回"
]
  • 本页导读 (1)
  • 前置条件
  • 限制条件
  • 准备工作
  • 工具使用说明
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等