Я нашел, что наличие меньшего количества экземпляров PHP или самое большее стольких же экземпляров PHP сколько nginx экземпляры, улучшило устойчивость существенно.
К сожалению, и это причиняет боль мне для высказывания этого, но после многих месяцев выполнения веб-сайта интенсивного трафика в соответствии с этой конфигурацией, я нашел, что он лучше повторно развернул его на EC2 рабочий Apache + mod_php, который надежен. Поскольку это находится на EC2, я могу масштабировать количество требуемого сока (даже если это - больше, чем nginx). Таким образом, хотя это может стоить больше, это существенно уменьшает количество усилия по обслуживанию, вовлеченного в то, чтобы заставлять это работать.
Это - позор действительно, потому что я честно ненавижу апача и люблю nginx, но что я могу сказать?
Краткий ответ: «Управление развертыванием ОС», «Управление конфигурацией» и «Пакетирование программного обеспечения». Далее следует длинный ответ.
Я хотел бы добавить к ответу Дэниела Питтмана подробное описание того, что образует «систему» в системном администрировании.
Система или среда будет состоять из:
Эти процессы охватывают такие процессы, как:
И вы хотели бы, чтобы они были объединены вместе, чтобы помочь вам в достижении нефункциональных целей, таких как:
Это быстрая свалка мозга. Я уверен, что во все списки можно добавить больше.
Ваш вопрос касается некоторых из них без использования конкретных слов. Например, вы хотите иметь возможность легко развернуть и вернуться назад, т.е. хотите ремонтопригодности; вы хотите сделать это в тестовой среде и тестировать до тех пор, пока он не пройдет, т.е. воспроизводимость, тестируемость и измеримость; вы думаете о том, чтобы поместить образы vm в систему контроля версий, потому что вам нужна повторяемость развертывания ОС и конфигурации.
Существует множество инструментов, которые помогут вам в этом, некоторые из них упомянуты Дэниелом. Вот некоторые другие:
В мире Windows эти проблемы, связанные с управлением жизненным циклом приложений, решаются с помощью System Center 2012.
] В System Center Virtual Machine Manager (SCVMM) службы определяются с помощью «шаблонов служб» (например, классическая трехуровневая служба), а среды выполнения определяются как «облака» (например, разработка, постановка, производство). Шаблоны служб могут быть версированы и развернуты (автоматическим способом) в различных облаках. Под прикрытием SCVMM выполняет работу по предоставлению, развертыванию и настройке виртуализированного оборудования (виртуальные машины и т. Д.) И программного обеспечения (ОС, компоненты приложений и т. Д.).
System Center Service Manager - это часть, которая связывает все это из точки процесса - зрения. Например, управление проблемами и контроль изменений.
Заявление об ограничении ответственности: я являюсь одним из разработчиков Puppet.
Очевидный способ - просто применить концепции: определить цикл разработки / тестирования / производства и протолкнуть через них изменения. Используйте контроль версий для отслеживания систем.
Вкратце, начав этот путь, вы обнаружите, что вам действительно нужны инструменты, которые автоматизируют эти вещи - по сути, вы хотите автоматизировать системное администрирование, чтобы вы не использовали эти методы на машинах вы используете их в системе, которая управляет машинами.
Инструменты, такие как Chef , Puppet , Salt и CFEngine ] являются популярными инструментами для решения этой второй проблемы. Они работают в общем направлении превращения системного администрирования в центральное решение, которое вы можете контролировать и тестировать.
Движение DevOps - еще один источник хорошей информации о том, как это сделать. Хотя наставление заключается в улучшении сотрудничества между разработчиками и операционным персоналом, оно также имеет тенденцию к тому же.