ロードバランシングの設定
最終更新日 2021-10-25
このガイドでは、2つ以上のオリジンサーバー間で自動的にロードバランシングを取る方法を説明します。ロードバランシングでは、リソースの使用を最適化し、単一のリソースの過負荷を避けるために、リクエストを複数のサーバーに配信します。
設定前の注意点
ロードバランシングを設定する前に、以下の点に注意してください。
- オリジンシールドを有効にした際のエラーを防ぐために、自動ロードバランシンググループのすべてのバックエンドが同じオリジンシールドの位置を使用する必要があります。
- オリジンサーバーの条件によって、自動ロードバランシングの動作が直接変わります。自動ロードバランシングが正しく機能するように、条件を確認してください。
- 多くのお客様は、ロードバランシング機能の設定と同時にフェイルオーバーを設定しています。フェイルオーバーの設定方法については、こちらをご覧ください。
ロードバランシングを有効にする
2つ以上のオリジンサーバーでロードバランシングを有効にするには、以下の手順に従ってください。
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスを使用すると、ID、名称、ドメインでの検索が行えます。
- Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
- Origins をクリックします。Origins ページが表示されます。
- 編集する Host の名前をクリックします。Edit this Host ページが表示されます。
- Auto load balance メニューからは Yes を選択します。
-
Weight フィールドには、オリジンサーバーに送信するトラフィック全体の割合を入力します。
ヒントWeight フィールドに指定した整数は、総トラフィックのうち、特定のオリジンサーバーに送信する割合を示します。各オリジンサーバーは、全体のトラフィックのうち、指定した数字と同じ割合 (<weight>/<total>) のトラフィックを受信します。例えば、オリジンサーバーが A と B の2つある場合、両方のウエイトを50に設定すると、2つの間でトラフィックが均等に分割されます。各オリジンサーバーは、お客様の総トラフィックの50%を受け取ります。オリジンサーバー A のウェイトを55に増やし、オリジンサーバー B のウェイトを45に減らすと、トラフィックの割合はそれぞれ55%と45%に変わります。
- Update ボタンをクリックします。
-
自動ロードバランシングのグループに含めるオリジンサーバーごとに、手順5、6、7、8を繰り返します。
注意各 Fastly サービスにて、最大5つのオリジンサーバーを設定することができます。お客様のアカウントで各サービスにて5台以上のオリジンサーバーを有効にする場合は、sales@fastly.com までお問い合わせください。
- Activate ボタンをクリックして設定変更をデプロイします。
ロードバランシングで条件を使用する
オリジンサーバーやヘッダーに条件を設定して、ロードバランシングの動作を変更することができます。
オリジンサーバーの条件設定
オリジンサーバーに条件を設定すると、自動ロードバランシングの仕組みが変わる可能性があります。ロード・バランシング・オートダイレクターは、同じような条件に基づいてサーバーをグループ化します。それにより、異なる条件をオリジンのグループに割り当て、オートダイレクターのサブセットを効果的に作成することができます。オリジンサーバーの各グループにてロードバランシングに影響を及ぼす条件が異なる場合、オートロード機能は異なるサーバー間でランダムにロードバランシングすることはありません。
ヘッダーの条件設定
条件は、ヘッダーを通してサーバーに割り当てることもできます。例えば、F_Fastly、F_Second_backend、F_Third_backend という3つのサーバーがあり、特定のプリフィックスを持つすべての URL をデフォルトでセカンドサーバーにしたいとします。まず、ヘッダーを作成します。
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスを使用すると、ID、名称、ドメインでの検索が行えます。
- Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
- Content をクリックします。Content ページが表示されます。
-
Headers エリアで Create header ボタンをクリックすると、新しいヘッダーが作成されます。Create a header ページが表示されます。
- Create a header のフィールドを以下のように入力します。
- Name フィールドに、新しいヘッダーを説明する名前を入力します (例:
Media Requests
)。 - Type メニューから Request を選択し、Action メニューから Set を選択します。
- Destination フィールドに、アクションの影響を受けるヘッダーの名前を入力します (例:
backend
)。 - Source フィールドには、このヘッダーのコンテンツの取得元となるオリジンサーバーの名前を入力します (例:
F_Second_backend
)。 - Ignore if set フィールドと Priority フィールドは、デフォルトの設定のままにしておきます。
- Name フィールドに、新しいヘッダーを説明する名前を入力します (例:
- Create をクリックします。
ヘッダーを作成した後、URL が希望のプリフィックスに一致した場合に適用する新しい条件を作成します。
-
Headers エリアで、作成したばかりの新しいヘッダー名の横にある Attach a condition リンクをクリックします。Create a new request condition ウィンドウが表示されます。
- Create a new request condition フィールドに以下のように入力します。
- Name フィールドに、新しい条件を説明する名前を入力します (例:
Media Files
)。 - Apply if フィールドに、適用されるリクエスト条件を入力します (例:
req.url="^/media"
)。 - Priority の設定はデフォルトのままにしておきます。
- Name フィールドに、新しい条件を説明する名前を入力します (例:
- Save and apply to ボタンをクリックすると、ヘッダーの新規条件が作成されます。
- Activate ボタンをクリックして設定変更をデプロイします。
以下の生成された VCL は、3つのサーバーに設定されたオートダイレクターを示しています。sub vcl_recv
のセクション内では、デフォルトのオリジンサーバーがオートディレクターに設定されており、メディアの条件が満たされた場合には、リクエストをセカンドサーバーに転送されるようになっています。この条件が満たされない場合、リクエストは3つのサーバーのうち1つにランダムに転送されます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
director autodirector_ random {
{
.backend = F_Second_backend;
.weight = 100;
}{
.backend = F_Third_backend;
.weight = 100;
}{
.backend = F_Fastly;
.weight = 100;
}
}
sub vcl_recv {
#--FASTLY RECV CODE START
if (req.restarts == 0) {
if (!req.http.X-Timer) {
set req.http.X-Timer = "S" time.start.sec "." time.start.usec_frac;
}
set req.http.X-Timer = req.http.X-Timer ",VS0";
}
# default conditions
set req.backend = autodirector_;
# end default conditions
# Request Condition: Media files Prio: 10
if (req.url ~ "^/media") {
# Header rewrite Media Requests : 10
set req.backend = F_Second_backend;
}
#end condition
#--FASTLY RECV CODE END
}