Назад | Перейти на главную страницу

Использование двух серверов (LAMP)

В настоящее время у меня есть веб-приложение на одном облачном сервере. Я занимаюсь этим уже несколько месяцев, и у меня есть ВСЕ на этом экземпляре (приложение, скрипты cron, mysql, svn, среда разработки и т. Д.).

Сайт сейчас становится больше, и я собираюсь открыть новый сервер. Как лучше всего это использовать? У меня есть несколько вариантов:

  1. Перенесите мою среду разработки в новый экземпляр вместе с рабочими сценариями cron (сценарии будут выполнять операции с базой данных). Производственное приложение и сама база данных по-прежнему останутся на старом сервере. Эта опция поможет свести к минимуму любые случайные сбои на рабочем сервере, если я захочу что-либо сделать на сервере разработки. Но это не будет чистое разделение производства и разработки, потому что я все еще буду запускать скрипты cron и, возможно, подумаю о размещении некоторых статических ресурсов в новом экземпляре (пытаясь максимально использовать эту настройку).

  2. Переместите базу данных в новый экземпляр. Это похоже на стандартный вариант из проведенного мной исследования. Но в голову приходит несколько вопросов: что делать с разделением dev / prod (нужно ли мне вообще разделять их)? Статические активы - хранятся на сервере приложений или на сервере базы данных?

На данный момент я могу позволить себе всего два сервера. Я бы хотел получить 3, но это то, над чем мне пока нужно работать.

Спасибо за ваш отзыв!

Я сомневаюсь, что мой ответ «стандартный», но другое мнение не повредит.

Я бы предложил использовать второй экземпляр, чтобы попытаться добиться высокой доступности. Используйте HAProxy для балансировки нагрузки между двумя серверами и используйте распределенную файловую систему (Gluster) для репликации файлов между экземплярами. Пусть каждый сервер контролирует другой (например, Corosync / Heartbeat / Keepalived), и если один из них выходит из строя, другой берет на себя управление и запускает новый экземпляр. Если вы до сих пор ладили с одним экземпляром, кажется бесполезным просто переносить базы данных на один сервер, поскольку он, вероятно, не будет полностью использован.

По сути, я предлагаю полное резервирование - это разделит нагрузку между двумя серверами. Вы можете установить веса так, чтобы «первичный» компьютер обрабатывал больше веб-запросов, а «вторичный» компьютер обрабатывал больше запросов к базе данных или просто оставил их равными.

Я думаю, что конечный результат этого будет более выгодным, чем просто перенос одного аспекта обработки на другой сервер, непропорциональное использование ваших серверов и наличие нескольких точек отказа.

Что касается среды разработки, я могу предположить, что это сложнее. Среда разработки на производственной машине потенциально может выйти из строя. (С другой стороны, просто хранить на нем репозиторий SVN может быть не так рискованно, если он хорошо защищен).