名前

Perlbal::Manual::LoadBalancer - Perlbalをロードバランサとして使用する

バージョン

Perlbal 1.78.

説明

Perlbal ロードバランシング サービスを設定する方法

最初に

Perlbalを設定するより良い説明としてまず the Perlbal::Manual::Configuration manpage を読んでください。このドキュメントはそれを読んだ後でもっと理解できるでしょう。

Perlbalをロードバランサとして使用する

Perlbalをロードバランサとしてセットアップする方法をもっと理解するためには、ロードバランサとリバースプロキシはしばしば同じものになりえるということに注意が必要です; 常にでは無く、しばしばです。

ロードバランサは負荷を広げるためにリクエストを複数のサーバに渡って釣り合いを取るサーバ(あるいはデバイス)です。リバースプロキシも同じ事をしますが、他にいくつかの機能を持っています。

Perlbal as a Reverse Proxy provides features such as buffering content, preserving connections to the backend servers, starting connections ahead of time and a high priority queue, among others.

ロードバランサはリバースプロキシのほとんどサブセットであると言えるでしょう(そうではありませんが、ほとんどそうです)。

Perlbalに関しては、ロードバランサは全ての特別なオプション無しでリバースプロキシとして実装されており、ロードバランサのロールを reverse_proxyに設定するのはそのためです:

    SET role            = reverse_proxy

シンプルなロードバランシング

webサイトを提供するために二つのマシーンを設定しPerlbalにどうやってリクエストをバランスするかを決めさせたいと仮定しましょう。この練習のために、以下の二つのサーバーを持っていると仮定します:

    10.0.0.1:80
    10.0.0.2:80

そしてwebサイトを提供するために以下の場所で二つのサーバを使用したいとします:

    10.0.0.3:80

これをするための設定の例がこれです:

    CREATE POOL mywebsite
        POOL mywebsite ADD 10.0.0.1:80
        POOL mywebsite ADD 10.0.0.2:80
    CREATE SERVICE service_mywebsite
        SET role            = reverse_proxy
        SET pool            = mywebsite
        SET listen          = 10.0.0.3:80
    ENABLE service_mywebsite

最初の行は mywebsite と呼ばれるマシーンのプールを定義します。2および3行目は、二つのマシーンをプールに追加します(インデントは必須ではないことに注意してください)。

その後、service_mywebsite と呼ばれるサービスを定義し、それは reverse_proxy のロールを持ち、そのロールはリクエストに提供するために 10.0.0.3:80 でlistenしてプール mywebsite を使用するように設定されます。

最後の行は、現在のところアクティブでは無くてもファイルの中で定義された複数のサービスを持つことができるようにするためのものです。 (よくあるシナリオとしては、ファイルに全ての設定をし、その後要求に応じてその場でサービスを有効/無効にします; このプロセスの詳細な情報は the Perlbal::Manual::Management manpage を見てください)。

ロードバランシングのアルゴリズム

Perlbalはとても効率的なロードバランシング アルゴリズムを使用します。It is very effective for distributing dynamic web requests among potentially heterogeneous hardware.

まず、バックエンドのサーバは意味のある制限にそれぞれのMaxClient(apacheの場合、あるいは等価なもの)設定を持つに違いありません。もしあなたのハードウェアがCPUを使い果たす前に同時に20リクエストを実行することができるなら、MaxClientsを20に設定します。

次に、デフォルトでPerlbalはリクエストをランダムに分散します。利用可能なバックエンドに新しい接続を開き、リクエストを発行します。

verify_backend, backend_persist, backend_persist_cache, および connect_ahead が有効な場合は、適切なアルゴリズムを使用することができます。

    SET persist_backend       = on
    SET verify_backend        = on
    SET backend_persist_cache = 5
    SET connect_ahead         = 2

この設定の場合、PerlbalはクライアントのリクエストをOSがlistenしているキューの代わりに実際に処理しているバックエンドにだけ道をとるでしょう。Perlbalは以前に検証されたバックエンドを再利用しようとし、更なるリクエストの準備に必要なidle接続を少しだけ増やそうとするでしょう。

これら全てを合わせると、Perlbalが利用可能なバックエンドを探すために待つためにクライアントが待つことはありえなくなるでしょう。MaxClientsを適切に設定することで、バックエンドは圧倒されることなくトラフィックを供給することができます。. バックエンドが利用できない場合は、Perlbalはバックエンドに負荷をかけるのではなく、内部的にそれらをキューするでしょう。

イメージサーバ間あるいは他のとても軽いリクエストをバランシングしている場合は、 verify_backend を無効にしたいかも知れません。

参照

the Perlbal::Manual::Configuration manpage, the Perlbal::Manual::FailOver manpage, the Perlbal::Manual::Management manpage, the Perlbal::Manual::ReverseProxy manpage.

TOP
inserted by FC2 system