ArteMoon
@ArteMoon
Развиваюсь

Как сделать копию сайта на другом хостинге?

Помогите решить задачу.
Сайт работает в виртуальной машине дома, ресурсов этой ВМ с избытком для планируемой нагрузки, но ресурсов недорогих VPS для такой же быстрой работы может быть недостаточно. Платить дорого за хостинг не хочется, а обеспечить полную отказоустойчивость домашнему серверу невозможно.
Возникла идея создать копию сайта, расположить на недогорой VPS и сделать так, чтобы при недоступности моего домашнего сервера трафик перенаправлялся на IP хостера.
Как это правильно организовать? Может можно для одного доменного имени сделать несколько А записей?
  • Вопрос задан
  • 1626 просмотров
Решения вопроса 3
athacker
@athacker
Может можно для одного доменного имени сделать несколько А записей?

Можно. Только оно у вас будет round-robin'ом клиентам отдаваться. То ваш домашний IP, то адрес хостера. В итоге половина клиентов пойдёт туда, половина -- сюда.

Схем реализации вашей задачи несколько. Самая простая -- править А-записи, в случае падения домашней версии сайта. Т. е. если комп/канал упал, то исправляете в DNS А-запись на IP VPS-ки.

Более сложная схема -- завести балансировщик на VPS-ке. Она будет перенаправлять запросы пользователей на домашний сайт, а в случае его отказа -- на VPS. Балансировщик можно сделать на этой же VPS-ке, с помощью nginx, например. Если отвалится доступ до домашнего сервера -- он начнёт редиректить пользователей на локальную копию.
Ответ написан
@ynblpb_spb
дятел php
Единого ответа на ваш вопрос нету.
Смотря какой сайт и требования. Если это работа с БД, пользователями и загрузкой файлов - это достаточно сложная история. Надо собирать всё это в свою подсеть (например при помощи впн), настраивать репликацию БД, синхронизацию файлов и делать roud-robin dns например. Но это всё скорее всего будеи работать медленно

Если это постоянная отдача статичного сайта (например, ваш личный блог с огромной посещалкой)
то арендуете VPS, ставите на него nginx и в нем настраиваете проксирование с кешированием пол часа на ваш домашний сервер. таким образом если ваш сервер ляжет, то до получаса будет отдаваться сайт из кеша

Еще вариант на впс полная копия сайта, базы. сайт раз в минуту синхронизируете rsync, БД slave репликация. отвалился домашний сервер - vps отдает из реплики всё (но вносить туда изменения уже не получится, это надо предусматривать в коде)

вариантов, короче, много
Ответ написан
@younghacker
Ваша идея полезна с точки зрения получения практических навыков и опыта "почему так делать не стоит".
Непонятно как Вы хотите снизить стоимость VPS обеспечив при этом доступность сайта.
Полной отказоустойчивости пока нет.

Можно создать много A/AAAA записей для имени сайта в DNS.
Но у посетителей они будут перебираться по очереди. Соответственно часть посетителей могут уткнуться в нерабочий сервер.
Можно сделать какой-то автоматический процесс который сменит DNS запись на рабочий хост. Но DNS кеш у некоторых посетителей будет возвращать им старый IP независимо от настроек TTL на DNS сервере.

Можно взять бесплатный эккаунт на CDN например CloudFlare и настроить скрипт который будет дёргать API и переключать backend сервер. По сравнению с записью в DNS, время переключения снизится, но всёравно кто-то вечно следящий в интернете это должен делать. Тоесть нужна мониторящая виртуалка, а лучше несколько.
Но в случае двух рабочих серверов Вам необходимо добиться синхронизации базы и файлов на обоих хостингах.
А это как минимум трафик между обоими серверами.

Правильно бы поставить HA Proxy и балансировать трафик он сам разберётся что и куда. Или другие подобные кластерные решения. Но это уже выходит за рамки бюджета любой одиночной виртуалки.

Если речь идёт о чистом Apache+PHP+MySQL хостинге то можно найти бесплатный или дешёвый вариант шаред хостинга. Если шареда мало, возьмите VDS/VPS есть дешёвые варианты. Хотя не факт что надёжнее чем домашний сервер.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zooks
@zooks
Frontend
Удалить этот чудо-хостинг и перейти на VPS. Свой домашний сервер можно использовать для хранения бекапов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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