diff --git a/content/zh-cn/features/policies/_index.md b/content/zh-cn/features/policies/_index.md index 096e8d1..d5918b7 100644 --- a/content/zh-cn/features/policies/_index.md +++ b/content/zh-cn/features/policies/_index.md @@ -15,16 +15,16 @@ Flomesh Gateway (FGW) 提供了一系列先进的负载均衡策略,以确保 - [健康检查](/features/policies/healthcheck/) - [重试](/features/policies/retry/) - - 有些策略则是路由或者路由+服务的粒度: - [路径重写](/features/policies/url-rewrite/) - [请求重定向](/features/policies/url-redirecting/) -- [URL 重写](/features/policies/rate-limiting/) +- [限流](/features/policies/rate-limiting/) - [HTTP 头部控制](/features/policies/header-manipulate/) +- [流量镜像](/features/policies/request-mirror) +- [故障注入](/features/policies/fault-injection) -当然还有粒度更加灵活的策略,如 [限流](),可以作用于域名和路由的粒度。 +当然还有粒度更加灵活的策略,如 [限流](/features/policies/rate-limiting) 和 [故障注入](/features/policies/fault-injection),可以作用于域名和路由的粒度。 ### 示例 diff --git a/content/zh-cn/features/policies/black-white-list.md b/content/zh-cn/features/policies/black-white-list.md index 764f6fe..b856946 100644 --- a/content/zh-cn/features/policies/black-white-list.md +++ b/content/zh-cn/features/policies/black-white-list.md @@ -88,7 +88,7 @@ curl http://localhost:8081/headers ### 负载均衡配置 -我们借助在文档 [HTTP 负载均衡](app://obsidian.md/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8081`;然后根据 [HTTP 插件链配置](app://obsidian.md/reference/plugin/#http-%E8%B7%AF%E7%94%B1),将 `common/access-control.js`、`http/access-control-domain.js`、`http/access-control-route.js` 插件配置在相应的配置。 +我们借助在文档 [HTTP 负载均衡](app://obsidian.md/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081`;然后根据 [HTTP 插件链配置](app://obsidian.md/reference/plugin/#http-%E8%B7%AF%E7%94%B1),将 `common/access-control.js`、`http/access-control-domain.js`、`http/access-control-route.js` 插件配置在相应的配置。 这里我们会多加入一个监听端口 `8079`,与端口 `8080` 使用同样的负载均衡配置。当我们做端口级别的黑白名单时,方便进行进行对比验证。 diff --git a/content/zh-cn/features/policies/circuit-breaking.md b/content/zh-cn/features/policies/circuit-breaking.md index 90a20b8..8eff331 100644 --- a/content/zh-cn/features/policies/circuit-breaking.md +++ b/content/zh-cn/features/policies/circuit-breaking.md @@ -64,7 +64,7 @@ weight: 1 ### 负载均衡器配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `http/circuit-breaker.js` 插件配置在相应的配置。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `http/circuit-breaker.js` 插件配置在相应的配置。 ```json { diff --git a/content/zh-cn/features/policies/fault-injection.md b/content/zh-cn/features/policies/fault-injection.md new file mode 100644 index 0000000..9808fda --- /dev/null +++ b/content/zh-cn/features/policies/fault-injection.md @@ -0,0 +1,285 @@ +--- +title: "故障注入" +description: "本篇文档将介绍如何在网关层面注入特定的故障来测试系统的行为和稳定性。" +weight: 13 +draft: false +--- + +## 介绍 + +网关的故障注入功能允许在网络层面引入特定故障,如延迟和中断,以测试和评估应用在不同故障情况下的行为和稳定性。这个功能特别适合进行弹性和容错能力的测试。 + +这个功能特别适合进行弹性和容错能力的测试。 + +### 功能特点 + +- 延迟注入:模拟网络延迟,观察应用对延迟的响应。 +- 错误注入:模拟服务错误响应,测试系统的恢复和容错机制。 +- 可配置的故障比例:可以设定故障注入的覆盖范围,例如只对一定比例的请求注入故障。 + +## 前置条件 + +- Pipy(版本 >= {{< param min_pipy_version >}}) +- FGW Repo(版本 >= {{< param fgw_version >}}) +- 后端服务 +- 了解 [HTTP 负载均衡的配置](/features/http-load-balancer/) + +后端服务可以使用 Pipy 来模拟一个返回正在请求的路径的服务。 + +```shell +pipy -e "pipy().listen(8081).serveHTTP(msg => new Message('You are requesting ' + msg.head.headers.host + msg.head.path))" +``` + +它会返回我们正在请求的路径。 + +```shell +curl http://localhost:8081/user +You are requesting localhost:8081/user +``` + +## 配置说明 + +FGW 提供了三种粒度的故障注入:[网关全局](/reference/configuration/#1-全局配置configs)、[域名](/reference/configuration/#311-域名)和[路由](/reference/configuration/#3111-matches)。 + +`Fault`: 用于配置故障注入策略。 +- `Delay`: 配置响应延时的参数。 + - `Percent`: 对请求注入延时的百分比,决定了有多少比例的请求会被注入延时。 + - `Fixed`: 指定固定的延时时间(如果设置),单位由 `Unit` 参数确定。 + - `Range`: 提供延时时间的随机范围,如 "0-100",表示延时时间在0到100毫秒之间随机变动。 + - `Unit`: 延时时间的单位,支持 “ms”、“s”、“m” ,默认为毫秒(ms)。 +- `Abort`: 配置故障响应码的参数。 + - `Percent`: 注入特定错误响应的请求比例。 + - `Status`: 指定要注入的HTTP或GRPC错误状态码,如503表示服务不可用。 + - `Message`: 可选,提供错误响应的提示信息。 + +### 示例 + +在这个配置示例中,30% 的请求将遇到 50 至 300 毫秒之间的随机延迟,5% 的请求将收到带有 “Error injected” 消息的 503 错误响应。 + +```json +{ + "Fault": { + "Delay": { + "Percent": 30, + "Fixed": 2000, + "Range": "50-300", + "Unit": "ms" + }, + "Abort": { + "Percent": 5, + "Status": 503, + "Message": "Error injected" + } + } +} +``` + +## 配置 + +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081`。然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `http/fault-injection.js` 插件配置在相应的配置。 + +```json +{ + "Configs": { + "DefaultPassthroughUpstreamPort": 443, + "EnableDebug": true + }, + "Listeners": [ + { + "Protocol": "HTTP", + "Port": 8080 + } + ], + "RouteRules": { + "8080": { + "*": { + "RouteType": "HTTP", + "Matches": [ + { + "Path": { + "Type": "Prefix", + "Path": "/" + }, + "BackendService": { + "backendService1": { + "Weight": 100 + } + } + } + ] + } + } + }, + "Services": { + "backendService1": { + "Endpoints": { + "127.0.0.1:8081": { + "Weight": 100 + } + } + } + }, + "Chains": { + "HTTPRoute": [ + "common/consumer.js", + "http/codec.js", + "http/route.js", + "http/fault-injection.js", + "http/service.js", + "http/forward.js", + "http/default.js" + ] + } +} +``` + +### 路由粒度的故障注入 + +为 `/user` 路径增加一条路由,并在该路由上设置故障注入:`50%` 的概率下返回 `503` 的状态码,以及 `Error injected` 响应。 + +```json +{ + "RouteRules": { + "8080": { + "*": { + "RouteType": "HTTP", + "Matches": [ + { + "Path": { + "Type": "Prefix", + "Path": "/user" + }, + "BackendService": { + "backendService1": { + "Weight": 100 + } + }, + "Fault": { + "Abort": { + "Percent": 50, + "Status": 503, + "Message": "Error injected" + } + } + }, + { + "Path": { + "Type": "Prefix", + "Path": "/" + }, + "BackendService": { + "backendService1": { + "Weight": 100 + } + } + } + ] + } + } + } +} +``` + +多次请求 `/user` 50% 的情况下会遇到 503 的错误,而请求其他路径正常返回。 + +```shell +curl -i localhost:8080/user + +HTTP/1.1 503 Service Unavailable +content-length: 14 +connection: keep-alive + +Error injected + +curl -i localhost:8080/user + +HTTP/1.1 200 OK +content-length: 38 +connection: keep-alive + +You are requesting 127.0.0.1:8081/user +``` + +### 域名粒度的故障注入 + +**删除路由上的故障注入配置。** + +接下来,我们在域名 `*` 上配置故障注入:`100%` 的情况下加入 `2000ms` 的延迟。 + +```json +{ + "RouteRules": { + "8080": { + "*": { + "RouteType": "HTTP", + "Matches": [ + { + "Path": { + "Type": "Prefix", + "Path": "/" + }, + "BackendService": { + "backendService1": { + "Weight": 100 + } + } + } + ], + "Fault": { + "Delay": { + "Percent": 100, + "Fixed": 2000, + "Unit": "ms" + } + } + } + } + } +} +``` + +此时测试可以发现响应的耗时都在 2s 以上。 + +```shell +time curl localhost:8080/user +You are requesting 127.0.0.1:8081/usercurl localhost:8080/user 0.00s user 0.01s system 0% cpu 2.032 total +``` + +### 网关粒度的全局配置 + +**删除域名上的故障注入配置。** + +添加全局配置,设置 `100%` 的情况下加入 `1000ms` 的延迟以及返回 `401 Unauthorized!` 响应。 + +```json +{ + "Configs": { + "DefaultPassthroughUpstreamPort": 443, + "EnableDebug": true, + "Fault": { + "Delay": { + "Percent": 100, + "Fixed": 1000, + "Unit": "ms" + }, + "Abort": { + "Percent": 100, + "Status": 401, + "Message": "Unauthorized!\n" + } + } + } +} +``` + +测试。 + +```shell +time curl -i localhost:8080/user +HTTP/1.1 401 Unauthorized +content-length: 14 +connection: keep-alive + +Unauthorized! +curl -i localhost:8080/user 0.01s user 0.01s system 1% cpu 1.028 total +``` \ No newline at end of file diff --git a/content/zh-cn/features/policies/header-manipulate.md b/content/zh-cn/features/policies/header-manipulate.md index 429844e..152e34f 100644 --- a/content/zh-cn/features/policies/header-manipulate.md +++ b/content/zh-cn/features/policies/header-manipulate.md @@ -95,7 +95,7 @@ FGW 的 HTTP 头部控制功能分为 [请求头部控制 `RequestHeaderModifier ### 负载均衡配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8081`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `filter/header-modifier.js` 插件配置在相应的配置。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `filter/header-modifier.js` 插件配置在相应的配置。 ```json { diff --git a/content/zh-cn/features/policies/healthcheck.md b/content/zh-cn/features/policies/healthcheck.md index d376fff..4d25030 100644 --- a/content/zh-cn/features/policies/healthcheck.md +++ b/content/zh-cn/features/policies/healthcheck.md @@ -66,7 +66,7 @@ pipy -e "pipy().listen(8082).serveHTTP(new Message({status: 500},''))" ### 负载均衡器配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8081` 和 `127.0.0.1:8082`;重试功能实现在 `common/health-check.js` 中,该插件是自动引入,无需再插件链中显式定义。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081` 和 `127.0.0.1:8082`;重试功能实现在 `common/health-check.js` 中,该插件是自动引入,无需再插件链中显式定义。 ```json { diff --git a/content/zh-cn/features/policies/loadbalancing-algorithm.md b/content/zh-cn/features/policies/loadbalancing-algorithm.md index e6489d7..7703ffe 100644 --- a/content/zh-cn/features/policies/loadbalancing-algorithm.md +++ b/content/zh-cn/features/policies/loadbalancing-algorithm.md @@ -53,7 +53,7 @@ pipy -e "pipy().listen(8082).serveHTTP(new Message({status: 200},'Hi, world'))" ### 负载均衡配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8081` 和 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),重试的功能在 `http/forward.js"` 插件中实现。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081` 和 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),重试的功能在 `http/forward.js"` 插件中实现。 为了便于测试,我们将两个端点的权重分别设为 `100` 和 `10` diff --git a/content/zh-cn/features/policies/rate-limiting.md b/content/zh-cn/features/policies/rate-limiting.md index 4ca3a63..f110df0 100644 --- a/content/zh-cn/features/policies/rate-limiting.md +++ b/content/zh-cn/features/policies/rate-limiting.md @@ -128,7 +128,7 @@ FGW 中限流的粒度与 [熔断](/features/policies/circuit-breaking/) 等策 ### 负载均衡器配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `http/throttle-domain.js` 和 `http/throttle-route.js` 插件配置在相应的配置。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `http/throttle-domain.js` 和 `http/throttle-route.js` 插件配置在相应的配置。 顾名思义,这两个插件将分别处理基于 Host 的限流和基于路由的限流。 diff --git a/content/zh-cn/features/policies/request-mirror.md b/content/zh-cn/features/policies/request-mirror.md index 567e9ca..ddb3b30 100644 --- a/content/zh-cn/features/policies/request-mirror.md +++ b/content/zh-cn/features/policies/request-mirror.md @@ -1,6 +1,204 @@ --- title: "流量镜像" -description: "" +description: "本文档将介绍如何在不影响生产流量的前提下,将网络流量的副本发送到另一个服务。" weight: 12 -draft: true +draft: false --- + +## 介绍 + +FGW 的流量镜像功能主要用于在不影响生产流量的前提下,将网络流量的副本发送到另一个服务。这项功能常用于故障排查、性能监控、数据分析和安全审计等场景。通过流量镜像,可以实现实时数据捕获和分析,而不会对现有的业务流程造成任何干扰。 + +## 前置条件 + +- Pipy(版本 >= {{< param min_pipy_version >}}) +- FGW Repo(版本 >= {{< param fgw_version >}}) +- 2 个后端服务 +- 了解 [HTTP 负载均衡的配置](/features/http-load-balancer/) + +使用 Pipy 模拟两个后端服务,这两个服务分别监听 `8081` 和 `8082` 端口。 + +```shell +pipy -e "pipy().listen(8081).serveHTTP(msg=>(console.log(msg.head),msg))" +pipy -e "pipy().listen(8082).serveHTTP(msg=>(console.log(msg.head),msg))" +``` + +当请求后端服务时,其会将请求的头部信息打印出来。 + +```shell +#request +curl localhost:8081/query +#log +2023-11-29 15:42:58.803 [INF] { protocol: "HTTP/1.1", headers: { "host": "localhost:8081", "user-agent": "curl/8.1.2", "accept": "*/*" }, method: "GET", scheme: undefined, authority: undefined, path: "/query" } +``` + +## 配置说明 + +如同在 [策略概览](/features/policies/) 中提到的,流量镜像策略可以应用在服务/路由粒度。它的配置只有一个字段: + +- `BackendService`:指定请求应该镜像到哪个后端服务。 + +### 示例 + +```json +{ + "Filters": [ + { + "Type": "RequestMirror", + "BackendService": "backendService2" + } + ] +} +``` + +## 配置 + +### 基础配置 + +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081`。然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `filter/request-mirror.js` 插件配置在相应的配置。 + +```json +{ + "Listeners": [ + { + "Protocol": "HTTP", + "Port": 8080 + } + ], + "RouteRules": { + "8080": { + "*": { + "RouteType": "HTTP", + "Matches": [ + { + "Path": { + "Type": "Prefix", + "Path": "/" + }, + "BackendService": { + "backendService1": { + "Weight": 100 + } + } + } + ] + } + } + }, + "Services": { + "backendService1": { + "Endpoints": { + "127.0.0.1:8081": { + "Weight": 100 + } + } + } + }, + "Chains": { + "HTTPRoute": [ + "common/consumer.js", + "http/codec.js", + "http/route.js", + "http/service.js", + "filter/request-mirror.js", + "http/forward.js", + "http/default.js" + ] + } +} +``` + +通过 FGW 访问后端服务 `curl localhost:8080/query`,可以看到 `8081` 的后端服务会打印请求的头部信息。 + +```shell +2023-11-29 16:15:15.306 [INF] { protocol: "HTTP/1.1", headers: { "host": "127.0.0.1:8081", "user-agent": "curl/8.1.2", "accept": "*/*", "x-forwarded-for": "127.0.0.1" }, method: "GET", scheme: undefined, authority: undefined, path: "/query" } +``` + +### 路由粒度的流量镜像 + +修改路由的配置,在路由上添加 `RequestMirror` 配置,将流量镜像到后端服务 `backendService2`。 + +```json +{ + "Matches": [ + { + "Path": { + "Type": "Prefix", + "Path": "/" + }, + "BackendService": { + "backendService1": { + "Weight": 100 + } + }, + "Filters": [ + { + "Type": "RequestMirror", + "BackendService": "backendService2" + } + ] + } + ] +} +``` + +同时,配置后端服务 `backendService2` 的端点。 + +```json +{ + "Services": { + "backendService1": { + "Endpoints": { + "127.0.0.1:8081": { + "Weight": 100 + } + } + }, + "backendService2": { + "Endpoints": { + "127.0.0.1:8082": { + "Weight": 100 + } + } + } + } +} +``` + +此时再次发送请求,会发现后端服务 `8082` 也会同样打印出请求的信息。 + +``` +2023-11-29 16:48:28.153 [INF] { protocol: "HTTP/1.1", headers: { "host": "127.0.0.1:8082", "user-agent": "curl/8.1.2", "accept": "*/*", "x-forwarded-for": "127.0.0.1" }, method: "GET", scheme: undefined, authority: undefined, path: "/query" } +``` + +### 服务粒度的流量镜像 + +在前面的配置基础上调整:将路由负载均衡到后端服务 `8081` 和 `8082`,但是在选择 `8081` 作为后端服务时,将请求镜像到 `8082`。 + +```json +{ + "Matches": [ + { + "Path": { + "Type": "Prefix", + "Path": "/" + }, + "BackendService": { + "backendService1": { + "Weight": 100, + "Filters": [ + { + "Type": "RequestMirror", + "BackendService": "backendService2" + } + ] + }, + "backendService2": { + "Weight": 100 + } + } + } + ] +} + +在测试的时候,还是同样的请求会被均衡到两个后端服务,但 `8081` 的请求会被镜像到 `8082`,也就是说 `8082` 将会收到所有的请求。 \ No newline at end of file diff --git a/content/zh-cn/features/policies/retry.md b/content/zh-cn/features/policies/retry.md index 2678353..63530aa 100644 --- a/content/zh-cn/features/policies/retry.md +++ b/content/zh-cn/features/policies/retry.md @@ -55,7 +55,7 @@ FGW 的重试功能为架构提供了额外的稳定性和韧性。通过合理 ### 负载均衡器配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),重试的功能在 `http/forward.js"` 插件中实现。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),重试的功能在 `http/forward.js"` 插件中实现。 ```json { diff --git a/content/zh-cn/features/policies/session-sticky.md b/content/zh-cn/features/policies/session-sticky.md index 40c5945..7c50882 100644 --- a/content/zh-cn/features/policies/session-sticky.md +++ b/content/zh-cn/features/policies/session-sticky.md @@ -67,7 +67,7 @@ Service unavailable ### 负载均衡配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8081` 和 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),重试的功能在 `http/forward.js"` 插件中实现。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081` 和 `127.0.0.1:8082`;然后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),重试的功能在 `http/forward.js"` 插件中实现。 ```json { diff --git a/content/zh-cn/features/policies/url-redirecting.md b/content/zh-cn/features/policies/url-redirecting.md index 8c54bd8..13535c8 100644 --- a/content/zh-cn/features/policies/url-redirecting.md +++ b/content/zh-cn/features/policies/url-redirecting.md @@ -67,7 +67,7 @@ Hello, there ### 负载均衡器配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8081` ,重定向功能实现在 `filter/request-redirect.js` 中,需要将其添加到插件链中。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081` ,重定向功能实现在 `filter/request-redirect.js` 中,需要将其添加到插件链中。 ```json { diff --git a/content/zh-cn/features/policies/url-rewrite.md b/content/zh-cn/features/policies/url-rewrite.md index 7992116..55d4d84 100644 --- a/content/zh-cn/features/policies/url-rewrite.md +++ b/content/zh-cn/features/policies/url-rewrite.md @@ -93,7 +93,7 @@ You are requesting localhost:8081/user ### 负载均衡配置 -我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的断点列表为我们的后端服务地址 `127.0.0.1:8081`;同时将该后端服务的路由路径设置为 `/sample`;最后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `filter/url-rewrite.js` 插件配置在相应的配置。 +我们借助在文档 [HTTP 负载均衡](/features/http-load-balancer/) 中的负载均衡器配置,修改服务的端点列表为我们的后端服务地址 `127.0.0.1:8081`;同时将该后端服务的路由路径设置为 `/sample`;最后根据 [HTTP 插件链配置](/reference/plugin/#http-路由),将 `filter/url-rewrite.js` 插件配置在相应的配置。 ```json {