Как сделать сайт высокой доступности?

Есть небольшой сайт с высокими требованиями к доступности. Допустим, я беру VDS в двух разных дата-центрах, поднимаю на них копии, база реплика.
Что дальше? Как именно обеспечить немедленное переключение на другой сервер если первый недоступен? DNS менять не вариант я так понял т.к. время переключения DNS 2-8 часов, за это время и нерабочий VDS отлежится и поднимется уже давно.
  • Вопрос задан
  • 1118 просмотров
Решения вопроса 2
@viiy
Linux сисадмин \ DevOps
Есть несколько способов это сделать.

Первый. Обеспечить высокую доступность сервису который для этого не проектировался. Когда web серверы не имеют балансировщиков, когда mysql задумывался как один, когда приложения в одном экземпляре. Как уже сказали - воспользуйтесь услугами amazon. Elastic ip для переключения между серверами, RDS (mysql) с multi-az, elastic storage для файловой системы.

Второй, самый сложный, но правильный. Изменить архитектуру сервиса. Web серверы как отдельная часть должны балансировать запросы между backend частью. Приложение должно уметь само переключаться между mysql базами если один сервер упал. Репликация mysql между удаленными датацентрами это боль и страдания, в идеале она должна быть только для бэкапа. Если уже не уйти Mysql репликации, используйте percona xtradb cluster. Обращаться не напрямую в ее, а через haproxy, в котором нужно настроить проверку статуса реплик.
Короче говоря, все слои должны иметь как минимум одно резервирование. На уровне IP воспользуйтесь услугами датацентра.
Ответ написан
Комментировать
Самое простое - воспользоваться облачной инфраструктурой. Например, у Амазона есть Elastic IP, которое делает ровно то, что вам нужно - при падении инстанса перенаправляет запросы на другой без смены IP.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@KkJ
В DNS можно указать несколько адресов сразу. Если сайт только для чтения - этого достаточно.
Ответ написан
Ваш ответ на вопрос

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

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