エンハンスドロードバランサ¶
[更新: 2024年10月30日]
アプライアンス「エンハンスドロードバランサ」の仕様詳細や利用方法についての説明ページです。
概要¶
「エンハンスドロードバランサ」は、大規模なHTTP/HTTPSサービスに最適なロードバランサアプライアンスです。お客様が構築したスイッチに接続しDSR型のロードバランサとして機能する ロードバランサ アプライアンスや、DNSが応答するIPアドレスにより実サーバへのアクセス分散を行う GSLB と異なり、さくらのクラウドのグローバルネットワークに設置するプロキシ型のロードバランサとして動作します。大規模・高性能・高機能なロードバランサが求められる環境に適した機能です。
参考
エンハンスドロードバランサと、GSLB 、 ロードバランサ の違いについては、よくある質問と回答の 4種類のロードバランサアプライアンスの違いは何ですか? を参照ください。
主な機能¶
- HTTPおよびHTTPSに特化したプロキシ型のロードバランサです(TCPでのロードバランシングも可能ですが、Let’s Encrypt証明書設定やレスポンスヘッダ設定などのL7関連機能はご利用いただけません。詳しくは こちら )。
- SSL証明書を設定することでHTTPSの負荷を実サーバからロードバランサ側にオフロードすることが可能です。SNIに対応し、1つのエンハンスドロードバランサに20枚のSSL証明書を設定できます。
- Let’s Encryptが発行する無料SSLを使用する場合、証明書のインストールや更新作業を自動で行うことができます。
- ロードバランシング先となる実サーバはさくらのクラウドの他、 さくらのVPS や 専用サーバ など、さくらインターネットがお客様向けに提供するグローバルIPアドレスを指定できます(さくらのレンタルサーバなど共用型サービスは除きます)。
- 設定した条件に沿って実サーバのヘルスチェック(監視)を実施し、一定期間応答に失敗した実サーバは振り分け先から除外し可用性を高めます。
- 仮想IPアドレス(VIP)を監視し、DoS攻撃などにより応答しなくなった場合に自動的にVIPアドレスを変更する VIPフェイルオーバ機能 が利用できます。
- ソーリーサーバ設定機能により、障害やメンテナンス時に一時的にクライアントに情報提供するサーバを設定可能です(さくらのVPSや専用サーバなどの弊社提供サービスのサーバを指定可能です)。
- 実サーバの状態や負荷状況などの稼働状況が、コントロールパネル上のグラフなどで分かりやすく表示されます。
- 負荷状況に応じて随時プラン変更することが可能となり、負荷の高い時間帯や臨時のイベントの際だけよりハイスペックなプランに変更するなど、柔軟で低コストな運用が可能です。
- カスタムレスポンスヘッダ設定機能 により、エンハンスドロードバランサがクライアント側に送出するHTTPヘッダを自由に設定できます。
- セッション維持機能 により、クライアントと通信する実サーバを固定化することができます。
- ルール機能 により、クライアントがリクエスト時に送出するヘッダやパスの情報によって、ロードバランシング先の実サーバを変更したり、指定したURLにリダイレクト、また固定のレスポンスを返すことができます。
- GZIP圧縮機能により、 特定のタイプのコンテンツ を自動的に圧縮し、コンテンツのダウンロードに掛かる時間を短縮できます。
- Syslogサーバのホストとポートを指定することで、 アクセスログをSyslog経由で取得する ことができます。
- 前段に ウェブアクセラレータ を設置(ウェブアクセラレータのオリジンサーバとしてエンハンスドロードバランサを指定)する構成に対応します。
- Proxy Protocol に対応し、実サーバにてクライアントのIPアドレスを取得することが可能です。
- 実サーバとのHTTP持続接続(Keep Alive)の動作を変更することができます。持続接続を変更することで実サーバのリソースを有効活用できます。
- 設置先リージョンを「自動(エニーキャスト)」に設定することで、東京/石狩でのリージョン間冗長が確保され、さらにクライアントの接続も各リージョンから近いロードバランサが自動的に選択されることでレスポンスタイムの短縮も期待できます。
仕様¶
エンハンスドロードバランサの仕様は以下の通りです。
ネットワーク構成方式 | プロキシ方式 |
---|---|
ロードバランシングが可能なプロトコル | HTTP, HTTPS, WebSocket(ws,wss), TCP ※IPv6接続には非対応となります ※TCP利用時はL7関連機能は使用できません |
HTTPS接続時に対応する暗号化プロトコル | TLS 1.2, TLS 1.3 |
HTTP/2接続 | 対応(HTTPS使用時にデフォルトで有効) |
ロードバランサの冗長化 | ・標準で複数台構成による拠点内冗長化に対応済み ・自動(エニーキャスト) 選択時は拠点内冗長化に加え東京/石狩リージョン間での冗長化に対応 |
仮想IPアドレス(VIP)、ポート番号 | 1台ごとにグローバルIPアドレス1個付属(追加不可)/待受ポート2個設定可 |
設定可能な最大実サーバ数 | 40台 |
Proxy Protocol | Proxy Protocol v2対応。実サーバへの通信に利用できます。有効にした場合、ソーリーサーバを除き、 ヘルスチェックを含む全ての実サーバへの通信が Proxy Protocol で行われます。 |
設定可能なカスタムレスポンスヘッダ | 待受ポートごとに最大10個 |
ルール機能で設定可能なルール数 | 最大20ルール |
振り分けアルゴリズム | least connection |
セッション維持機能 | 対応(クッキー方式) ※詳しくは セッション維持機能 の項目を参照ください |
GZIP圧縮対象コンテンツタイプ | text/html text/plain text/css text/javascript application/x-javascript application/javascript application/json text/js text/xml application/xml application/rss+xml image/svg+xml ※クライアントが圧縮されたコンテンツをサポートしている場合のみ圧縮されます。 ※実サーバ上ですでにコンテンツが圧縮されているされている際には、再度圧縮はしません。 |
ヘルスチェック判定 | ・サーバダウン判定のチェック回数: 3回連続タイムアウト(httpの場合は"200"番台または"300"番台以外のステータスコード)でダウン判定 (タイムアウト判定は「チェック間隔」で指定した秒数と同値) ・サーバアップ判定のチェック回数: 2回連続で成功した場合にアップ状態に遷移 ※タイムアウトはTCP監視においてはTCPコネクション確立までの時間、http監視においてはhttpレスポンス受信までの時間となります。 ※httpの場合は対象パスに対しHEADメソッドで応答確認を行います。 |
設定可能なSSL証明書の形式 | PEM形式, RSA 1024/2048/3072/4096bit, ECDSA secp256r1, 公開鍵, 中間証明書, 秘密鍵 |
SNI(Server Name Indication)機能 | 対応 |
設定可能なSSL証明書の枚数 | 20枚(プライマリ1枚+オプショナル19枚) |
ワイルドカード証明書の設定 | 可能(ワイルドカードに合致する全てのホスト名でHTTPS接続が可能となります) ※ホスト名ごとに振り分け先実サーバを設定する機能はありません |
付加するHTTPヘッダ | 実サーバへのプロキシ時に以下のHTTPヘッダを付加します。 X-Forwarded-For : リクエスト元IPアドレス X-Forwarded-Proto : 終端プロトコル("http"もしくは"https") X-Real-IP : リクエスト元IPアドレス X-Original-For : エンハンスドロードバランサ受信時のX-Forwarded-Forヘッダの値(ヘッダが含まれていなかった場合は値部は空欄) X-Original-Proto : エンハンスドロードバランサ受信時のX-Forwarded-Protoヘッダの値(ヘッダが含まれていなかった場合は値部は空欄) X-Original-Real-IP : エンハンスドロードバランサ受信時のX-Real-IPヘッダの値(ヘッダが含まれていなかった場合は値部は空欄) ※リクエスト時の条件により各ヘッダの内容が変化します。詳しくは こちら の項目を参照ください。 Via : リクエストのループを防ぐため付加されます ※Viaヘッダについては こちら も参照してください。 |
SSLセッションチケット | 対応 |
エンハンスドロードバランサへのリクエスト状況により内容が変化するHTTPヘッダ¶
エンハンスドロードバランサの前段に ウェブアクセラレータ を使用する場合など、エンハンスドロードバランサへ接続した際のリクエストヘッダに X-Forwarded-For
, X-Forwarded-Proto
, X-Real-IP
いずれかがすでにセットされている場合、実サーバへのプロキシ時のリクエストヘッダは以下のように書き換えられます。
書き換え内容 | |
X-Forwarded-For | X-Forwarded-For → リクエスト元(前段プロキシなど)のIPアドレスに書き換え X-Original-For → リクエスト時の X-Forwarded-For の値をセット |
X-Forwarded-Proto | X-Forwarded-Proto → リクエスト元(前段プロキシなど)接続時のプロトコル("http"もしくは"https")に書き換え X-Original-Proto → リクエスト時の X-Forwarded-Proto の値をセット |
X-Real-IP | X-Real-IP → リクエスト元(前段プロキシなど)のIPアドレスに書き換え X-Original-Real-IP → リクエスト時の X-Real-IP の値をセット |
注意
・これら3種のヘッダのいずれかが含まれていた場合は上記のルールでヘッダの書き換え/追加ヘッダへの値のコピーが行われて実サーバに送出されます。受信されなかった場合は値が空欄で追加ヘッダを送信します。
・アクセス元がすでに X-Original-For , X-Original-Proto , X-Real-IP いずれかのヘッダを送出していた場合は元の内容は破棄され、上記ルールでこれらヘッダの上書きが行われます。
例として、これらの条件での動作となる ウェブアクセラレータ を組み合わせた場合、以下のような設定を行うことでウェブアクセラレータ側での接続クライアント情報を取得することができます。
- ウェブアクセラレータのオリジンガード機能を有効にし、エンハンスドロードバランサ配下の実サーバにてリクエストのバリデーションを行う
- ウェブアクセラレータが付与する
X-Real-IP
の値がX-Original-Real-IP
ヘッダにセットされるので、エンハンスドロードバランサ配下の実サーバにて本来のアクセス元IPアドレスとしてこのヘッダを参照する
※ X-Real-IP
は詐称が可能なため、1.によりウェブアクセラレータからのリクエストであることを検証することで、 X-Original-Real-IP
ヘッダの信頼性が担保されます
ヒント
ウェブアクセラレータ は大阪と東京に設置されるため、設置先リージョンは「東京」、さらにリージョン間冗長による耐障害性を向上させたい場合は自動(エニーキャスト)を選択することを推奨します。
エニーキャストについて¶
新規作成時の「設置先」リージョンでは、それぞれ設置先が固定となる「東京」・「石狩」のほか、リージョンに依存しない「自動(エニーキャスト)」を選択することが可能です。
注意
設置先リージョンが東京/石狩固定を選択した場合とは料金が異なります。
エニーキャストでは設置先リージョン固定と比べ、以下のような特徴があります。
- リージョン間で冗長化されます。あるリージョン内のエンハンスドロードバランサに障害が発生した場合、自動的に他の健全なリージョンに設置されたエンハンスドロードバランサが応答し、可用性を高めます。
- 接続するクライアントへの応答は、自動的にネットワーク的に近いリージョンのエンハンスドロードバランサが選択されます。これにより設置先リージョン固定の場合よりクライアントへのレスポンスタイムがより短縮されます。
料金¶
料金については サービスサイト をご確認ください。
エンハンスドロードバランサは秒間の新しい接続の可能数(CPS)ごとにプランを用意しており、プラン名がそのままhttpやtcpでの秒間アクセス数の上限を表します。httpsの場合はプラン名に表示されるCPS値の10分の1の性能となります(例: 1,000CPSプランではHTTPの場合1,000CPS上限、HTTPSの場合100CPS上限)。
※性能値として表示されるCPSは秒間の新規接続可能数であり、すでに確立されている接続やその上で行われるHTTPリクエスト数には影響しません。
重要
※各プランの上限値を越える秒間あたりの新規接続が発生した場合、処理中の接続が完了するまでは接続待機状態となり、クライアントからの再送が行われるまで接続に時間がかかる状態となります。クライアント側へは即時にエラーとして接続を拒否することはありません。 アクティビティグラフ よりセッション数を確認できますので、契約中のプランを超過するセッションが発生する場合は無停止で操作可能な プラン変更 を検討ください。
新規作成¶
エンハンスドロードバランサの新規作成や作成済みエンハンスドロードバランサの管理は、コントロールパネル左側のメニュー「グローバル」以下にある「エンハンスドLB」を選択して行います。作成済みのエンハンスドロードバランサはリストに表示され、それをダブルクリックすることで該当のエンハンスドロードバランサの管理を行うことができます。
注釈
エンハンスドロードバランサはゾーンに依存しないグローバルリソースとなります。そのため、コントロールパネル左上の選択中のゾーンに関わらず、ログイン中のアカウントがさくらのクラウド上に作成したすべてのエンハンスドロードバランサが表示されます。
新規に作成する場合は右上の「追加」ボタンをクリックします。
新規作成画面が表示されます。
各フォームには以下の情報を入力します。
設置先リージョン(*) | エンハンスドロードバランサの設置先リージョンを選択します。 「自動(エニーキャスト)」を選択すると東京/石狩の両方のリージョンにエンハンスドロードバランサが設置されます。詳しくは エニーキャストについて の項目を参照ください。 「東京リージョン」または「石狩リージョン」選択時はVIPアドレスが該当リージョン内ネットワークから払い出されたものとなり、クライアントからの接続や実サーバへのプロキシ元も該当リージョンで行われます。 ※作成後に応答方式や設置先リージョンの変更はできません |
---|---|
性能上限(*) | 作成するエンハンスドロードバランサの性能上限となるCPS(Connection per second;1秒あたりの新しい接続が可能となる数)を表示される8種類から選択します。 それぞれの性能上限値により価格が異なり、ラジオボタンを選択するたびに画面上部の料金表の表示が変化します。 ※表記の性能上限値はhttp使用時です。https使用時はhttp使用時の10分の1程度の性能となります。 |
VIPフェイルオーバ | VIPフェイルオーバ機能を有効にする場合にチェックを入れます。 ※詳しくは VIPフェイルオーバ機能 の項目を参照ください。 |
セッション維持 | セッション維持機能を有効にする場合にチェックを入れます。 ※詳しくは セッション維持機能 の項目を参照ください。 |
実サーバ通信タイムアウト(秒) | エンハンスドロードバランサが実サーバからの応答を待つ時間を10秒~600秒の範囲で指定します(デフォルト値は10秒)。 指定した時間まで無通信状態が継続した場合はクライアント側にHTTPステータスコード504(Gateway Timeout)を返答(プロキシ方式がhttpまたはhttpsの場合)、もしくはTCP接続がタイムアウト(プロキシ方式がtcpの場合)します。 ※本設定値は実サーバのヘルスチェック判定には影響しません。判定条件については 仕様表 の「ヘルスチェック判定」の項目を参照ください |
監視方法(*) | 実サーバのヘルスチェックの方法を"http"または"tcp"から選択します。 ※ヘルスチェックは実サーバ登録時に入力するポート番号に対して行われます ※プロキシ方式に「tcp」を選択した場合の監視方法はtcpのみとなります |
Hostヘッダ ※監視方式に"http"を選択した場合のみ表示 |
フォームに入力されている場合、実サーバの監視時のhttpリクエストヘッダ"Host: "に、入力した文字列を付与してリクエストします。 |
パス(*) ※監視方式に"http"を選択した場合のみ表示 |
実サーバの監視時にHEADリクエストするパスを入力します。 |
チェック間隔(秒) (*) | 実サーバのヘルスチェックを行う間隔を10秒~60秒の範囲で指定します。 |
ソーリーサーバ | バランシング先が全てダウン状態となった場合に表示するホストを設定します。 ラジオボタンで"入力"(任意のホストのIPアドレス・ポート番号を入力)または"サーバから選択"(ログイン中のアカウントで作成済みのサーバから選択)のいずれかの方式で指定することができます。 |
名前 / 説明 / タグ / アイコン | サーバやディスク、他のアプライアンスと同様に、わかりやすい名前設定やタグ、 アイコン 機能による分類が可能です。 |
※「*」は必須項目です
※ソーリーサーバはすべての実サーバがダウン判定される、または無効状態となった時に応答するサーバです。ダウン時やメンテナンス時にクライアントに告知する場合に便利です。
※監視方法がhttpの場合、応答するhttpステータスコードが"200"番台または"300"番台のみ正常と判定します。それ以外のステータスコードの場合は異常判定されます。
※実サーバへの監視は「情報」タブに表示されるプロキシ元ネットワーク内の監視サーバから行われます。実サーバ側で制限を行う場合はプロキシ元ネットワークに表示されるネットワーク帯域からのアクセス制限を解除するなど、監視サーバに対して正常な応答が行われるように設定してください。
作成されたエンハンスドロードバランサの情報確認¶
作成が完了するとエンハンスドロードバランサ管理画面のリストに追加され、ダブルクリックで詳細な情報を確認することができます。
重要
VIPやプロキシ元ネットワークなど、DNS参照先をエンハンスドロードバランサに設定したり実サーバの接続制限設定する際に必要となる情報がこの画面に表示されます。作成完了後に必ずご確認ください。
画面内に表示されるエンハンスドロードバランサに特有の項目は以下の通りです。
FQDN | ロードバランサに割り当てられたFQDNです。このFQDNにDNSにてCNAMEを割り振ってロードバランサ機能を利用します。 ※ VIPフェイルオーバ機能 が有効になっている際に表示されます |
---|---|
現在のVIP | ロードバランサに現在割り当てられているVIP(Virtual IP addres; 仮想IPアドレス)です。 クライアント側がこのIPアドレスに接続することにより実サーバのコンテンツが応答されます。 ※ VIPフェイルオーバ機能 が有効になっている場合はフェイルオーバ発生時にVIPが変化します |
プロキシ元ネットワーク | エンハンスドロードバランサが実サーバに接続したりヘルスチェックを実行する際のソースとなるネットワーク範囲です。 ※実サーバ側でエンハンスドロードバランサ以外の接続を拒否するなどの制限を実施する場合はこのネットワーク帯域を許可するようにしてください |
設定¶
新規作成時に指定した情報以外の実サーバの登録や待ち受けポートの設定、https使用時の証明書の登録などはこの画面で進めていきます。
待ち受けプロトコル・ポート設定¶
エンハンスドロードバランサが待ち受けるプロトコルとポート番号を設定します。「待受ポート」タブをクリックすると設定済みのポートが表示されます。新たに追加する場合は「追加」ボタンをクリックします。
設定ダイアログボックスが表示されるのでフォームを入力します。いずれも必須項目となります。
プロキシ方式 | プロキシするプロトコルをhttp/https/tcpより選択します。 |
---|---|
HTTPSへのリダイレクト ※プロキシ方式に"http"を選択時のみ表示 |
「有効」を選択すると、クライアントがHTTPに接続した際にHTTPSへリダイレクトします。 |
HTTP/2のサポート ※プロキシ方式に"https"を選択時のみ表示 |
「有効」を選択すると、HTTP/2での接続に対応します。 |
SSLポリシー ※プロキシ方式に"https"を選択時のみ表示 |
https通信をする際のクライアントとサーバ間での暗号の組み合わせのポリシーを指定します。 サポートしているポリシーについては こちら を参照してください。 |
待受ポート番号 | 待ち受けるポート番号を指定します。 ※エンハンスドロードバランサの仕様上、22と179は指定できません。 |
重要
・プロキシ方式の設定において「tcp」と「http」または「https」を同時に設定することはできません。
・httpsを選択した場合はSSL証明書の設定が必須となります。
・エンハンスドロードバランサと実サーバ間のプロキシ方式が「http/https」の場合はhttp、「tcp」の場合はtcpでの通信となります。
・実サーバにエンハンスドロードバランサ以外からの接続を許可したくない場合は、実サーバ側で接続元をエンハンスドロードバランサ情報のプロキシ元ネットワークに表示されるネットワークのみに制限する設定を行ってください。
設定後、右上の「反映」ボタンをクリックしてアプライアンス側に変更点を保存することで動作に反映されます。
注釈
登録リストは右側の鉛筆アイコン で編集、削除アイコン で削除が行えます。編集や削除作業を行った後も反映ボタンをクリックし変更値をロードバランサ側に保存する必要があります。
カスタムレスポンスヘッダ¶
ロードバランサがクライアントに応答する際に送出するHTTPヘッダを自由に追加できます。ブラウザ内のキャッシュを制御する Cache-Control 、HTTPS接続を強制するHSTSの Strict-Transport-Security などを、追加した待ち受けポートごとに設定することができます。
カスタムレスポンスヘッダ機能はTCPプロキシ方式では利用できません。
注意
ロードバランサがデフォルトで送出するHTTPヘッダと同一のHTTPヘッダを設定した場合、設定した方のHTTPヘッダで上書きされます。
対象のエンハンスドロードバランサを選択し、「レスポンスヘッダ」タブをクリックすると、追加済みの待ち受けポートごとに設定中のカスタムレスポンスヘッダのリストが表示されます。新たに追加したい場合は「追加」ボタンをクリックします。
表示されるダイアログボックスで、レスポンスヘッダとその値を入力します。
入力値がリストに追加された事を確認後、画面上部の「反映」ボタンをクリックし、エンハンスドロードバランサに設定変更を反映します。反映ボタン押下後より、クライアント側にカスタムレスポンスヘッダが応答されるようになります。
注釈
登録済みのカスタムレスポンスヘッダは、リスト右側に表示される鉛筆アイコンで内容の編集、削除アイコンで削除することができます(変更後は新規追加時と同様に「反映」ボタンのクリックが必要です)。
ルール¶
クライアントがリクエスト時に送出するホストヘッダ、パスの情報や任意のリクエストヘッダから、あらかじめ設定したルールとアクションに従ってロードバランシング先の実サーバを指定したり、任意のURLにリダイレクト、または固定のレスポンスを返すことができます。
送信元IPを指定することで、特定のIPアドレス以外からのアクセスを制限することもできます。
ルール機能はTCPプロキシ方式では利用できません。
注意
ルール機能により実サーバを指定するためには、あらかじめ 実サーバ へのサーバグループ設定が必要です。
「ルール」タブをクリックすると登録済みのルールリストが表示されます。追加するには「追加」ボタンをクリックします。
設定ダイアログボックスが表示されるのでフォームを入力します。
アクションのラジオボタンを押すことで、各アクションごとの入力フォームに切り替わります
ホストヘッダ(※) | クライアントがリクエスト時に送出する Host: ヘッダの条件を入力します。 |
---|---|
パス(※) | クライアントがGETやPOSTでリクエストするパスの条件を入力します。 |
送信元IP | リクエストの送信元IPアドレスまたはネットワークを入力します。 |
リクエストヘッダ名 | クライアントがリクエスト時に送出する任意のヘッダ名を入力します。 |
リクエストヘッダ値 | リクエストヘッダ名で指定されるリクエストヘッダの値の条件を入力します。 |
リクエストヘッダ値 大/小文字 | リクエストヘッダ値の条件にて大文字・小文字を区別をするか選びます。 |
リクエストヘッダ値 条件 | リクエストヘッダ値の条件に一致した際にルールを適用するのか、一致しなかった際にルールを適用するのかを選びます。 |
アクション | 「実サーバへの転送」「リダイレクト」「固定レスポンス」から選択します。 |
サーバグループ | 条件が合致した場合に応答するサーバグループを指定します。 ※「実サーバへの転送」アクションを選択した際に表示されます |
※0文字以上の文字列を表す *
と 任意の1文字を表す ?
の2種類のワイルドカードが使用可能です。
※「ホストヘッダ」「パス」など複数の条件が入力されていた場合はAND条件での評価となります。
「リダイレクト」アクションを選択した際
リダイレクト先URL | 条件が合致した場合にリダイレクトするURLを指定します。 ※リクエストの情報を %{key} 記法を使うことで参照することができます|br|※%{host} リクエストのあったホスト|br|※%{path} リクエストのあったURLのパス(1文字目の「/」削除)|br|※%{has_query} リクエストにクエリストリングが存在している場合は「?」なければ空文字|br|※%{query} クエリストリング(1文字目の「?」は含まず) |
---|---|
ステータスコード | リダイレクトのレスポンスを行う際のステータスコードを選択します |
「固定レスポンス」アクションを選択した際
ステータスコード | レスポンスを行う際のステータスコードを選択します |
---|---|
コンテンツタイプ | レスポンスを行う際の Content-Type ヘッダを指定します |
コンテンツボディ | レスポンスのボディを入力します |
固定レスポンスには「Cache-Control: private, no-store」ヘッダが付加されます
注釈
登録リストは右側の鉛筆アイコン で編集、削除アイコン で削除が行えます。編集や削除作業を行った後も反映ボタンをクリックし変更値をロードバランサ側に保存する必要があります。
「ルール」タブ内で表示される設定済みルールのうち、複数ルールにマッチする場合は最初にマッチしたルールが適用されます。ルールの順番はリスト右側の アイコンをドラッグすることで変更できます。
注意
いずれのルールにもマッチしないリクエストはサーバグループが未指定の実サーバに振り分けられます。
マッチしたサーバグループが全てダウン状態の場合や、いずれのルールにもマッチしないリクエストかつサーバグループが未指定の実サーバがひとつもない場合はソーリーサーバの応答となります(ソーリーサーバの設定も無い場合は503ステータスが返答されます)。
また、ルールはエンハンスドロードバランサ内で共通です。待受ポートごとにルールを設定することはできません。
実サーバ登録¶
ロードバランシング先である実サーバを登録します。「実サーバ」タブをクリックすると登録済みの実サーバのリストが表示されます。追加するには「追加」ボタンをクリックします。
設定ダイアログボックスが表示されるのでフォームを入力します。
IPアドレス | 実サーバを指定します。 ラジオボタンの選択により、IPアドレスの直接入力または作成済みサーバから指定することができます。 |
---|---|
ポート番号 | 実サーバに接続する際のポート番号を指定します。 |
有効/無効 | 登録した実サーバを有効にするかどうかを指定します。 |
サーバグループ | 任意のグループ名を設定することで、同一のグループ名となる実サーバをグループ化できます。 ※ ルール機能 で利用します。グループ名が空(未指定)の実サーバはいずれのルールにもマッチしないリクエストが振り分けられます。 TCPプロキシ方式ではグループ名が空(未指定)の実サーバに接続が割り振られます。 |
注釈
・「IPアドレス」と「ポート番号」は必須項目です。「有効/無効」については、反映操作時に設定した実サーバを有効化したい場合は「有効」を、リストへの登録のみ行い現段階では無効にしておく場合は「無効」を選択します。
・サーバグループには英小文字と数字で構成された1~10文字の文字列が指定できます(例外的に 0
および default
の文字列はサーバグループに指定することはできません)。
設定後、右上の「反映」ボタンをクリックしてアプライアンス側に変更点を保存することで動作に反映されます。
注釈
登録リストは右側の鉛筆アイコン で編集、削除アイコン で削除が行えます。編集や削除作業を行った後も反映ボタンをクリックし変更値をロードバランサ側に保存する必要があります。
SSL証明書の設定¶
待ち受けポートのプロキシ方式にhttpsを設定した場合、画面上部に「SSL証明書の設定」ボタンが追加で表示されます。このメニューより各項目を選択することでSSL関連の設定操作を行います。
注釈
Let’s Encrypt関連機能については Let’s Encrypt証明書自動インストール・更新機能 の項目を参照ください。
「追加/変更」¶
SSL証明書の初期登録や登録済み証明書の更新、登録された証明書の削除を行うことができます。この項目を選択すると登録済みの証明書の一覧が表示されます。新たな証明書を追加する場合は右下の「追加」ボタンをクリックします。
証明書の入力フォームが表示されるので、以下の項目を入力します。
SSL証明書(*) | 証明書を入力します。 |
---|---|
中間証明書 | SSL証明書に中間証明書が付属する場合はこのフォームに入力します。 |
秘密鍵(*) | SSL証明書の秘密鍵を入力します。 |
(*): 必須項目
注意
パスフレーズが設定されているSSL証明書の秘密鍵はエンハンスドロードバランサでは使用できません。パスフレーズを解除してから入力してください。
フォームに入力後、「追加」ボタンをクリックすることでエンハンスドロードバランサに証明書が登録され、登録済み証明書一覧画面に表示されます。一覧画面では有効期限の確認や証明書の編集、削除の操作を行うことができます。
注釈
一覧画面右側の鉛筆アイコン をクリックすることで証明書の内容変更、削除アイコン をクリックすることで削除ができます(設定変更後は「反映」ボタンのクリックが必要です)。
注意
証明書を「Let’s Encrypt」から他の認証局で発行されたSSL証明書に変更する際は「Let’s Encrypt証明書自動インストール・更新機能」の 利用停止 を行ってください
エンハンスドロードバランサはSNIに対応しており、プライマリ証明書に加えて19枚の証明書を追加設定することができます。
同じコモンネームの証明書が複数枚登録されていたり、マルチドメイン証明書やワイルドカード証明書があり、クライアントからのリクエストに利用できる証明書が複数ある場合、証明書リストにて上に表示される証明書から使われます。
「証明書の有効期限監視追加(シンプル監視)」¶
シンプル監視 サービスのSSL証明書有効期限アラート設定画面に移動し、設定したSSL証明書に対する有効期限アラートを簡単に設定することができます。詳しくは SSL証明書有効期限アラート 機能のページを参照ください。
新規作成時の設定項目の変更¶
新規作成時に設定した各項目は以下の手順で変更することができます。
注意
プラン変更、基本項目以外の設定変更後は「反映」ボタンをクリックしアプライアンス側に設定情報を反映させる操作が必要です。
プラン¶
新規作成時に指定した性能上限値を作成後に変更することができます。変更したいエンハンスドロードバランサを選択し、右上の「プラン変更」をクリックします。
重要
プラン変更機能は、内部的には「新たなプランのエンハンスドロードバランサ作成」→「設定情報の引き継ぎ」→「旧プランのエンハンスドロードバランサ削除」の一連の処理が自動的に行われる流れとなります。そのため、プラン変更後のエンハンスドロードバランサには新たなリソースIDが付与され、変更後プランでの課金が新たに発生します。1時間や1日といった課金単位内でプラン変更を繰り返すと料金が増大する場合がありますのでご注意ください。料金についての詳細は お支払いについて > 課金の仕組み のページを参照ください。
表示されたダイアログボックス内で、変更したい性能上限値を選択します。
エンハンスドロードバランサの動作に関わる設定¶
「設定変更」ボタンより セッション維持機能 や Syslog などエンハンスドロードバランサの動作に関わる設定ができます。
各フォームには以下の情報を入力します。
セッション維持 | セッション維持機能を有効にする場合にチェックを入れます。 ※詳しくは セッション維持機能 の項目を参照ください。 |
---|---|
GZIP圧縮 | 有効にすることで 特定のタイプのコンテンツ を自動的に圧縮し、コンテンツのダウンロードに掛かる時間を短縮できます。 |
実サーバとのHTTP持続接続 | 実サーバとのHTTP持続接続(Keep Alive)の動作を指定します。 SAFEはクライアントからの接続に応じて持続的接続が使われ、AGGRESSIVEでは再利用可能な接続があれば積極的に使用し、 実サーバとの新しいTCP接続を行う回数を減らせる可能性があります。 |
実サーバ通信タイムアウト(秒) | エンハンスドロードバランサが実サーバからの応答を待つ時間を10秒~600秒の範囲で指定します(デフォルト値は10秒)。 指定した時間まで無通信状態が継続した場合はクライアント側にHTTPステータスコード504(Gateway Timeout)を返答(プロキシ方式がhttpまたはhttpsの場合)、もしくはTCP接続がタイムアウト(プロキシ方式がtcpの場合)します。 ※本設定値は実サーバのヘルスチェック判定には影響しません。判定条件については 仕様表 の「ヘルスチェック判定」の項目を参照ください |
syslogサーバホスト | Syslog サーバのFQDNまたはIPアドレスを指定します |
syslogサーバポート番号 | syslogサーバのポート番号を指定できます |
Proxy Protocol | Proxy Protocol(v2) を有効にします。実サーバとの通信にProxy Protocolを使用します。 Proxy Protocolに対応している実サーバではクライアントのIPアドレスを取得することが可能です。 HTTP、HTTPS、TCPのプロキシ方式で利用できます。ヘルスチェックの通信もProxy Protocolになります。 |
セッション維持機能¶
クライアントのブラウザに対して一意な文字列のCookieをセットすることで、クライアントと通信する実サーバを固定化する機能です。継続的にサーバ側との双方向通信が必要となるWebアプリケーションなどで、実サーバ群が個別のクライアント追跡のための情報を共有する必要が無くなり、開発やシステムの簡略化に役立ちます。
Syslog経由でのアクセスログ取得¶
Syslogサーバのホストとポートを指定することで、エンハンスドLBへのアクセスのログ・ヘルスチェックのログをSyslog経由で取得することができます。
指定したsyslogサーバのホスト、ポートにUDPにてログを送信します。転送されるログに設定されるファシリティは local0
です。またタグには elb-{{リソースIDの数字}}
が入ります。
注釈
・Syslogサーバはお客様にてご用意いただく必要がございます。 ・Syslogは「情報」タブに表示される「プロキシ元ネットワーク」のIPアドレスより送信されます。
ログ仕様¶
■ HTTP, HTTPSプロキシ方式のアクセスは次のデータを含むJSON型式で送られます
キー名 | 説明 |
---|---|
resource_id | リソースID |
mode | http もしくは https |
client_ip | 接続してきたクライアントのIPアドレス |
client_port | 接続してきたクライアントのポート番号 |
time | HTTPのリクエスト行が届いた時間 |
frontend | リクエストを受け付けるフロントエンドの設定名 |
backend | リクエストを処理するバックエンドの設定名 |
upstream_server | 実サーバのホストとポート |
upstream_response_time | 実サーバでレスポンスに要した時間(ミリ秒) |
upstream_connect_time | 実サーバへの接続に要した時間(ミリ秒) |
session_duration | TCP接続からレスポンスまでの時間(ミリ秒) |
response_time | リクエストが届いてからレスポンスまでの時間(ミリ秒) |
fix_response_code | ルール機能の固定レスポンスを使用した際のステータスコード |
status_code | レスポンスのステータスコード。ルール機能の固定レスポンスでは 503 と表示されます |
size | クライアントへ転送したバイト数 |
termination_state | TCP切断時のステータス。詳しくは haproxyのドキュメント を確認してください。 |
vhost | リクエストのHostヘッダ。256文字以上は省略されます |
user_agent | リクエストのUser-Agentヘッダ。256文字以上は省略されます |
method | リクエストのHTTPメソッド |
uri | リクエストのパス、クエリストリングがあれば付加されます。1000文字以上のURIは途中で省略されます |
protocol | HTTP/1.0もしくはHTTP/1.1。HTTP2の場合もHTTP/1.1と出力されます |
ssl_version | HTTPS接続時のTLSのバージョン |
ssl_ciphers | HTTPS接続時の暗号化アルゴリズム |
例
{
"resource_id": "113300002882",
"mode": "https",
"client_ip": "203.0.113.9",
"client_port": 53952,
"time": "[30/Jun/2021:10:35:01.049]",
"frontend": "113300002882-203.0.113.100:443~",
"backend": "113300002882-backend-group1",
"upstream_server": "203.0.113.123:3000",
"upstream_response_time": 6,
"upstream_connect_time": 0,
"session_duration": 15098,
"response_time": 6,
"fix_response_code": "-",
"status_code": "200",
"size": 1613,
"termination_state": "--",
"vhost": "log-test.example.com",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/91.0.4472.114 Safari/537.36",
"method": "GET",
"uri": "/example/path/to",
"protocol": "HTTP/1.1",
"ssl_version": "TLSv1.3",
"ssl_ciphers": "TLS_AES_128_GCM_SHA256"
}
■ TCPプロキシ方式の接続ログは次のデータを含むJSON型式で送られます
キー名 | 説明 |
---|---|
resource_id | リソースID |
mode | TCPプロキシ方式では tcp |
client_ip | 接続してきたクライアントのIPアドレス |
client_port | 接続してきたクライアントのポート番号 |
time | 接続した時間 |
frontend | リクエストを受け付けるフロントエンドの設定名 |
backend | リクエストを処理するバックエンドの設定名 |
upstream_server | 実サーバのホストとポート |
upstream_connect_time | 実サーバへの接続に要した時間(ミリ秒) |
session_duration | TCP接続を行っていた時間(ミリ秒) |
size | クライアントへ転送したバイト数 |
termination_state | TCP切断時のステータス。詳しくは haproxyのドキュメント を確認してください。 |
例
{
"resource_id": "113300015544",
"mode": "tcp",
"client_ip": "203.0.113.9",
"client_port": 38018,
"time": "[30/Jun/2021:10:03:17.931]",
"frontend": "113300015544-203.0.113.128:80",
"backend": "113300015544-backend-default",
"upstream_server": "203.0.113.100:80",
"upstream_connect_time": 2,
"session_duration": 10005,
"size": 326,
"termination_state": "cD"
}
■ その他、ヘルスチェックやエラーログがテキスト形式で送信されます
例
Health check for server 113300002882-backend-group1/203.0.113.123:3000 succeeded, reason: Layer4 check passed, check duration: 3ms, status: 3/3 UP.
VIPフェイルオーバ機能¶
エンハンスドロードバランサではクライアントがエンハンスドロードバランサに接続する際に使用する仮想IP(VIP)アドレスの到達性を常時監視しています。「VIPフェイルオーバ機能」はDDoS攻撃などによりIPアドレスへの到達が失われ、疎通が取れなくなった場合に自動的に別のVIPアドレスに変更する機能です。これによりサイトへの接続ができない状態が継続することを防ぎ、より可用性を高めることが可能となります。
重要
VIPフェイルオーバ機能を有効にしてエンハンスドロードバランサを作成すると、クライアント側の接続点としてVIPアドレスに加えDNS名が併せて払い出され、その名前を正引きした際に返答するIPアドレスを変化させることによりVIPフェイルオーバが行われます。そのため、クライアント側が変更されたVIPアドレスに追従し正しくフェイルオーバを機能させるには、サービス用ホスト名を払い出されたDNS名に対しCNAME設定する必要があります。
また、VIPアドレスの無応答検知からフェイルオーバ動作までの目安時間は5分程度となります。
VIPフェイルオーバ機能を有効にする場合、新規作成画面の「VIPフェイルオーバ」の項目でチェックした状態で作成することで有効となります。
注意
エンハンスドロードバランサの作成完了後にVIPフェイルオーバ機能の有効/無効を切り替えることはできません。
作成完了後は「情報」タブから払い出されたDNS名を確認することができます。
このDNS名に対し、エンハンスドロードバランサを使用してロードバランシングさせたいサービス用ドメイン名をCNAME設定します。
参考
サービス用ドメイン名: secure.example.jp
払い出されたDNS名: site-abcdefg1234567.proxylb1.sakura.ne.jp
の場合の example.jp ゾーン レコード設定例:
secure CNAME site-abcdefg1234567.proxylb1.sakura.ne.jp.
VIPフェイルオーバ機能によりVIPアドレスが切り替わると、緊急連絡用メールアドレス に設定されたメールアドレス(未設定の場合は会員IDの登録メールアドレス)宛に、変更後のVIPアドレスや切り替わりが行われた時刻が以下のような文面でメール通知されます。
From: さくらのクラウド <noreply@sakura.ad.jp>
Subject: [エンハンスドロードバランサ] VIPフェイルオーバ発生のお知らせ
※ このメッセージは自動送信されています。
さくらのクラウドエンハンスドロードバランササービスです。
下記のご契約においてVIPの到達性がなくなったため
フェイルオーバ処理を実施しました。
リソースID: 1131000XXXXX
FQDN: site-XXXXXXX-proxylb1.sakura.ne.jp
旧VIP: 163.43.XXX.XXX
新VIP: 163.43.YYY.YYY
フェイルオーバ発生時刻: 2019-03-28 12:34:56 (JST)
上記の通りVIPが変更になっておりますので、念のためお客様にて
疎通のご確認をお願いします。
Let’s Encrypt証明書自動インストール・更新機能¶
HTTPS接続時に使用するSSL証明書として、認証局 Let’s Encrypt が発行する無料のSSL証明書を使用することができます。このオプションを使用する場合、証明書のインストールや秘密鍵の生成、定期的な証明書更新作業などが自動で行われます。
注意
本機能をご利用いただく際は、あらかじめ以下の条件を満たしている必要があります。
1. 待受ポートに「プロキシ方式: HTTP, 待受ポート番号: 80番」(※)および「プロキシ方式: HTTPS (待受ポート番号は任意)」が設定されていること
2. コモンネームおよびサブジェクト代替名に書かれたホスト名のAレコードがエンハンスドロードバランサのVIPになっていること( VIPフェイルオーバ機能 を有効にしている場合はCNAMEがエンハンスドロードバランサのFQDNに向いていること)
※HTTP80番ポートは証明書管理を自動化するACMEプロトコル利用のため開放が必要となります(httpsリダイレクト機能は有効/無効どちらでも問題ありません)。
技術仕様¶
本機能の技術仕様は以下の通りです。基本的に認証局「Let’s Encrypt」が発行する証明書の仕様に準じた内容となります。
鍵形式/鍵長 | RSA 2048bit |
---|---|
ワイルドカード | 非対応 |
SAN | 対応 (20件まで) |
認証レベル | DV(ドメイン認証) |
証明書の自動更新 | 有効期限の35日前より更新完了するまで毎日実施 |
証明書の手動更新 | 対応 |
※ 一部の古いバージョンのOSやブラウザ、端末ではWebサイトを閲覧した際に警告やエラーとなる場合があります
ヒント
自動更新/手動更新時ともに証明書が更新された場合はメールにて通知されます
設定手順¶
設定対象のエンハンスドロードバランサを選択し、上部に表示されるメニュー「SSL証明書の設定」をクリックし、「Let’s Encryptの設定」を選択します。
表示されるダイアログボックスの「SSL証明書の自動生成」ラジオボタンで「有効」を選択すると、下部に「SSL証明書のCommon Name」入力欄が表示されます。ここで発行対象とするコモンネームを入力し、「同意して設定」ボタンをクリックします。
マルチドメインに対応したSSL証明書を発行する際は「サブジェクト代替名」に追加したいホスト名を改行、スペースあるいはカンマ(,)区切りにて記入してください。サブジェクト代替名には最大20件のホスト名を記入できます。「サブジェクト代替名」は証明書発行後もホスト名の追加、削除、変更が可能です。
ヒント
Let’s Encryptの有効化後は、次回の14時30分頃に自動実行されるバッチ処理のタイミングで証明書が発行されます。有効化後すぐに証明書を発行したい場合は 証明書の手動更新 の手順を実施してください。
注意
「Let’s Encrypt」は弊社社外で提供されるサービスのため、さくらのクラウドで保証するサービス継続性や完全性の対象外となります。ダイアログボックス内に表示される情報を十分ご確認の上ご利用ください。「同意して設定」ボタンをクリックすることで諸条件に同意したものと見做されます。
また、Let’s Encrypt機能で自動設定される証明書はエンハンスドロードバランサのプライマリ証明書として扱われます。すでにプライマリ証明書が設定済みの場合は上書きされますのでご注意ください(オプショナル証明書には影響ありません)。
アクティビティグラフ¶
「アクティビティ」タブでは、エンハンスドロードバランサに対する外部からのコネクション数をグラフで確認することができます。
また、実サーバの登録や削除を行う「実サーバ」タブでは、個別の実サーバごとのコネクションを確認することができます。
参考情報¶
タイムアウト時間について¶
エンハンスドロードバランサのコネクションごとのタイムアウト時間の設定は以下の通りです。
注意
設定値が可変値で表示されている項目はエンハンスドロードバランサの設定状況に依存します。固定値で表示されている項目はお客様側で変更を行うことはできません。
項目 | 設定値 |
---|---|
クライアントにデータを送信しackが返ってくるまで、またはクライアントからのデータ受信のタイムアウト時間 | 10~600秒(※1) |
クライアントからの接続受付後、HTTPリクエストヘッダを受信し終わるまでのタイムアウト時間 | 10秒 |
HTTPキープアライブにおいて、クライアントにレスポンス送信後、新たなHTTPリクエストを受信し始めるまでのタイムアウト時間 | 10秒 |
実サーバにデータを送信しackが返ってくるまで、またはサーバからのデータ受信のタイムアウト時間 | 10~600秒(※1) |
実サーバへのTCPコネクションが確立するまでのタイムアウト時間 | 10秒 |
実サーバへのコネクション確立に失敗した場合のリトライ回数(リトライ間隔は1秒) | 3回 |
コネクション数が設定上限に達した際、処理がキューイングされる最大時間(経過後は503応答) | 1分 |
実サーバのヘルスチェックの際に、TCPコネクションが確立してからレスポンスが返ってくるまでのタイムアウト時間 | 10秒 |
CONNECTメソッドやWebSocketへのアップグレードによりトンネルモードに移行した後、無通信状態を許容する時間 | 5分 |
注釈
※1: エンハンスドロードバランサの「実サーバ通信タイムアウト(秒)」の設定値と同一の設定値となります
TCPプロキシ方式での機能制限について¶
TCPプロキシ方式をご利用の場合、以下の機能は利用できません。
- SSLのオフロード機能
- Let’s Encrypt証明書設定
- カスタムレスポンスヘッダ機能
- ルール機能
- セッション維持機能
TCPプロキシ方式でのロードバランシングは、実サーバのグループの設定が空(未設定)のサーバに対して接続が振り分けられます。グループ名を設定すると接続が振り分けらません。
https通信時のSSLポリシーについて¶
SSLポリシーとはhttps通信時に使用するクライアント、サーバ間でのプロトコルと暗号の組み合わせ(暗号スイート)の設定です。エンハンスドロードバランサでは以下の4つのSSLポリシーをサポートしています。
設定名 | 説明 |
---|---|
TLS 1.2/1.3 互換設定 (2019/04) | 接続の互換性が高い一般的な設定です。デフォルトで利用される設定になります 一部の古いクライアントでは推奨されない暗号スイートが使われる可能性があります。 |
TLS 1.2/1.3 セキュア設定 (2021/06) | 幅広い互換性を保ちながら、現在は使用が推奨されない暗号が含まれない設定です。 Windows 7,8 のIE、2014年以前のmacOS・iOSのSafariなど 一部接続ができない可能性あります。 |
TLS 1.3 厳格設定 (2021/06) | TLSv1.3 のみが使用され、推奨されない暗号の利用がない設定です。 最新のブラウザ、クライアントのみ接続ができます。TLS 1.3のみの通信に 限定する必要があるときにご利用ください。 |
TLS 1.0-1.3 互換設定 (2021/12) | TLS 1.2以降をサポートしない古いクライアントでも利用可能な設定です。 既知の脆弱性を含むため非推奨の設定となります。古いクライアントが アクセスする可能性のある場合のみ利用し、早期にSSLポリシーを見直すことをお勧めします |
SSLポリシーとサポートするプロトコルおよび暗号の詳細は下記の表を参考にしてください。
実サーバにnginxを利用した場合のProxy Protocol利用例¶
実サーバにてnginxを利用している場合、次のように設定することで、接続元のIPをエンハンスドロードバランサではなく、本来のクライアントのIPアドレスに書き換えることができます。
server {
listen 80;
listen 81 proxy_protocol; #実サーバにはこちらのポートを登録
set_real_ip_from エンハンスドロードバランサのプロキシ元ネットワーク
real_ip_header proxy_protocol;
location / {
...
}
}
詳しくは nginxのドキュメント にて確認してください。
実サーバにnginxを利用した場合のGZIPの動作について¶
実サーバにnginxを利用している場合、エンハンスドロードバランサーが付与するViaヘッダにより、nginx上のGZIP機能が動作しません。
GZIP機能を有効にコンテンツを圧縮するためにはnginxの設定ファイルに
gzip_proxied any;
の追加をご検討ください。 詳しくは nginxのgzipモジュールのドキュメント にて確認できます。