如何使用PHP创建负载均衡器逻辑?

时间:2009-06-07 20:20:24

标签: php performance scalability load-balancing

我希望利用我的无限共享主机来创建几个小的共享主机帐户,我可以将处理卸载到。所以我需要在PHP中创建一些逻辑来创建Load Balancer的基础知识。

我有4个共享帐户,一个是主站点,另外三个是处理服务器帐户。 Please see image

我想知道如何确定将下一个处理作业传递给哪个服务器?我是否保留了传递给我的最后一台服务器的变量并从一台服务器转到另一台服务器?等

最好的方法是什么?

3 个答案:

答案 0 :(得分: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)];
}

upload.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>

答案 1 :(得分:0)

可能会摆脱困境,但是,您是否可以使用随机请求方法重现循环/ dns /?

答案 2 :(得分:0)

请重新考虑一下,你想破解的那些工作是什么?什么样的工作。

首先,您可以根据作业的某些参数平均分割作业,例如,每个参数都附带一个提交作业的用户名字段。您在这些服务器之间拆分用户库,并将适当的请求发送到指定的服务器。

其他策略 - 更复杂的策略 - 可以让负载均衡器从这3个工作人员那里获取一些基本信息,这将告诉他们每个人的负载,而不是基于该负载分配工作。

我个人会选择复杂的方法,当然如果给定的主题需要。

相关问题