VIRTUAL SERVERSパネルには、現在定義済みの各仮想サーバに関する情報が表示されます。各テーブルエントリには、仮想サーバのステータス、サーバ名、そのサーバに割り当てられている仮想IPアドレス、サービスが通信に使用するポート番号、使用するプロトコル、仮想デバイスインターフェイスが表示されます。
VIRTUAL SERVERSパネルに表示される各サーバは、後続の画面すなわちサブセクションで設定することができます。
サービスを追加するには、ADDボタンをクリックします。サービスを削除するには、仮想サーバの隣にあるラジオボタンをクリックして削除するサービスを選択してから、DELETEボタンをクリックします。
このテーブルで仮想サーバを有効または無効にするには、その仮想サーバのラジオボタンをクリックしてから、ACTIVATEボタンまたはDEACTIVATEボタンをクリックします。
仮想サーバを追加した後で、設定することができます。その仮想サーバの左にあるラジオボタンをクリックしてから、EDITボタンをクリックすると、VIRTUAL SERVERサブセクションが表示されます。
図12-6 に示すVIRTUAL SERVERサブセクションパネルを使うと、仮想サーバを個別に設定することができます。特にこのサーバに関連したサブセクションに対するリンクが、このページの最上部にあります。ただし、この仮想サーバに関連するサブセクションを設定する前に、このページの作業を完了してから、ACCEPTボタンを押します。
仮想サーバを識別するための説明的な名前を入力します。この名前は、マシンのホスト名ではありませんので、説明的でわかりやすいものにします。仮想サーバで使用するプロトコル(HTTPなど)を名前に使うこともできます。 HTTP.
サービスアプリケーションがリッスンするポート番号を入力します。この例はHTTPサービス用なので、ポート80が使用されています。
ドロップダウンメニューのUDPとTCPの間で選択します。一般に、WebサーバはTCPプロトコルを使って通信するので、上記の例ではTCPが選択されています。
仮想サーバの浮動IPアドレスを、このテキストフィールドに入力します。
仮想サーバのネットマスクを、ドロップダウンメニューを使って設定します。
マルチポートプロトコルをバンドルしているか、別の関連するプロトコル用のマルチポート仮想サーバを作成している場合を除き、ファイアウォールマークの整数値を入力してはいけません。この例では、ポート80でのHTTPに対する接続と、ポート443でのHTTPSに対する接続を、ファイアウォールマークの値80を使ってバンドルしているので、上記の仮想サーバにFirewall Markの値80が設定されています。パーシステンスと組み合わせた場合、このテクニックは標準のWebページとセキュアWebページの両方にアクセスするユーザーに、状態を持続している同じリアルサーバを経由させます。
Virtual IP Addressフィールドで定義されている浮動IPアドレスをバインドするネットワークデバイスを入力します。
公開の浮動IPアドレスには、公衆ネットワークに接続しているEthernetインターフェイスに対するエイリアスを設定する必要があります。この例では、公衆ネットワークはeth0インターフェイスで接続しているので、デバイス名としてeth0:1を入力する必要があります。
障害が発生した後で、アクティブLVSルータがリアルサーバのクラスタへの復帰を試みるまでの経過時間を定義する整数値を、秒単位で入力します。
リアルサーバが停止状態と見なされ、クラスタから削除されるまでの経過時間を定義する整数値を、秒単位で入力します。
Quiesce serverラジオボタンを選択した場合、新しいリアルサーバノードがオンラインに接続するたびに、最少接続テーブルがゼロ(0)にリセットされるので、アクティブLVSルータはすべてのリアルサーバがクラスタに新しく追加されたのと同じ状態で、要求をルーティングすることができます。このオプションにより、新しいサーバがクラスタに加入した時点で多数の接続により機能停止に陥るのを防ぎます。
LVSルータは、多様なリアルサーバ上の負荷を、rupかruptimeを使って監視することができます。ドロップダウンメニューからrupを選択した場合、各リアルサーバでrstatdサービスが稼働していなければなりません。ruptimeを選択した場合、各リアルサーバでrwhodサービスが稼働していなければなりません。
![]() | 注意 |
---|---|
負荷の監視は、負荷分散と同じではないので、負荷の重いスケジュールアルゴリズムと組み合わせた場合のスケジュール動作を予測するのは困難です。また、負荷の監視を使用する場合、クラスタ内のリアルサーバはLinuxマシンでなければなりません。 |
ドロップダウンメニューから、適当なスケジュールアルゴリズムを選択します。デフォルトは、Weighted least-connectionです。スケジュールアルゴリズムの詳細については、 項9.3.1 を参照してください。
管理者がクライアントのトランザクション中に、仮想サーバに対するパーシステントコネクションを必要とする場合、無活動状態で接続がタイムアウトするまで待機する秒数を、このテキストフィールドに入力します。
![]() | 重要 |
---|---|
上記のFirewall Markフィールドに値を入力した場合、 パーシステンスの値も入力する必要があります。また、 ファイアウォールマークとパーシステンスを一緒に使う場合、 ファイアウォールマークを使う各仮想サーバのパーシステンスの数値は すべて同じ値に設定してください。パーシステンスとファイアウォールマークについては、 項9.5 を参照してください。 |
特定のサブネットのパーシステンスを制限するには、ドロップダウンメニューから該当するネットワークマスクを選択します。
![]() | 注記 |
---|---|
ファイアウォールマークが導入される前は、サブネットによってパーシステンスを制限するのは、粗雑な方法でした。現在では、ファイアウォールマークと関連させてパーシステンスを使用することが、同じ結果がもたらす最善の方法です。 |
![]() | 警告 |
---|---|
このパネルで設定を変更したら、ACCEPTボタンをクリックして、新しいパネルを選択しても、変更内容が失われないようにするのを忘れないでください。 |
パネルの最上部にあるREAL SERVERサブセクションリンクをクリックすると、EDIT REAL SERVERサブセクションが表示されます。ここには、特定の仮想サービス用の物理サーバホストのステータスが表示されます。
ADDボタンをクリックして、新規サーバを追加します。既存のサーバを削除するには、そのサーバの隣にあるラジオボタンを選択してから、DELETEボタンをクリックします。EDITボタンをクリックすると、図12-8に示すようなEDIT REAL SERVERパネルが表示されます。
このパネルには3つの入力フィールドがあります。
リアルサーバ用の説明的な名前。
![]() | ヒント |
---|---|
この名前は、マシンのホスト名ではありませんので、説明的でわかりやすいものにします。 |
リアルサーバのIPアドレス。関連する仮想サーバのリッスンするポート番号はすでに指定されているので、ポート番号を付加してはいけません。
このホストの処理能力を、プール内の他のホストと比較した整数値。任意の値を設定できますが、クラスタ内の他のリアルサーバと比較した割合として処理します。サーバの負荷係数の詳細については、項9.3.2 を参照してください。
![]() | 警告 |
---|---|
このパネルで設定を変更したら、ACCEPTボタンをクリックして、新しいパネルを選択しても、変更内容が失われないようにするのを忘れないでください。 |
ページの先頭にあるMONITORING SCRIPTSリンクをクリックします。EDIT MONITORING SCRIPTSサブセクションで、 管理者はsendまたはexpect文字列シーケンスを指定することにより、各リアルサーバ上で仮想サーバのサービスが機能しているか検証することができます。 また、管理者はこのサブセクションでカスタマイズしたスクリプトを指定して 動的に変化するデータが必要なサービスを検査することもできます。
サービスをより高度に検証する場合、このフィールドを使って、サービスチェックスクリプトのパスを指定することができます。この機能は、HTTPSやSSLなど、動的に変化するデータが必要なサービスの場合に、特に役立ちます。
この機能を使用するには、テキスト形式の応答を戻すスクリプトを作成し、実行可能形式にした上で、Sending Programフィールドにパスを入力する必要があります。
![]() | ヒント |
---|---|
リアルサーバプール内の各サーバが検査されるようにするには、Sending Programフィールドでスクリプトのパスの後に特別なトークン%hを指定します。このトークンは、nannyデーモンによってスクリプトが呼び出されると、各サーバのIPアドレスによって置き換えられます。 |
以下に、外部サービスチェックスクリプトの作成時に役に立つスクリプトの例を示します。
#!/bin/sh TEST=`dig -t soa example.com @$1 | grep -c dns.example.com if [ $TEST != "1" ]; then echo "OK else echo "FAIL" fi |
![]() | 注記 |
---|---|
外部プログラムをSending Programフィールドに入力した場合、Sendフィールドは無視されます。 |
nannyデーモン用の各リアルサーバに送信する文字列を、このフィールドに入力します。デフォルトでは、SendフィールドはHTTP用に設定されています。必要に応じて、この値を変更することができます。このフィールドを空のままにしておくと、nannyデーモンが、(成功する場合は)サービスが稼働していると想定しているポートのオープンを試みます。
このフィールドに指定できるsendシーケンスは1つだけであり、指定できる文字は、印字可能なASCII文字と以下のエスケープ文字だけです。
\n(改行)
\r(キャリッジリターン)
\t(タブ)
\(直後の文字をエスケープすることを示す文字)
サーバが正常に機能している場合に戻す、テキスト形式の応答を、このフィールドに入力します。独自の送信プログラムを作成した場合は、そのプログラムで成功した場合に送信するよう指定した応答を入力します。
![]() | ヒント |
---|---|
指定したサービスに送信する内容を決めるには、リアルサーバ上のポートに対するtelnet接続をオープンすることで、戻される内容を確認することができます。たとえば、FTPは接続時に220をレポートするので、Sendフィールドにquitと入力し、Expectフィールドに220と入力します。 |
![]() | 警告 |
---|---|
このパネルで設定を変更したら、ACCEPTボタンをクリックして、新しいパネルを選択しても、変更内容が失われないようにするのを忘れないでください。 |
Piranha 設定ツールを使って仮想サーバを設定したら、 特定の設定ファイルをバックアップLVSルータにコピーする必要があります。 詳細については、項12.7 を参照してください。