Балансировка между процессами на разных серверах
Имеется 4 сервера, на каждом из серверов запущено по 4 php процесса (демона), которые рассылают смс нотификации. На данном этапе проблема заключается в том что скрипты работают только на том сервере которому на данный момент присвоен VIP. То есть вся нагрузка от процессов падает на 1 сервер. Как реализовать балансировщик так чтобы рассылка распределялась между всеми процессами на разных серверах, и в случае падения сервера,распределялась между оставшимися.
Привожу ниже кусок кода из скрипта демона
while (true)
{
$params = array('limit' => $limitRecords);
$requests = $request->getRequests($params);
if (!$requests)
{
sleep(3);
}
else
{
$requestsTotal = count($requests);
foreach ($requests as $req)
{
$cmdNewProcess = "/usr/bin/php " . __DIR__ . "/request_sender.php " . $req['phone_number'] . " " . $req['notification_text'];
exec($cmdNewProcess . " > /dev/null &");
}
sleep($sleepInterval);
}
}
Ответы (1 шт):
Можете использовать любую библиотеку или систему распределённой очереди, например beanstalkD. Запускаете сервер, затем рабочих, и назначаете задачи, которые будут отданы рабочим. Аналогично можно использовать GearmanServer с GearmanWorker