1

無制限の共有ホスティングを利用して、処理をオフロードできるいくつかの小さな共有ホスティング アカウントを作成したいと考えています。そのため、ロード バランサーの基本を作成するには、PHP でいくつかのロジックを作成する必要があります。

私は 4 つの共有アカウントを持っています。1 つはメイン サイトで、残りの 3 つは処理サーバー アカウントです。画像をご覧ください

次の処理ジョブを渡すサーバーを決定する方法を知りたいですか? 最後に渡したサーバーの変数を保持して、あるサーバーから別のサーバーに移動しますか? 等

最良の方法は何ですか?

4

3 に答える 3

3

私の KISS Tinpot の提案は、フォームの送信時に JavaScript を使用してサーバーをランダムに選択することです。

アップロード ページが使用する使用可能なサーバーのリストは、メイン サーバーから JS ファイルとして提供する必要があります。cron ジョブは、このリストを定期的に更新して、稼働中のサーバーのみが選択されるようにする必要があります。

簡単な例:

servers.js (メイン サーバーでホストされ、自動生成されます):

/* Auto Generated 01/01/2009 01:01:01 */
var Servers = new Array();
    Servers[0] = "42.81.240.101";
    Servers[1] = "42.81.240.120";
    Servers[2] = "42.81.240.199";

function LoadBalancer_GetIP()
{
    return Servers[Math.floor(Math.random() * Servers.length)];
}

アップロード.html:

<html>
    <head>
        <script type="text/javascript" src="servers.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            function DoUpload() {
                TestForm.action = "http://"+LoadBalancer_GetIP()+"/upload.php";
                TestForm.submit();
            }
        </script>
        <form id="TestForm" method="POST" action="">
            <input type=button value="Upload" onclick="DoUpload()">
        </form>
    </body>
</html>
于 2009-06-07T21:30:17.237 に答える
0

考え直してください、あなたが解体しようとしている仕事は何ですか? どのような仕事。

まず答えとして、ジョブのいくつかのパラメーターに基づいてジョブを均等に分割できます。たとえば、各パラメーターには、ジョブを送信したユーザー名フィールドが付属しています。これらのサーバー間でユーザーベースを分割し、指定されたサーバーに適切なリクエストを送信します。

他の戦略 (より複雑な戦略) は、負荷に基づいてジョブを分散するよりも、ロード バランサーが 3 つのワーカーから基本的な情報を受け取り、それぞれの負荷を伝えることです。

もちろん、特定の主題がそれを必要とする場合、私は個人的に複雑な方法を選びます。

于 2009-06-07T21:37:45.490 に答える
0

脱線しているかもしれませんが、ラウンドロビン/dns/ランダムリクエストの方法で再現していただけないでしょうか?

于 2009-06-07T20:27:51.230 に答える