Как организовать выделенный production/продакшен сервер для нескольких проектов?

Привет!
Веб проект развивается и VPS стало откровенно не хватать. Поэтому было принято решение начать переезд на выделенный сервер.
И так, выделенный сервер пока один и на нем планируется размещение веб-сервиса и еще 2 развивающихся веб-проектов поменьше. К слову, все они не связанны друг с другом и имеют отдельные бд.

Ранее на VPS крутилось окружение Bitrix на Centos (обратил на нее внимание т.к. использую цмску от того же битрикса). Иногда оно давало о себе знать, в основном благодаря кривым обновлениям.
  • Стоит ли оставаться на этом пакете от битрикса уже на реальном сервере, а если переходить (скорей всего), то на что? nginx/mysql/php


Так как на продакшене будет несколько проектов, хотел их разделить их по виртуальным машинам или по контейнерам.
  • Ваше мнение, какую технологию и набор софта лучше и практичней использовать в данной ситуации? Что используете в своих проектах?
  • Если разделяете что-то в рамках одной физической машины, разделяете целые проекты или, например, отдельно контейнер с ngnix, отдельно с субд и тд?
  • Как следите за состоянием и нагрузкой, а так же как управляете своим зоопарком?
  • Подойдет ли для этого Docker или это скорей инструмент разработчика? Хотелось бы иметь удобную систему деплоя.


И наконец защита данных от потери в случае технических неполадок (вроде поломки диска). Задача 100+% аптайма сейчас не так важна.
  • Как вы организовали бэкапы или зеркалирование данных?


Хотелось бы чего-то не громоздкого, а простого и относительно гибкого. Был бы очень признателен если поделитесь своим опытом и полезными ссылками. Если есть важные детали, о которых я не затронул речь, то тоже было бы здорово если вы их упомяните.
  • Вопрос задан
  • 483 просмотра
Решения вопроса 1
@PapaStifflera
Родился, вырос...
В вашем случае (1 выделенный сервер) не нужно виртуализации и, тем более, Docker (он для других целей предназначен).
Ставьте nginx + php-fpm, настройте upstreams в nginx и pools в php-fpm для каждого проекта исходя из потребностей.
Для удобного деплоя приложений, в том числе написанных на php, есть масса инструментов (например deployer.org/). Или Jenkins, если умеете его "готовить". С его помощью еще и CI можно организовать.
Для предотвращения потери данных (в контексте БД) - это репликация + регулярные бэкапы. Но есть один момент - для репликации нужна еще как минимум одна отдельная физическая slave-нода. Делать просто бэкапы без репликации - это гарантированная потеря данных в случае отказа железа. По хорошему БД вообще на отдельные ноды лучше вынести, если есть возможность. При таком подходе желательно, чтобы у вашего поставщика услуг была внутренняя сеть внутри датацентра хотя бы 1 Гбит.
Как-то так. Как показывает практика, этого вполне достаточно для проектов с невысокой нагрузкой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347
Crazy on performance...
Я бы посоветовал для Вашей ситуации docker, тем боле раз он упомянут в Вашем вопросе, думаю Вы умеете с ним работать
nginx контейнер 1 общий с пробросом в него всех контейнеров с php-fpm
А вот для бд, если позволяет оперативка я бы сделал что базы каждого проекта в своем контейнере
Ответ написан
Ваш ответ на вопрос

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

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