До того, как XYZ.com был отключен, я заметил, что мой запрос направлялся на IP-адрес 192.33.31.xxx, а когда он появился, я заметил, что мой запрос был направлен на IP-адрес 50.17.196.xxx. Это какое-то переключение сервера? Разве динамическое переключение серверов в случае сбоя не способ сделать систему отказоустойчивой?
Как сделать отказоустойчивую систему, которая мгновенно справится с ситуацией, когда сервер выйдет из строя
Ответы (1)
Большинство активно используемых веб-сайтов работают с балансировщиками нагрузки, направляющими запрос на несколько серверов. Существует очень простая или очень сложная логика, на основе которой определяется маршрутизация. Например, логика может быть
- Как только запрос обрабатывается одним конкретным сервером, запрос с того же IP-адреса обрабатывается тем же сервером ИЛИ
- Используйте циклический способ обработки запроса (в этом случае IP играет роль)
- маршрутизировать запрос к наименее используемому серверу и т. д.
Веб-сайт также может использовать гибридный подход всего вышеперечисленного.
Теперь, если бы веб-сайт, к которому вы обращались, использовал маршрутизацию на основе IP, тогда дело было бы в другом.
- Это ваш первый запрос. Затем вам будет назначен сервер, который будет обрабатывать ваш запрос. (Это может быть циклический перебор или другая логика (например, для сервера с меньшей нагрузкой)
- Теперь у балансировщика нагрузки может быть логика, согласно которой следующие X (скажем, 100) запросов или в течение Y (скажем, 1 часа) периода времени все запросы с одного и того же IP-адреса будут направляться на один и тот же сервер или на оба.
- Итак, в вашем случае, если вы делаете запрос к XYZ, он перенаправляется на какой-то сервер abcd, а затем, если вы делаете еще один звонок через 1 час или делаете 101-й вызов, вы можете получить другой сервер, который обрабатывает ваш запрос.
Теперь, если ваш сервер вышел из строя, у вас могут быть резервные механизмы, например,
- Если сервер не отвечает в течение некоторого предварительно настроенного периода времени, удалите этот сервер из списка действующих серверов в конфигурации балансировщика нагрузки и перенаправьте запрос.
- Или мы можем иметь простаивающие предварительно работающие серверы (это дорого, но нужно соблюдать, когда каждый запрос должен обслуживаться без сбоев). Как только сервер выйдет из строя, вызовите этот новый сервер и назначьте ему IP-адрес, который был назначен старому серверу, который вышел из строя.
Однако для этой проблемы может быть лучшее и гораздо более сложное решение.
person
Global Warrior
schedule
03.03.2014