LoginSignup
0
0

More than 1 year has passed since last update.

Sync Gatewayデプロイメント:ロードバランサーとの連携

Last updated at Posted at 2022-03-10

はじめに

ここでは、Couchbase Mobileを構成するSync Gatewayをデプロイする際のロードバランサーとの関係について解説します。

なお、Couchbase Mobileについては、Couchbase Mobileアプリケーション開発へのロードマップに記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。

また、Couchbase Mobileは、Couchbase LiteとCouchbase Serverとのデータ同期機能を提供します。Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著NoSQLドキュメント指向データベースCouchbase Serverファーストステップガイド(インプレスR&D刊)や、NoSQL/JSONデータベースCouchbase Server理解・活用へのロードマップにまとめてある記事をご参考ください。

ロードバランサーとの連携

Couchbase Serverは、他のNoSQLデータベースと同様、分散環境としてそれ自体冗長性を備えています。一方、Sync Gatewayについては、外部的に冗長性を担保する必要性があります。冗長性のみではなく、水平方向のスケーリングという面でも同様です。Couchbase Serverでは、クライアントは、クラスターとの接続時にクラスターマップというクラスターの構成情報を受け取り、以降の接続では、対象となるノードに直接アクセスするため、ロードバランシングが介入する必要はありません。Sync Gatewayでは、複数ノードでクラスター構成を取る場合には、クライアントからのアクセスを仲介するロードバランサーを用いることになります。

あるいは、冗長性や水平方向スケーリングを置いたとしても、インターネット上のCouchbase Liteアプリケーションとの接続のためにリバースプロキシを用いるのは、通常クライアントがアプリケーションサーバーであるCouchbase Serverの場合とは違った意味があります。

これらを以下のように整理できます。

  • クライアントからのリクエスト(からの負荷)を、複数のSync Gatewayインスタンスに分散する。
  • Sync Gatewayサーバーの存在を外部から隠す。これによって、サービスがインターネットに公開されているときにSync Gatewayインスタンスを保護する。
  • アプリケーションファイアウォール機能によって、Sync Gatewayを一般的なWebベースの攻撃から保護する。
  • Sync GatewayからSSLターミネーションをオフロードする。これによる、多数のモバイルデバイスをサポートする場合のオーバーヘッドを分散する。
  • 各着信要求のURLを書き換える。例えば、ポート80を、標準のSync GatewayのパブリックREST APIポート4984にマップする。

ここでは、Sync Gatewayでロードバランサーを使用する際の考慮点や参照可能な情報について紹介します。

WebSocket接続における考慮点

WebSocket接続を開いたままにするために、Couchbase Lite(レプリケーター)は300秒(5分)ごとにWebSocket PINGメッセージ(ハートビート)を送信します。このハートビートは、Couchbase LiteとSync Gateway間の接続を維持するために必要です。

ハートビートを成立させるためには、介在するロードバランサーのキープアライブタイムアウト間隔がハートビート間隔より長い必要があります。そのため、必要に応じてロードバランサーのWebSocketプロキシ設定します。または、Couchbase Liteのハートビート間隔を変更することもできます。

AWS Elastic Load Balancer(ELB)との連携

Sync GatewayとCouchbase Liteは、変更フィードに対して長時間実行される接続を持つ可能性があるため、ELBのアイドルタイムアウト設定を最大値の3600秒(1時間)に設定します。

この設定を変更する方法の詳細については、以下を参照することができます。

NGINXとの連携

以下のCouchbase公式ドキュメントでは、NGINXを、Sync Gatewayのために利用する方法が解説されています。

トランスポート層セキュリティ(HTTPS、SSL)

本番環境でクライアントとSync Gateway間の接続を保護するには、トランスポート層セキュリティ(TLS、HTTPSまたはSSLとも呼ばれます)を使用する必要があります。

これにより、盗聴者に対して、データ(パスワードやログイントークンを含む)が暗号化されるだけでなく、 Man-In-The-Middle攻撃に対する防御になります。

NGINXとSync Gatewayの間の接続にX.509証明書を用いたTLSを有効化する方法についても、上述のドキュメントで解説されています。

関連情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0