如何使用策略对一对后端服务进行负载均衡? (在这种情况下是不同地区的一对逻辑应用)
我已阅读API Management policies,可以查看control flow周围的内容,但我无法确定如何(a)测试后端服务是否可用,然后(b)如果主要服务不可用,则将呼叫更改为备份服务
<backend>
<forward-request/>
</backend>
答案 0 :(得分:2)
实现此目的的另一种方法是,您可以retry policy与set backend service或send-request
一起使用类似
<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策略来更改目标后端。在这种情况下,您将保持向前请求。