debiancdn
AWS, Content Delivery Network and Debian
Elastic Load Balancerをつかってwebsocketを処理する方法
2012/03/03
投稿者: : AWSにはElastice Load Balancerというロードバランサがあります。これはとても安いこともあって多くのお客様のwebサービスで使っていただいています。
最近はwebsocketを使いたい!という声もありますが、いくつかの制限により、
ELBは最初のネゴシエーションにだけ使って、ネゴシエーション後のwebsocketにかかわらない方法がおすすめです。
そもそも問題は、
- ELBの場合、HTTPモードだとそもそも同じポートのままではwebsocketに遷移できない。
- ELBでTCPモードにした場合でも60秒でタイムアウトする。
の2点が原因です。そのため、2つの方法があります。
解1: ELBは最初のネゴシエーションにだけ使って、ネゴシエーション後のwebsocketにかかわらない方法
C ---------> ELB(HTTPモード) --> S ふつうにHTTPでアクセス。 C <--------- ELB <---- S スクリプトがダウンロードされる
このスクリプトには Sのアドレスpublic ホスト名がそのまま埋めてある
C -------------------> S websocketで接続 C <--------------------S websocketのネゴ
という具合でELBは最初にだけかかわります。
解2: websocketでping/pongを行う
クライアントをいじるのはむずかしいでしょうから、サーバ側からPINGを60秒に一度
はなげることになります。
C ---------> ELB(TCPモード) --> S ふつうにHTTPでアクセス。 C <--------- ELB <---- S スクリプトがダウンロードされる C ----------> ELB ------> S websocketで接続 C <---------- ELB <----------S
websocketのpingを以降、たとえば30秒に一度なげます。
フィット性に優れ、着用感良好素材:身頃SPLASHER S切替SPLASHER品質:身頃ポリエステル70・ポリウレタン30切替ポリエステル75・ポリウレタン25はっ水:保水率を下げ、泳ぎやすさを高めた素材。高級ダウンブランド http://artcocrafts.com/projects/crochet/cool/20141203003147-e9ab98e7b49ae38380e382a6e383b3e38396e383a9e383b3e38389-jlgs.html
Thank yoou for writing this