У нас есть парк серверов Nginx на Amazon EC2, где нам время от времени требуется обновлять файлы конфигурации для внедрения новых настроек.
В настоящее время у нас есть конфигурации в пользовательском AMI, и если нам нужно обновить, мы должны перестроить AMI, а затем экземпляры EC2. У нас есть несколько вспомогательных скриптов, но сделать это все еще довольно сложно. Есть ли способ лучше?
Есть ряд концепций, которые вы можете использовать.
Первый вариант заключается в том, чтобы продолжать делать то, что вы делаете сейчас, т.е. перестраивать EC2 с каждым изменением конфигурации. Просто полностью автоматизированным способом.
Теперь, когда вы выполняете обновления конфигурации через AMI, вы делаете еще один шаг вперед и создаете трубопровод что при изменении файла конфигурации в каком-либо репозитории:
Второй вариант состоит в том, чтобы держать экземпляры на месте и развертывать только файлы конфигурации, не перестраивая их. Обычно вы можете рассматривать файлы конфигурации как код и развертывать изменения конфигурации так же, как и выпуски кода. У AWS есть множество инструментов, которые помогут в этом.
Как только вы научитесь автоматизировать эти обновления конфигурации Nginx, вы можете расширить автоматизацию на остальную часть вашей инфраструктуры.
Есть отличный технический документ Обзор вариантов развертывания на AWS это даст вам хороший обзор.
Надеюсь, это поможет :)
Сохраните свои конфигурации в EFS и смонтируйте EFS в том месте, где ожидаются конфигурации Nginx. В качестве альтернативы поместите их на Amazon S3 и время от времени запускайте синхронизацию или используйте s3fs (будьте осторожны, s3fs может быть недостаточно хорошим для производственного использования).
Когда вам нужно изменить конфигурацию, увеличьте желаемый размер группы автомасштабирования, чтобы вдвое больше, чем вам нужно для запуска новых экземпляров с новой конфигурацией, а затем вернитесь к тому, что вам нужно, что удалит старые экземпляры. В качестве альтернативы просто выполните последовательную перезагрузку серверов.
Другой вариант - просто отправить новые конфигурации на ваш сервер с помощью базового инструмента автоматизации, такого как развертывание кода AWS.
Полностью автоматизированные параметры выше технически лучше и чище, но если вы редко меняете конфигурации и хотите найти простое решение, это может помочь.
AWS Выполнить команду https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html
Или вы можете использовать Opsworks https://aws.amazon.com/opsworks/
Перестройка AMI или создание полнофункциональных конвейеров развертывания, как предлагают другие, только для изменения файла конфигурации, кажется излишним. Вы должны использовать Ansible, чтобы отправлять изменения и синхронизировать все ваши узлы. Существует множество модулей Ansible, которые могут помочь вам автоматизировать общие задачи.