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 ドキュメントでそれらについてさらに読むことができます。