LoadBalancer フィルター
LoadBalancer フィルターは serviceId
パラメーターを受け取ります。LoadBalancerClient
はこれを使用して、ルーティング用のインスタンスを選択します。LoadBalancer フィルターは Java DSL で明示的に使用する必要があります。LoadBalancer フィルターを使用する場合は、org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions
で空の http()
メソッドを使用します。
RouteConfiguration.java
import static org.springframework.cloud.gateway.server.mvc.filter.LoadBalancerFilterFunctions.lb;
import static org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;
@Configuration
class RouteConfiguration {
@Bean
public RouterFunction<ServerResponse> gatewayRouterFunctionsAddReqHeader() {
return route("api_route")
.GET("/api/**", http())
.filter(lb("apiservice"))
.build();
}
}
構成での LoadBalancer フィルターの使用
LoadBalancer フィルターは、lb
スキーム ( lb://myservice
など) の URI を使用して構成で使用できます。Spring Cloud LoadBalancerClient
を使用して名前 (この例では myservice
) を実際のホストとポートに解決し、同じホストとポート内の URI を置き換えます。属性。次のリストは、LoadBalancer フィルターを構成します。
application.yml
spring:
cloud:
gateway:
mvc:
routes:
- id: api_route
uri: lb://apiservice
predicates:
- Path=/api/**
デフォルトでは、ReactorLoadBalancer でサービスインスタンスが見つからない場合、503 が返されます。 |
LoadBalancerClient から返された ServiceInstance の isSecure 値は、ゲートウェイに対するリクエストで指定されたスキームをオーバーライドします。例: リクエストが HTTPS 経由でゲートウェイに入ったが、ServiceInstance が安全ではないことを示した場合、ダウンストリームリクエストは HTTP 経由で行われます。逆の状況も当てはまります。 |
ゲートウェイは、すべての LoadBalancer 機能をサポートします。Spring Cloud Commons ドキュメントでそれらについてさらに読むことができます。 |