Как развернуть несколько отказоустойчивых серверов?

Есть веб-приложение. Нужно добиться максимальной отказоустойчивости. Будем использовать несколько серверов. Сначала два сервера, потом, возможно, еще больше. То есть, если один сервер выходит из строя (например, пожар в датацентре), то приложение продолжает работать за счет второго/третьего сервера в других датацентрах.

Какие варианты разворачивания здесь будут? Не хотелось бы вручную настраивать каждый сервер (установка и настройка Nginx, Ruby, Rails, PostgreSQL). Есть ли вариант настроить один сервер и склонировать его на остальные?

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

Есть ли возможность синхронизировать все файлы между серверами? Чтобы достаточно было сделать обновление ПО на одном сервере и все обновления подтянулись на остальные серверы?
  • Вопрос задан
  • 3254 просмотра
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
По пунктам:
Какие варианты разворачивания здесь будут?

Применяются средства администрирования и конфигурирования, такие как puppet, chif, ansible. Т.е. один раз создаем сценарий на выбранном инструменте, а потом его "проигрываем" на нужный сервер.

Плюс нужна синхронизация баз данных PostgreSQL

Я бы с мастер-мастер не стал делать, настоятельно не стал бы! Лучше запусить несколько баз данных и шардировать данные на них. Про шардинг почитать например здесь - ruhighload.com/index.php/2009/05/06/%D1%88%D0%B0%D...
А еще лучше некоторые (если не все данные) хранить в базах данных ключ/значение типа memcache/ redis, или в объектных типа hadoop/mongodb.

Есть ли возможность синхронизировать все файлы между серверами?

Лучше всего сделать распределенную файловую систему типа glusterfs, GPFS, cephfs, lustre. А самый простой - просто использовать rsync, но это медленно, большой лаг, и, неэффективно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rrooom
@Rrooom
Нанять админа?

Для настройки понадобятся слова вроде chef, ansible. Для файлов rsync.
Если нравится хипстерство, то может быть еще mesos, docker.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы