Как сделать отказоустойчивый веб-сервер?

Исходные данные: Есть сайт, есть два сервера. На одном из них находится nginx, MySQL и контент сайта (аудио, фото).


Задача: При отключении одного из серверов сайт должен быть по-прежнему доступен.


Вопрос: Как это сделать и что для этого нужно? Как мне сделать так, чтобы клиент обращался на сайт и его переадресовывало на сервер Б в случае недоступности сервера А и наоборот?


Заранее спасибо за ответы.


PS: ОС на обоих серверах — Debian 5.
  • Вопрос задан
  • 7244 просмотра
Пригласить эксперта
Ответы на вопрос 10
opium
@opium
Просто люблю качественно работать
Поставьте перед серверами нгинкс проксирующий на бекенды.
Ответ написан
NanoDragon
@NanoDragon
Захостится на Амзоне и делать редирект с амазона на любой из ваших живых серверов.
Ответ написан
savostin
@savostin
Еще один программист
savostin
@savostin
Еще один программист
Третий «надежнейший» сервер с nginx и такими настройками.
Ответ написан
@equand
Как вариант anycast.
Ответ написан
nicolnx
@nicolnx
сервера рядом или в разных датацентрах?
Ответ написан
icCE
@icCE
youtube.com/channel/UC66N_jRyZiotlmV95QPBZfA
вам надо:

Общие хранилище (FC/iSCSI) с кластерной ФС — например ocfs2.
Там вы храните html/БД и прочию нужную вам ерись.

Две машины объединяются Heartbeat, в вашем случаи за глаза.

Хранилище так же можно сделать резервным куда либо еще, используя drbd+ocfs2 :)

В такой вариации, у вас будет простаивать один сервер.
Если нужна однавременная работа, то в апаче модуль балансировки или через nginx.
БД репликацией.
Ответ написан
@sevmax
Для повышения доступности надо разделить сервера по ролям и продублировать. Сервер БД, сервер хранилище и пара фронт-енд серверов с nginx. Тогда о какой-то отказоустойчивости можно говорить.
Ответ написан
Комментировать
nicolnx
@nicolnx
Если ДЦ разные, то тут только через днс-записи выруливать, других вариантов нет. Причем если просто прописать 2 записи — в случае падения одного дц половина запросов уйдет в никуда. Можно поставить записям время жизни поменьше, затем на каждом ДЦ нарисовать скрипт который проверяет соседа на живучесть, и если не получает от него внятного отклика — пытается обновить днс-зону. Только предохранителей от split-brain предусмотреть каких… Таким образом, при падении одной площадки половина клиентов как работала так и будет работать; вторая половина — испытает временные трудности. Все ж лучше чем ничего наверное.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы