クラスター機能の詳細

クラスター機能

※ この機能は実験的機能として提供中です。

Sora はクラスター機能を保有しています。Sora そのものはサーバーダウンしにくい製品ですが、ハードウェアなどのプラットフォームに障害があった場合を想定し、複数台の Sora (ノード) でクラスターを構築することで、可用性を高められるようにしています。

Sora 接続時のクライアントの挙動
クライアントは、基本的にクラスター構成を取るすべてのノードに対して WebScoket 接続を試み、その後、一番早く接続を確立したノードと通信を行います。
クラスターのリレー機能
※ この機能を利用するには、クラスターを構築するノードの数に合わせた「最大ノード数ライセンス」の契約が必要です。
Sora は 2024 年 6 月リリースの Sora 2024.1.0 より、クラスターのリレー機能を搭載しています。各ノード間で双方向にリレーができるため、どのノードに接続しても特定のチャネルに参加できます。 これまでのクラスター機能では、特定のチャネルに参加するクライアントは特定のノードにしか接続できない仕様でしたが、どのノードに接続しても特定のチャネルに参加できるようにし、スケールアウトを可能にしました。
上記の図では、クライアント B がクライアント A と異なるノードの Sora 2 に接続しても、クラスターのリレー機能により、クライアント A と同じチャネル (Channel ID = egg) に参加できます。
クラスターのアフィニティ機能
※ この機能を利用するには、クラスターを構築するノードの数に合わせた「最大ノード数ライセンス」の契約が必要です。
Sora ではクラスターのリレー機能と合わせて、アフィニティ (= 寄せ) 機能を提供しています。アフィニティ機能とは、同一のチャネルに参加するクライアントはできるだけ同じノードに集めるという仕組みです。 クラスターのリレー機能で無秩序にクライアントを各ノードに分散させるよりも、このアフィニティ機能も同時に利用して、同一チャネルに接続するクライアントは可能な限り同一ノードに寄せた方が、遅延は抑えられます。
上記の図では、先に Channel ID = egg に参加しているクライアントが Sora 1 に接続している状態で、新たにクライアント A が Channel ID = egg に参加しようとして Sora 2 に接続した場合、クライアント A はリダイレクトされ、Sora 1 に接続します。
ただし、アフィニティを有効にした場合でも、Sora 1 に接続しているクライアントの数が設定ファイルで指定する接続数の上限に達していたり、 Sora 1 に障害が発生したりしたような状況では、それ以降にクライアント B が Channel ID = egg に参加しようとして Sora 2 に接続した場合、Sora 1 にリダイレクトされることなく、そのまま Sora 2 に接続します。
※ もし Sora 2 よりも Sora 3 のほうが接続数の上限までに余裕がある場合は、Sora 3 にリダイレクトされます (図の③④)
アフィニティ機能はデフォルトでは有効になっていますが、コネクション単位で有効 / 無効を指定できます。
アフィニティ機能が無効な場合は、先に Channel ID = egg に参加しているクライアントが Sora 1 に接続している状態で、新たにクライアント A が Channel ID = egg に参加しようとして Sora 2 に接続した場合、Sora 1 にリダイレクトされることなく、クラスターリレー機能により、そのまま Sora 2 に接続した状態で、Channel ID = egg に参加できます。
ライセンスで決められた最大同時接続数の合計をクラスターで維持する機能
※ この機能を利用するには、クラスターを構築するノードの数に合わせた「最大ノード数ライセンス」の契約が必要です。
Sora 2024.1.0 の新しいクラスター機能では、特定のノードが障害などで利用できなくなった場合でも、ライセンスで決められた最大同時接続数の合計をクラスターで維持することが可能です。
たとえば、Sora の 3 ノード構成のクラスターで、1 ノードあたり最大 100 同時接続だった場合、クラスター全体の合計同時接続数は最大で 300 ですが、いずれかの 1 ノードに障害が発生した際には、残りの 2 ノードがそれぞれ 50 同時接続ずつを引き受け、各ノード 150 同時接続ずつ、クラスター全体では 300 同時接続を維持できるようになっています。
クラスターのテンポラリーノード機能
※ この機能を利用するには、クラスターを構築するノードの数に合わせた「最大ノード数ライセンス」の契約が必要です。
テンポラリーノードとは Sora のクラスター構成の維持には影響しないノードのことで、通常のノードとは区別されます。 また、テンポラリーノードは通常のノードと異なり、停止させるだけでクラスターから削除できます。 そのため、追加のノードが必要になった場合には気軽にテンポラリーノードを追加してスケールアウトさせることができ、また、不要になった場合にはテンポラリーノードを停止させることで、手軽にスケールインさせることができます。 このテンポラリーノードは、たとえば、接続数の増減に合わせて一時的にノードを増やしたり減らしたりしたいような場合の利用を想定しています。
通常、クラスターを構築する場合は、クラスター構成の維持に影響するノードの数を奇数にすることを推奨しています。このテンポラリーノードはクラスター構成の維持には影響しないため、上記の図のように一時的にテンポラリーノードを追加した結果、ノード数の合計が偶数でも問題はありません。

クラスター機能の詳細は ドキュメント をご参照ください。

クラスターリレー機能の評価用ライセンスについて

現在、Sora をご契約中のお客様向けに、クラスターリレー機能をお試しいただくために必要な 「最大ノード数ライセンス」 を無料で 1 ヶ月間ご提供させていただいています。
ご希望のお客様は、ご契約者様専用の Sora サポートまでご連絡ください。