2

以下の構成でセッション サーバーとして redis を使用しようとしたときに問題が発生しました。

  1. https://github.com/Azure/aspnet-redis-providersで同じアプリケーションをホストする複数の Windows サーバー
  2. 重み付けされたルーティングを備えたエラスティック ロード バランサーは、要求をすべての IIS サーバーにリダイレクトします。
  3. Redis は AWS エラスティック キャッシュでホストされ、両方のサーバーからアクセスできます
  4. Redis は一度に 1 つのサーバーのセッション サーバーとして問題なく機能します

    セッションごとに 3 つのキーが作成されます

"{/_ktffpxxxxxxg2xixdnhe}_Write_Lock"

"{/_ktffpxxxxxxg2xixdnhe}_Data"

"{/_ktffpxxxxxxg2xixdnhe}_Internal"

問題: 1 つ以上のサーバーが同じインスタンスで redis からセッションにアクセスして同じユーザーにサービスを提供しようとすると、server1 が配置されている_Write_Lock場合、server2 はデータの読み取り + 更新タイムアウトまたは書き込みに失敗し、その後キーをクリアします

--> その結果、どのサーバーに対するユーザーの次のリクエストでも、セッションの検証に失敗します。

この問題が発生するのは私だけですか?? 助けてください ...

注: ELB でセッション スティッキを有効にすると、サインアウトは断続的ではありませんが、そのサーバーのすべてのユーザー セッションを失うことなく、アップグレードのためにサーバーを取り出すことが制限されます。

4

0 に答える 0