2017-07-19 23 views
7

私はEC2上のtomcatインスタンスで実行されているWebアプリケーションを持っています。私の人生では、スティッキセッションがロードバランサ上で動作することはできません。私はhttp://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.htmlのすべてのステップを踏んで、アプリケーションベース(JSESSIONIDクッキーを使用)と時間ベース(86400秒使用)の両方の方法を試しましたが、どちらの方法でも動作しません。同じユーザーは、すべての異なるノードをバウンスし続けます。ユーザーがWebページ上の新しいリンクをクリックするたびに、ホーム画面に戻り、再びログインします。AWSでスティッキセッションが動作しないのですか?

なぜ動作しないのかわかりません。私はまた、このことについてあまり知らない(2時間前まで、私は「粘り強いセッション」が何を意味しているのか分からなかった - そして、誰かにそれをやらせることはできない)デバッグをどこから始めるべきかわからない。

EDIT:私のクッキーを見ると、AWSELBクッキーは、サイトの読み込みを行うたびに削除され、書き換えられるように見えます。

EDIT 2:私のロードバランサのXML構成:

{ 
    "LoadBalancerDescriptions": [ 
     { 
      "Subnets": [ 
       "subnet-5c83aa39", 
       "subnet-6a778830", 
       "subnet-c41cdde8" 
      ], 
      "CanonicalHostedZoneNameID": "Z35SXDOTRQ7X7K", 
      "CanonicalHostedZoneName": "<ELB_NAME>-<redacted>.us-east-1.elb.amazonaws.com", 
      "ListenerDescriptions": [ 
       { 
        "Listener": { 
         "InstancePort": 5432, 
         "LoadBalancerPort": 5432, 
         "Protocol": "TCP", 
         "InstanceProtocol": "TCP" 
        }, 
        "PolicyNames": [] 
       }, 
       { 
        "Listener": { 
         "InstancePort": 8888, 
         "LoadBalancerPort": 8888, 
         "Protocol": "HTTP", 
         "InstanceProtocol": "HTTP" 
        }, 
        "PolicyNames": [ 
         "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500995555135" 
        ] 
       } 
      ], 
      "HealthCheck": { 
       "HealthyThreshold": 2, 
       "Interval": 10, 
       "Target": "HTTP:44554/", 
       "Timeout": 8, 
       "UnhealthyThreshold": 4 
      }, 
      "VPCId": "vpc-721bec0b", 
      "BackendServerDescriptions": [], 
      "Instances": [ 
       { 
        "InstanceId": "i-0ca9c244ed930d58f" 
       }, 
       { 
        "InstanceId": "i-0cf47dc916f3f3443" 
       }, 
       { 
        "InstanceId": "i-09ce2f24abc50259f" 
       } 
      ], 
      "DNSName": "<ELB_NAME>-<redacted>.us-east-1.elb.amazonaws.com", 
      "SecurityGroups": [ 
       "sg-f5ff638b" 
      ], 
      "Policies": { 
       "LBCookieStickinessPolicies": [ 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500564994754", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500565103581", 
         "CookieExpirationPeriod": 0 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500566463445", 
         "CookieExpirationPeriod": 28800 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500566440580", 
         "CookieExpirationPeriod": 0 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500476922828", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500481383343", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500479370743", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500475843862", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500995555135", 
         "CookieExpirationPeriod": 86400 
        } 
       ], 
       "AppCookieStickinessPolicies": [ 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-<ELB_NAME>-1500477157435", 
         "CookieName": "JSESSIONID" 
        }, 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-<ELB_NAME>-1500472642494", 
         "CookieName": "JSESSIONID" 
        }, 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-<ELB_NAME>-1500473344752", 
         "CookieName": "JSESSIONID" 
        }, 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-<ELB_NAME>-1500473227851", 
         "CookieName": "JSESSIONID" 
        } 
       ], 
       "OtherPolicies": [] 
      }, 
      "LoadBalancerName": "<ELB_NAME>", 
      "CreatedTime": "2017-07-18T15:32:33.890Z", 
      "AvailabilityZones": [ 
       "us-east-1a", 
       "us-east-1b", 
       "us-east-1c" 
      ], 
      "Scheme": "internet-facing", 
      "SourceSecurityGroup": { 
       "OwnerAlias": "558554867759", 
       "GroupName": "<redacted>" 
      } 
     } 
    ] 
} 

