Date: Wed, 18 Aug 2004 17:35:21 +0600
From: "Nick S. Knutov" <nick@knutov.com.>
Subject: Простые способы балансировки нагрузки на web-сервер.
E> Хочу сделать систему зеркал и кешей для сайта, но не совсем понимаю
E> механизм резервирования - как можно перенаправить пользователя на работающее зеркало?
Не, что-то мне думается такое работать не будет. Сделай проще -
один основной сервер. www. Если его сервер лоад (например) больше
некоторой цифры - делаем редирект на www2. на www2 если загрузка
больше некоторого уровня - делаем редирект на www3. и т.д.
Более сложный вариант. Ставим один основной сервер. Он будет
заниматься только редиректами. С балансировкой каналов. Каждый из
остальных серверов периодически говорят ему уровень нагрузки своих
каналов и свой серверлоад (или какой-нибудь другой параметр). На него
идет запрос. Зная нагрузу других серверов он переадресует на
другой с минимальной загрузкой.
Можно сделать еще лучше - если есть возможность оценить количество
требуемых операций (или их тяжесть по времени) - можно делать
балансировку еще и с учетом этого.
Так же можно делать зеркала по географическуму признаку - если
посетитель из россии - оставить его на российском сервере, иначе
редирект на американский. В некоторых случаях очень экономит
трафик.
Если используются БД - то их можно выделить в отдельные сервера(или
оставить на тех же серверах) и периодически синхронизировать, а те
данные к которым требуется уникальность, сделать на третий сервер
БД и юзать его всеми другими серверами совместно.