LINUX.ORG.RU

перераспределение нагрузки


1

2

Положим у нас есть программы-клиенты которые время от времени подключаются к серверу и работают там со своими данными. Каждый клиент при подключении спрашивает у балансера с каким сервером (из множества серверов) ему нужно работать (где хранятся его данные), подключается к нужному серверу и работает. Время от времени складывается ситуация когда одни серверы простаивают, а другие перегружены - возникает задача переноса данных клиентов с сервера на сервер. Кроме того такая задача может возникнуть просто для обслуживания сервера или замены железа. Клиенты во время работы держат с сервером открытое соединение. Клиенты могут работать относительно долго (часы).

Что использую я: я храню долговременные данные в SQL (postgresql), кеш в NOSQL (memcached). Положим клиент пришел на свой сервер (current) и работает там. Нам нужно перенести клиента и его данные на новый сервер (target). Для переносимого клиента запись начинается в SQL target сервера, а чтение как из SQL current так и из SQL target. Параллельно данные из SQL current переносятся в target. Конечным этапом кеш из NOSQL current сбрасывается в SQL target а клиенту передается команда перейти на target.

Как бы такую задачу решали вы? Какие инструменты бы использовали? Может быть сделали бы для currnet и target общий выделенный SQL сервер? Использовали что-то типа mongodb или сетевых файловых систем? Чем подробней тем интересней, заранее спасибо за ответы!

★★★★

Как бы такую задачу решали вы? Какие инструменты бы использовали? Может быть сделали бы для currnet и target общий выделенный SQL сервер? Использовали что-то типа mongodb или сетевых файловых систем? Чем подробней тем интересней, заранее спасибо за ответы!

Предусмотрел бы в протоколе форсированный перенос. Сессия приостанавливается, объект поддерживающий сессию реплицируется на другом сервере и ожидает подключения. Клиент получает сигнал переподключится и переподключается к другому серверу. Для клиента это будет выглядеть как 10 секундная пауза в работе программы.

rezedent12 ☆☆☆ ()

Одинаковую ли нагрузку дают разные клиенты? Если нет, то переноси активных клиентов на малонагруженный сервер в моменты их неактивности.

dimss ★★★★★ ()
Ответ на: комментарий от dimss

Одинаковую в единицу времени. Но время работы у всех разное.

quest ★★★★ ()
Последнее исправление: quest (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.