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

Разделение наборов сервисов на одном сервере

Группа, частью которой я являюсь, выросла и собирается перейти от использования виртуальных серверов DigitalOcean к одному размещенному серверу. На данный момент у нас нет необходимости сильно распространять наши услуги. На этом монолитном сервере будут работать практически все наши системы, от нашего общедоступного веб-сайта до нашей почтовой службы и настраиваемых демонов и панелей управления.

Однако были опасения по поводу возможности взлома одной службы (в прошлом мы были целью вторжений) и нарушения стабильности или нарушения безопасности в других частях сервера.

Мы хотим каким-то образом «изолировать» определенные службы и процессы, ограничивая количество ресурсов (RAM, CPU), которые они могут использовать. Было предложено запускать каждый «набор» сервисов на отдельной виртуальной машине, но мне это кажется неуклюжим и сложным в обслуживании. Я думаю, что у Linux будет более элегантный способ справиться с этим. Есть ли у кого-нибудь предложения, как лучше всего это сделать?

Мы используем CentOS 6.4 64 бит.

Проект под названием Докер недавно привлек много внимания за попытки решить эту самую проблему.

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

Эта технология использует преимущества cgroups Linux и некоторые другие вещи для создания «контейнеров», похожих на тюрьму, которые могут содержать все необходимые ресурсы и конфигурацию для запуска конкретной службы, которой можно управлять как пакеты, в том смысле, что они могут быть распределены, версированы и используются в самых разных средах. (Это грубое упрощение.)

Видеть Каковы основные особенности Docker чтобы узнать больше о том, как это работает.

Обычно это делается с помощью chroot jail но Я настоятельно рекомендую поместить их каждую в отдельную виртуальную машину. Намного лучшая изоляция друг от друга, и вы получаете лучшую детализацию при обновлении / устранении неполадок / изменении сервисов. Возможность перезапуска / исправления вашего веб-интерфейса без отключения сервера базы данных может быть очень приятной, особенно если вы в конечном итоге увеличиваете масштаб для обеспечения избыточности.

Накладные расходы коробки CentOS довольно малы по сравнению с большинством приложений.