Як оновити файл конфігурації Nginx на багатьох однакових серверах одночасно?


12

На Amazon EC2 у нас є флот серверів Nginx, де нам періодично потрібно оновлювати файли конфігурації для впровадження нових налаштувань.

В даний час у нас є конфігурації у користувальницькому AMI, і якщо нам потрібно оновити, ми повинні відновити екземпляри AMI, а потім EC2. У нас є кілька помічників сценаріїв, але для цього все ще досить зусиль. Чи є якийсь кращий спосіб?


3
ansible, солянка, щоб назвати декілька.
poige

Відповіді:


26

Існує ряд понять, якими можна скористатися.

Запорука успіху - автоматизація

Перший варіант - продовжувати робити те, що ви робите зараз, тобто відновлювати EC2 з кожною зміною конфігурації . Просто повністю автоматизованим способом.

Оскільки ви зараз здійснюєте оновлення конфігурації через AMI, ви зробите цей крок далі і створюєте конвеєр, який після зміни файлу конфігурації у деякому сховищі:

  1. Автоматично будувати новий AMI - один з найпопулярніших інструментів для цього - Packer
  2. Автоматично відновлюйте свій флот Nginx - у вас уже повинні бути всі сервери Nginx в групі з автоматичним масштабуванням, у яких передбачувальний балансир завантаження попереду. Якщо ви цього не зробите , це зробить оновлення таким же простим, як оновлення конфігурації запуску ASG та чекання, коли екземпляри будуть відновлені з нового AMI.

Другий варіант - тримати екземпляри на місці та розгортати лише конфігураційні файли , не відновлюючи їх. Як правило, ви можете ставитися до файлів конфігурації як до коду та розгортати зміни конфігурації так само, як ви розгортаєте версії коду. AWS має багато інструментів, щоб допомогти у цьому.

  • AWS Elastic Beanstalk, який використовує Шеф-кухаря внутрішньо, і ви можете скриптувати свої оновлення Nginx таким чином.
  • Розгортання коду AWS - це повністю розбірливий інструмент розгортання, який добре інтегрується з іншими частинами AWS Code Suite :
    • Код ввести, де ви можете зберігати свої файли конфігурації Nginx в Git.
    • Кодовий конвеєр, який може автоматично запускати розгортання щоразу, коли файл конфігурації оновлюється в програмі Кодексу.
  • Ansible or Puppet, які є популярними інструментами, що не належать до AWS, за допомогою яких усі сервери можуть бути налаштовані однаково.

Коли вам буде зручно автоматизувати ці оновлення конфігурації Nginx, можливо, ви захочете розширити автоматизацію на іншу частину вашої інфраструктури.


Існує чудовий огляд параметрів розгортання на AWS, який дасть вам хороший огляд.

Я сподіваюся, що це допомагає :)


Альтернативою Ansible або Puppet є Сіль, яка призначена для налаштування типу майстер / міньйон та сортування, оптимізованого для більш масштабних розгортань.
Арахо

5

Зберігайте свої конфігурації на EFS, а очікуйте змонтувати EFS у місці розташування конфігурацій Nginx. По черзі розміщуйте їх на Amazon S3 і періодично запускайте синхронізацію або використовуйте s3fs (будьте обережні, s3fs може бути недостатньо хорошим для виробничого використання).

Коли вам потрібно змінити конфігурацію, збільште потрібну величину групи для автоматичного масштабування, щоб подвоїти те, що потрібно, щоб запустити нові екземпляри з новою конфігурацією, а потім поверніться до потрібного, що видалить старі екземпляри. По черзі просто виконайте прокатну перезавантаження серверів.

Інший варіант - просто натиснути нові конфігурації на ваш сервер за допомогою базового інструмента автоматизації, наприклад розгортання коду AWS.

Повністю автоматизовані вище варіанти є технічно кращими та чистішими, але якщо ви рідко змінюєте конфігурації та хочете просте рішення, це може допомогти.



1

Перебудова AMI або створення повноцінних конвеєрів розгортання, як і інші, пропонують лише для зміни конфігураційного файлу, схоже на надмір. Ви повинні використовувати Ansible, щоб витіснити зміни та синхронізувати всі свої вузли. Існує багато модулів Ansible, які допоможуть вам автоматизувати звичайні завдання.


Одним з переваг непорушної інфраструктури є те, що ви знаєте, що у вас немає жодних "домашніх" серверів, які є крихкими і їх слід підтримувати. Це дає вам впевненість у тому, що ви можете створювати більше серверів у продажі / DR / тестуванні без проблем.
Тім
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.