CreateYourVPN Academy
コース: 仕組みを学ぶ

ルートと負荷分散

CreateYourVPNにおけるルートとは何か、1分で作る方法、空のルートがなぜ便利なのか、そしてシステムがどのようにユーザーをサーバーに分散させるのかを解説します。

ルートは、あなたのインフラとユーザーに見えるものをつなぐ橋渡し役です。あなたはサーバーとインバウンドを管理し、一方でユーザーはアプリの中で短い「サーバー」のリストを目にします — そのリストの各項目は、実際にはルートなのです。

ルート = ユーザーのアプリの1行

ルートとは、クライアントのサブスクリプションの中で、1つの名前にまとめられたインバウンドのグループです。 ルールはシンプルです:

空でないルート1つ = ユーザーのサーバーリストの項目1つ。

ルートには1つのインバウンドだけを入れることも、異なるサーバーにまたがる10個のインバウンドを入れることもできます。ユーザーにはこれが見えることはありません: ユーザーは「🇺🇸 アメリカ」を選ぶだけで、実際にどのサーバーに接続されるかはロードバランサーが決めます — 詳しくは後述します。

なお、ユーザーに表示される名前は、選択されたインバウンドの名前です: インバウンドにわかりやすい名前を付ければ(「🇺🇸 ニューヨーク」「🇺🇸 ダラス」)、それがそのままユーザーに表示されます。

最初のサーバーを接続すると、システムは自動的にデフォルトルートを作成し、 最初のインバウンドをそこに入れます — だからこそ、1つも設定をしなくても、 すぐにすべてが動くのです。ルートが本領を発揮するのは、もっと欲張りたい とき: 複数の国、専用の「ストリーミング」ルート、といった場合です。

ルートを作成する

クラスターページの**「ルート」セクションで、「新規ルート」**をクリックします。ウィザードには3つのセクションがあります。

  1. クライアントにはこのルートがどう見えるか — 名前(例: 🇺🇸 アメリカ)と国旗です。これがルートの「看板」になります。
  2. 負荷分散アルゴリズム — 「トラフィック最小負荷」(デフォルト)または「ラウンドロビン」。違いは以下で説明します。
  3. プール内のインバウンド — どのインバウンドをこのルートに含めるか。このセクションは任意です: 空のルートを作成して、あとからドラッグで追加することもできます。

インバウンドが所属できるルートは1つだけです。 すでに別のルートに 割り当てられているインバウンドを選ぶと、そのインバウンドは新しい方に 移動します。こうすることでシステムは、各入口のトラフィックが常に ちょうど1つのルールセットで統制されることを保証しています。

トポロジー図: ルートをひと目で確認する

クラスターページでは、ルートはライブの図として表示されます: 左側にサーバーとそのインバウンド、右側にルートのボックスです。インバウンドはマウスでドラッグできます: インバウンドをつかんで、別のルートにドロップすれば完了です。**「未割り当て」**というゾーンもあります — ここにインバウンドをドロップすると、すべてのルートから切り離されます。

ルートのボックス自体も並べ替えることができます(ドラッグハンドルや矢印を使って)— これは見た目上の並び順を変えるだけの、あなたの利便性のためのものです。

空のルート

インバウンドが1つもないルートは、破線の枠で描かれ、分配ノードへの「パイプ」もありません — これはユーザーからは見えないことを示すサインです。空のルートは便利なプレースホルダーになります: 「🇯🇵 日本」をあらかじめ作っておき、日本のサーバーが用意できたらインバウンドをドラッグして入れる — それだけでルートが生きたものになります。

逆のケースもハイライトされます: どのルートにも属していないインバウンドがある場合、パネルは警告してくれます — 「◯件のインバウンドがどのルートにも割り当てられていません — クライアントにはまだ表示されません」。

負荷分散: 誰がどのサーバーに振り分けられるか

ユーザーが接続をリクエストすると、システムは各ルートについて、プールの中から1つのインバウンドを選びます — これはリアルタイムで、最新のサーバーメトリクス(レッスン3で扱ったものです)に基づいて行われます。アルゴリズムは2種類あります。

「トラフィック最小負荷」(デフォルト)

システムは、各サーバーに残っているユーザー1人あたりの空き帯域を見ます: チャネルの容量から現在のトラフィックを差し引き、接続中のユーザー数で割ります。いちばん余裕のあるサーバーが選ばれます。これは「実際の負荷」に基づく公平な振り分けです: 非力で飽和しているサーバーは、たとえ形式上の接続人数が少なくても、新しいユーザーを受け取ることはありません。

チャネルの容量は、システムが自動的に推定します — 実際のトラフィックで観測されたピークから算出されます(サーバーがしばらく負荷を受けていないと、そのピークは徐々に「冷えて」いきます)。

「ラウンドロビン」

シンプルなルールです: 新しいユーザーは、現在いちばん人数の少ないサーバーに送られます — ただしサーバーの係数による調整が入ります。係数は重みです: 係数 2.0 のサーバーは「2倍の広さがある」とみなされ、係数 1.0 の隣のサーバーと比べて、おおよそ2倍のユーザーを受け取ります。これにより、性能の異なるマシンにも公平に負荷をかけることができます。

プール内のあるサーバーに、まだ容量の推定値がない場合(例えば、そのサーバー が真新しく、まだトラフィックのピークを一度も経験していない場合)、 そのルートはラウンドロビンへと自然にフォールバックします — こうして 判断は常に、実際に存在するデータに基づいて行われます。

再配分はいつ行われるか

常に、そして自動的にです。サーバーの選択は、リクエストのたびに最新のメトリクスをもとに再計算されます: 負荷が変化すれば、新しいユーザーはより空いているサーバーに振り分けられるようになります。同時に、システムは条件が同じであれば同じユーザーには同じ選択を維持しようとします — そうすることで、その人の「サーバー」が行ったり来たりしないようにしています。

もう1つの安全策があります: モニタリングが利用不可と判断したサーバーは、選択対象から除外されます — 詳しくはレッスン7で扱います。

要点まとめ

  • ルートは、インバウンドのグループの「看板」。空でないルート = ユーザーのアプリの1行。
  • 1つのインバウンドが属せるルートは1つだけ。どのルートにも属していないインバウンドは、クライアントからは見えない。
  • 空のルートはごく普通のプレースホルダー: 破線のボックスで、ユーザーからは隠されている。
  • 2つのアルゴリズム: 空き帯域による方式(スマート、デフォルト)と重み付きラウンドロビン
  • 負荷分散はリアルタイム: 接続のたびに、現在のメトリクスをもとに再計算される。

次のレッスン

On this page