2016年09月
以前、ロードバランサ 突然別のサーバにつながる っていうのを書いた。これの続き。
別のサーバに突然飛ばされてるのは分かるんだけど、いかんせん原因がわからないので、パケットキャプチャして何が起きてるのか調べた。
そしたら、裏でこんな話になってましたとさ。
① サイトを操作中に裏で「GET /browserconfig.xml」っていうリクエストが飛んでる。 ② ①のリクエストにCookieが何も設定されてない。 ③ ①のレスポンスでCookieがないからロードバランサがサーバに振り分けてセッションCookieを採番。 ④ 新しいCookieでつなぎにいって別のサーバに飛ぶ。
browserconfig.xmlってなんだ。。。。
コレらしい。要するに、Win8.1以降のピン留めに表示する画像とかもろもろをサイト側で指定出来るようにするための仕組みの模様。
ふーむー。機能としては素晴らしいんだろーけど、cookie付けないのダメじゃね?と思ったら、Microsoftのサポートにこんなエントリがあった。
信頼済みかイントラネットになってない奴はセッションCookieを飛ばさない。ということらしい。。。今度はコレを見てみましょう。
信頼済み・イントラネットじゃなくて保護モードかどうからし。 続き
最近ロードバランサがらみで一悶着あった。
最近のロードバランサにはつないで来たIPで振り分けるパターンと クッキーを設定して振り分けるパターンがあるらしい。
基本的なロードバランサの動きとして個人的に認識してるのは、 仮想代表アドレスに特定の端末からつないだら、少なくともその日は そのサーバにしかつながなくなるという仕様。IPでラウンドロビンしてる場合ってことかな。
ロードバランサの設定的に、ロードバランサがつないできたブラウザにCookieでキーを設定させて そのキーで振り分けるってやつがある。このやり方だと、ブラウザを起動し直した場合は、 また、ロードバランシングされて別のサーバにつながる可能性があるという形。
でだ、困ったことにWindows8+IE11の環境だと、唐突にIE11のCookieが消えるという事象が発生するもよう。 なので、Webアプリを普通に使っている場合に唐突にサーバが切り替わってセッションなどが引き継がれず動作が不安定になる。
この事象を確認したい場合は、ブラウザの開発ツール(F12キーを押す)でネットワークの内容を取得して、 詳細タブのCookieを確認する。
で、Cookieをひたすら確認して、落ちた画面で使ってるCookieの値が唐突に変わったり無くなったりしたら FAと考えていいかもしれない。
ロードバランサやってるベンダがどこかにもよるけど、IPでロードバランシングしてもらうように設定を変える必要があると思う。
2016/9/10追記
もうちょっと調べてみたら、RFC2965で規定されてるCookieの↓の話なのかもしれない。IEはこれの最低値に準拠してるらし。
少なくとも300個のCookie 少なくとも4096バイトのCookie ホストかドメインで20個のCookie
Microsoft的には⇒で書いてあった。https://support.microsoft.com/ja-jp/kb/306070
っていうか仕様の不具合なんじゃ・・・。まー、確かに無尽蔵にCookie使うのもどうかと思うけども。だいぶ昔のRFCっぽいし、ロードバランサがCookie利用するなんて考慮してなかったんだろうし。
とりあえず、IPでラウンドロビンしてもらうようにするしかなかね。。。
この話の続き。
- .net
- .netMVC
- AlmaLinux
- Apache
- AWS
- bitnami
- BulkCopy
- C#
- CentOS
- centos
- CentOS7
- CentOS8
- CLI3
- ClientVPN
- cookie
- CSS
- D3
- d3
- Django
- DNS
- docker
- docker-compose
- EntityFramework
- file
- GDI+
- Git
- HTML5
- IIS
- image
- inspect
- install
- IVS
- javascript
- JavaScript
- Jest
- JMeter
- JSON
- ldap
- Linux
- linux
- Log
- MariaDB
- MeCab
- MongoDB
- MVC
- mvc
- node.js
- npm
- nuxt
- OpenVPN
- POST
- Postgre
- proxy
- puppeteer
- Python
- python
- R
- Redis
- Redmine
- redmine
- Ruby
- SQLServer
- svg
- this
- Unicode
- UnitTest
- VirtualBox
- Visual
- VisualStudio
- VPN
- VSCode
- vscode
- Vue
- windows
- Windows
- Windows8.1
- エクセル
- エラー
- オブジェクト
- キャッシュバスティング
- コマンド
- コンソール
- サロゲート
- ストアド
- ソート
- トランザクション
- プロキシ
- プログラム
- ラムダ式
- ロードバランサ
- ワードクラウド
- 単体テスト
- 変換
- 外字
- 文字コード
- 日本語化
- 正規表現
- 画像
- 辞書
- 配列