debiancdn

AWS, Content Delivery Network and Debian

Elastic Load Balancerをつかってwebsocketを処理する方法

AWSにはElastice Load Balancerというロードバランサがあります。これはとても安いこともあって多くのお客様のwebサービスで使っていただいています。

最近はwebsocketを使いたい!という声もありますが、いくつかの制限により、

ELBは最初のネゴシエーションにだけ使って、ネゴシエーション後のwebsocketにかかわらない方法がおすすめです。

そもそも問題は、

  1. ELBの場合、HTTPモードだとそもそも同じポートのままではwebsocketに遷移できない。
  2. 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秒に一度なげます。

Elastic Load Balancerをつかってwebsocketを処理する方法」への2件のフィードバック

  1. Markus Dunnell 2016/12/09 8:42 pm

    フィット性に優れ、着用感良好素材:身頃SPLASHER S切替SPLASHER品質:身頃ポリエステル70・ポリウレタン30切替ポリエステル75・ポリウレタン25はっ水:保水率を下げ、泳ぎやすさを高めた素材。高級ダウンブランド http://artcocrafts.com/projects/crochet/cool/20141203003147-e9ab98e7b49ae38380e382a6e383b3e38396e383a9e383b3e38389-jlgs.html

  2. Superyo Literatura 2024/05/13 9:53 am

    Thank yoou for writing this

コメントを残す