如何使用Azure API管理策略来加载对后端服务的调用?

时间:2017-04-19 13:46:09

标签: azure azure-api-management

如何使用策略对一对后端服务进行负载均衡? (在这种情况下是不同地区的一对逻辑应用)

我已阅读API Management policies,可以查看control flow周围的内容,但我无法确定如何(a)测试后端服务是否可用,然后(b)如果主要服务不可用,则将呼叫更改为备份服务

<backend>  
     <forward-request/>  
</backend> 

2 个答案:

答案 0 :(得分:2)

实现此目的的另一种方法是,您可以retry policyset backend servicesend-request

一起使用enter image description here

类似

<backend>
    <retry condition="@(context.Response.StatusCode == 400 || context.Response.StatusCode >= 500)" count="10" interval="10" max-interval="100" delta="10" first-fast-retry="false">
        <choose>
            <when condition="@(context.Response != null && (context.Response.StatusCode == 400 || context.Response.StatusCode >= 500)">
                <set-backend-service base-url="http://echoapibackup.cloudapp.net/api" />
            </when>
            <otherwise>
                <set-backend-service base-url="http://echoapi.cloudapp.net/api" />
            </otherwise>
        </choose>
        <forward-request />
    </retry>
</backend>

如果您的主后端返回错误,将继续在您的备份后端重试。

答案 1 :(得分:0)

了解使用发送请求政策。使用它(和等待策略),您可以对几个Web服务进行并行调用,并从首先完成的结果返回结果。这意味着您需要完全跳过前向请求,因为您将从这些政策中获取结果数据。

或者您可以使用send-request来测试某些后端是否可用,然后使用set-backend-service和/或rewrite-uri策略来更改目标后端。在这种情况下,您将保持向前请求。