Linux

Стоит ли использовать автоматическое развертывание Linux и управление конфигурацией в небольших масштабах?

Я собираюсь развернуть ~25 серверов под управлением Debian. У машин будут разные роли: веб-серверы, Java appservers, прокси, MySQL boxes. Среда, вероятно, не будет сильно расти в будущем может быть, еще 2-5 серверов в ближайшие 2 года. Я, вероятно, буду использовать fai для установки системы, но я не уверен, стоит ли добавлять также централизованное управление конфигурацией cfengine или puppet для такого маленького масштаба.

Имеет ли смысл развертывать управление конфигурацией для среды такого размера?

Ответ 1

Я бы рекомендовал использовать смесь Debian pre-seeding, где вы даете программе установки текстовый файл с ответами на все вопросы, которые она задаст, и Puppet.

Причина использования предварительной установки, а не FAI, в том, что вам не нужно сначала создавать образ и поддерживать его в актуальном состоянии. В итоге вы получите установку, очень похожую на ту, которую вы имели бы, если бы делали все вручную. Когда вы придете устанавливать новый выпуск, вам нужно будет обновить конфигурационный файл с изменениями, а не создавать новый образ.

Инструмент управления конфигурацией особенно полезен, когда у вас есть несколько серверов, выполняющих одну и ту же роль, и вы хотите, чтобы они были идентичны, например, кластер веб-серверов. Однако они также могут быть полезны для настройки базовой установки всех серверов. Вы захотите установить определенные пакеты на все ваши серверы, например, ntpd и MTA. Вы захотите изменить файл конфигурации на всех ваших серверах. Дополнительным преимуществом является то, что вы можете хранить свои манифесты в чем-то вроде subversion и вести учет того, что изменилось на сервере, кто это сделал и почему. Управление конфигурацией также может стать спасением в случае сбоя сервера и необходимости его быстрого восстановления. Установите ОС (используя FAI или preseeding), установите puppet, и все сервер собран в точности таким, каким он был раньше. Очевидно, что вам нужно будет сохранять резервные копии данных.

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

Puppet более современный из двух упомянутых вами инструментов. Я действительно рекомендую его всем. Конфигурация представляет собой декларативный язык, на котором легко создавать конструкции более высокого уровня. Кроме того, вокруг него существует очень большое сообщество, и всегда есть люди, готовые помочь в списке рассылки или на IRC-канале.

Ответ 2

Я бы рекомендовал CFengine для любой среды, которая состоит более чем из 2-3 машин и где у вас есть некоторая концепция «шаблонов» или серверов, выполняющих определенные роли.

Почему? Проще говоря, это уменьшает количество ошибок: у вас есть инструмент, который обеспечит правильные разрешения файлов/директорий везде в среде, и, когда вы придете к развертыванию большего количества серверов, инструмент обработает абсолютно все и никогда не допустит ошибок.

Напротив, даже опытный системный администратор развертывает веб-сервер в конце двенадцатичасовой смены, когда все уже пошло наперекосяк… Смогут ли они вспомнить тот маленький конфигурационный файл, который должен лежать в /etc/random/location/foo/bar, иначе приложение не сможет сделать что-то очень важное, например, выставить счет клиентам? :)

Такие инструменты, как CFengine, также являются отличным способом для выполнения обновлений безопасности в масштабах всей среды. Установка конфигурации Nagios (NRPE) на все боксы также является простым делом. Независимо от того, имеете ли вы дело с пятью или пятью сотнями боксов, вы сэкономите время с CFengine.

Возможно, стоит отметить, что моя среда немного больше, однако я также развертывал CFengine для меньших сред, чем вы отметили, отсюда и рекомендация!

Вероятно, ваш следующий вопрос будет: CFengine vs Puppet? Это более сложное решение, и я всегда выбирал CFengine из-за (в первые дни) некоторой незрелости Puppet, особенно в части регистрации ошибок. Если вернуться к моим конкретным проблемам с Puppet, то они были связаны с SSL сертификатами, и я до сих пор вспоминаю, как я потратил 3 часа на диагностику проблем с подключением сервера <-> клиента в irc.freenode.net/#puppet с некоторым количеством RTFM и RTFS только для того, чтобы найти ошибку, которая не регистрировалась.

Ответ 3

Я согласен с каждым ответом. Вы должны начинать учиться и создавать рабочую инфраструктуру, когда вы еще новичок в этом, потому что тогда вы будете готовы к росту.

В зависимости от того, что вы хотите запустить, я бы выбрал FAI, cfengine для  предварительной настройки Debian/Ubuntu. FAI может работать со многими различными инструментами, так что это хороший старт для любого Debian-подобного дистрибутива. С помощью конфигурации FAI (и cfengine), управляемой классами, вы можете легко разделить ваши установки на небольшие модули, которые затем можно выбрать для каждой машины. Таким образом, он будет полезен, даже если у вас много разных машин. На самом деле, это более полезно, так как вы будете документировать свою установку с помощью этих скриптов. И когда вы будете устанавливать на новую машину, вы ничего не забудете.

Конечно, у вас ДОЛЖНО быть несколько машин для тестирования, прежде чем вы развернете свои изменения в реальной установке. Но с такими сценариями конфигурации, как этот, вы не забудете сделать ни одного шага на рабочих машинах.

Ответ 4

Это стоит того, даже для небольшого сайта. Все дело в постоянстве по мере роста, а вы предполагаете, что ваш сайт будет расти. Лучше всего начинать, пока он еще маленький. Cfengine это потрясающий инструмент, который может работать со всеми пакетными менеджерами по всему полю, и он действительно легкий и безопасный, и он «просто работает». Puppet просто не обеспечивает того, что заявлено. Есть еще альтернатива Chef.

Преимущество cfengine перед другими в том, что он ультралегкий, но, на самом деле, он имеет больше возможностей. По безопасности он похож на ssh, а не на веб-сертификаты, используемые puppet.

Схожие статьи

Linux

Насколько практично аутентифицировать сервер Linux с помощью AD?

Linux

Использование точного, незащищенного источника времени

Linux

Как используется брандмауэр?

Linux

Синхронизация снимков LVM с сервером резервного копирования