アプリケーションロードバランサーを使用して複数のEC2インスタンスに送信された重複リクエストを経験した人はいますか?
ALBが率いるEC2のAPIがあり、最近、一部のリクエストが複数のインスタンスに送信されており、支払いなどの特定のアクションが複数回発生しているため問題が発生していることがわかりました。
APIは.netコアを中心に構築されていますが、これは重要だとは思わないでください。この問題は最近始まったもので、常に発生しているわけではありません。
誰かがこのようなものを見たことがありますか? 2011/2012年頃からいくつかの古い問題を見てきましたが、最近の問題はありません。
ALBアクセスログを有効にし(S3に配信されます)、それらを分析します。
多くの場合、それは実際にはクライアントが複数回リクエストを送信していることに気付かないでしょう-ユーザーの操作(例:ユーザーが支払い処理を待っている間にページをリロードする)またはクライアント側のアプリによって引き起こされた(JSがタイムアウトを待ってタイムアウトする)応答し、リクエストを再送信します)。ログからわかります。
それが役に立てば幸い:)
また、ALBではなく従来のELBでも同じことが確認されています。ときどき(トラフィックの多い環境では1日に数十回)2つのインスタンスがまったく同じリクエストを受信し、それらのインスタンスの1つのみがELBアクセスログにあるという証拠があります。
また、私たちのログによると、これは少なくとも3か月間(そしておそらく永久に)発生していますが、7月中旬以降悪化している可能性があります。