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 API для отображения запущенных процессов

Linux

Запуск jmap, получение которого невозможно без открытия файла сокета

Linux

Стоит ли блокировать ICMP?

Linux

Как настроить разрешения linux для папки WWW