5

私は一連のマイクロ サービスを持っており、スプリング クラウドを使用して uri コンテキスト パスを特定のマイクロ サービスにマッピングする方法として、フロント エンドからのルーティングに zuul を使用しています。

内部的にも外部的にも、Spring OAuth2 を使用していますが、これは非常にうまく機能します。

ただし、ある特定のサービスでは SAML の要件が発生しており、これにより、そのサービスにスティッキー セッションの要件が課せられます。

別の人がこれを検討しており、zuul のスティッキー セッション サポートを導入する正しい方法は何でしょうか。

これを理解するまでの回避策として、フロントエンドにある HAProxy からのいくつかのリクエストをこのサービスに直接ルーティングしています。

4

1 に答える 1

10

複数のバックエンドを持つスティッキー セッションが必要な場合は、リボン フィルターを使用する必要があると思います。IRuleスティッキー セッションは、たとえば、として追加できます。

@RibbonClient(value="myui", configuration=UiRibbonConfiguration.class)
public class UiRibbonConfiguration {
  @Bean
  public IRule loadBalancerRule() {
    return new MyStickySessionRule();
  }
}

さらに、相関のために Cookie を追加するZuulFilter(またはバックエンドのサーブレットFilter) - 各バックエンド インスタンスはそれ自体を一意に識別するMyStickySessionRule必要があり、次に着信 Cookie を調べて、要求を送信するインスタンスを決定する必要があります (たとえば、バックエンドが Spring Boot アプリの場合、「X-Application-Context」ヘッダー値を Cookie として送信できます)。

注意: バックエンドで Spring Session を使用できる場合、スティッキー セッションは必要ありません。

于 2015-03-25T10:20:02.867 に答える