affinityを構成したい「WebアプリをホストするVMへのアクセスを固定したいのだが、うまくいかない場合がある」という問い合わせがあった。この事象が解決したので、その原因と解決策をまとめておく。問い合わせの事象が発生していた環境は以下の通り。live後しばらくして発生しはじめた、とのこと。マルチリージョン対応はしていない。App(をホストするVM)を固定したい。affinityを実現したい。affinityを構成したい、ということ。gridでセッション共有すればよいのだが、コスト低減のためクラスタリング構成できないEditionを使っていた。affinityを実現しようとしていた、ということだった。この例での原因おそらく、上図を見ただけで仮説が立つ人も多いはず。具体的には、以下のあたり。App(をホストするVM)が変わるはず。LB両系で共有されていない、とか。今回の事象は、以下が複合して発生していた。IP)が変化していた。IPとprotocolでしか判断できない。LBにルーティングしていた。LBに共有されていなかった。LBにトラフィックがルーティングされた場合、sessionの継続性を判断できず、異なるクライアントからのアクセスと判断していた。ALBの負荷分散規則は以下のドキュメントに記載がある。Balancerhttps://docs.microsoft.com/azure/load-balancer/load-balancer-distribution-mode具体的には以下のような流れで、結果として所望の動作をしないケースが発生した。IPにNATされる場合がある。以下の置き換えを実施し、所望の動作をするようになった。Gatewayhttps://docs.microsoft.com/azure/application-gateway/ingress-controller-cookie-affinity構成変更後のトポロジーは以下の通り。affinityが機能するだけでなく、以下のようなメリットを享受できるようになった。Doorを使わなかった理由は、この問い合わせ主のシステムがマルチリージョン対応しておらず、グローバルサービスを使う理由がなかったから。GWの機能で賄いきれないものである場合、以下のような配置になる可能性もある。Proxyが必要、とか。まとめ類似の事象では異なる解決策が適切な場合があるため、全てのケースにこの解決策があてはまるわけでない。クラウド移行にあたっては利用するサービスの機能を十分に理解し、機能を使い尽くして利用コンポーネント点数を減らす方向、つまりシンプルにするトポロジーを考えることが重要。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。Inside現在40人フォロワーがいます。(必須)サイト%d人のブロガーが「いいね」をつけました。