EDIT 3:誰ですか?どうか私は仕事が必要なことが必死になっています...

+0

説明するために、いくつかのリクエストとレスポンスヘッダをキャプチャしてくださいリスナーにJSESSIONIDを使用していますAppCookieStickinessPoliciesの一つ関連付ける試しくださいあなたのクッキーは「削除されています。 –

+0

@ Michael-sqlbotこれを行う方法がわかりません(また、私は本当にウェブサイトのものが新しいです)。私はちょうどクロムのクッキーリストを見て、AWSELBクッキーが変化し続けることに気づいています... – user1072692

+0

次のようなAWS CLIを使用して、ロードバランサ設定のXML記述を送信してください: 'aws elb describe-load-balancers --load-balancer-name my-loadbalancer' –

答えて

0

まずこのスティッキーな仕組みがどのように機能するのですか? ELBはちょうどクッキーAWSELBを追加します(または、別の名前かもしれません;あなたはすべてのクッキーを探し、あなたのものではないものを見ることができます)。このクッキーには、この要求が送信されるサーバーの情報も含まれています。

ここで、同じブラウザからのすべてのリクエストにはそのCookieがあり、ELBは転送先を認識しています。ここではうまくいかないものは何もありません。

はのは、次の手順を実行してみましょう:

  1. あなたは私にあなたがしようとしているWebサイト/ Webアプリケーションを送ることができますか?それが公開されている場合。私もそれをデバッグすることができます。

  2. クッキーが許可されていることを確認してください。あなたの質問から、これは問題ではないように見えますが。

  3. Edit Stickinessで設定した有効期限は何ですか。 ELBの場合は、Edit Stickinessをクリックします。 - >ラジオボタンを選択します。「ロードバランサでCookieの粘着性を生成する」を選択し、有効期限を空白にしてください。

  4. また、HTTPSの場合は、手順3を繰り返します。

動作している場合はお知らせください。私はここ1時間しかいない。

なぜXMLが表示されているのかよくわからないLBCookieStickinessPolicies !!

+0

ウェブサイトは公開されていません。クッキーは許可されます。有効期限は空白です。 HTTPSが使用されていません。 – user1072692

+0

それについて考えていた。私が考えることができる唯一の理由は、あなたがELBからサービスを外しているということです。ELB - > Monitoring - > Healthy Hosts - >あなたが間違いなく間欠的に。もう一度試してみたいことは別のブラウザです。 – Deepak

+0

サーバーは中断することなく4週間健全でした。 Chrome、Edge、Firefoxで試してみた – user1072692

0

異なる設定で多くの異なるポリシーが作成されますが、1つだけがリスナーに関連付けられ、1つは時間ベースのポリシーです。リスナーとポリシーを関連付ける方法

"LoadBalancerDescriptions": [ 
    { 
     "Subnets": [ 
      "subnet-5c83aa39", 
      "subnet-6a778830", 
      "subnet-c41cdde8" 
     ], 
     "CanonicalHostedZoneNameID": "Z35SXDOTRQ7X7K", 
     "CanonicalHostedZoneName": "<ELB_NAME>-<redacted>.us-east-1.elb.amazonaws.com", 
     "ListenerDescriptions": [ 
      { 
       "Listener": { 
        "InstancePort": 5432, 
        "LoadBalancerPort": 5432, 
        "Protocol": "TCP", 
        "InstanceProtocol": "TCP" 
       }, 
       "PolicyNames": [] 
      }, 
      { 
       "Listener": { 
        "InstancePort": 8888, 
        "LoadBalancerPort": 8888, 
        "Protocol": "HTTP", 
        "InstanceProtocol": "HTTP" 
       }, 
       "PolicyNames": [ 
here ---->   "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500995555135" 
       ] 
      } 
     ], 

ドキュメンテーションポイントあなたを:http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html#enable-sticky-sessions-duration

のみ

+0

それを試してみてください。まだ動かない。 – user1072692

関連する問題