迁移工具使用

迁移工具用于将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

复制杭州地域 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自定义返回"
]