У нас есть сайт, страницы которого нужно время от времени обновлять. В любой момент на сайте работает около 8 экземпляров EC2, но иногда он становится намного больше. Мы используем балансировщик нагрузки и автомасштабирование, чтобы создать больше экземпляров. Страницы - это просто файлы на диске; нет системы управления контентом. Веб-сервер - это Jetty.
Если я изменю страницу, как я могу развернуть ее на всех текущих и будущее экземпляры?
Очевидно, я не могу использовать такой инструмент управления, как Fabric, потому что он не будет обновлять AMI, из которых будут создаваться будущие экземпляры. Также было бы ошибкой создать новый AMI и развернуть его, потому что, во-первых, это громоздкий процесс, а во-вторых, он уничтожил бы все текущие пользовательские сеансы в существующих экземплярах.
Я думаю, что экземплярам нужно откуда-то извлекать страницы сайта и время от времени проверять наличие обновлений.
Я думал разместить страницы на S3, но это не начало, потому что 1) S3 не имеет возможности уведомлять экземпляры об изменении страниц, 2) поэтому вам нужно опрашивать S3 постоянно, 3) что дорого, и 4) вы приходиться делать это для каждой страницы индивидуально.
Как это сделать проще всего? Какой лучший способ, если лучший! = Простой?
Вы делаете это, используя некоторые шаги после клонирования в автоматическом масштабировании. Точные методы зависят от вашего уровня комфорта, но подобное решение, вероятно, много для вас сделает:
Это метод пакетного режима. Существующие серверы не получают уведомления о новых файлах, но все они получат их примерно одновременно из-за времени выполнения cron. Новые серверы будут получать новые файлы при запуске.
Ключевым моментом здесь является отделение вашего контента от самого AMI.
На мой взгляд, есть несколько вариантов: