2015-01-12 1 views
2

Я пытаюсь разобраться с простым примером развертывания Java WebApp на веб-сервисах Amazon.Как развернуть Java webapp на Amazon EC2, чтобы вы могли эффективно использовать автомасштабирование?

Я вручную развернул на одном экземпляре EC2, вручную установив Java, Tomcat, MySql на ванильное изображение RedHat - как будто мне принадлежало оборудование.

Теперь я пытаюсь настроить автоматический масштабируемой, простой в управлении, производство доказательство окружающей среды:

  • 1 -> п Tomcat экземпляров со стандартной Java WebApp развернутые,
  • 1 MYSQL база данных с 1 схемой и несколькими таблицами (не много), webapp подключается к ней.

Я понимаю, что автосканирование зависит от некоторого триггера (например, более чем% использования). Однако, когда новый сервер запущен, мое приложение не развертывается, потому что оно не находится в образе VM. Что-то должно произойти, чтобы новые серверы запускали мой код.

  1. Каков наилучший вариант для массового развертывания в 1-й группе автомасштабирования серверов tomcat только на амазонке?
  2. Каков наилучший вариант для обновления вашего приложения? Я думаю, вы не хотите, чтобы все серверы заходили за один раз ...
  3. Как насчет создания образа виртуальной машины, который автоматически извлекает последнюю версию, доступную из моего CI (загружается на S3 или что-то еще)? Я мог бы легко добавить этот сценарий в Tomcat bootstrap/linux startup ...

Как насчет коммерческих инструментов, таких как шеф-повар или кукольный? Любой эквивалент с открытым исходным кодом?

+0

Посмотрите на AWS Elastic Beanstalk –

+0

Спасибо. Я посмотрел, и это выглядит великолепно. Тем не менее, я после некоторого совета по общей стратегии развертывания, то правильные инструменты для этого. –

ответ

2

Я рассмотрел много вещей в Интернете и да, ElasticBeanStalk - правильная вещь, которую нужно использовать, как сказал Жорж. Хотя, похоже, это очень запутанно.

Прежде всего, вы можете запустить сбалансированную нагрузку/масштабируемую среду на свободном уровне с использованием экземпляров t2.micro. Важно то, сколько часов в целом. Вы можете использовать 100 серверов в течение 7 часов, и все будет хорошо. Будьте осторожны с проверкой работоспособности, потому что он постоянно проверяет вашу среду. Если вы запускаете тесты/оценку и не хотите платить, убедитесь, что вы сохраняете/резервируете и завершаете свою среду как можно скорее. Передача данных не является бесплатной, по-видимому, поэтому убедитесь, что вы не используете мульти-AZ и мультизоны, если вы не хотите платить.

Это говорит о том, что BeanStalk - это своего рода «черный ящик», который многое делает для вас. Он предназначен для создания всей конфигурации в консоли для вас. Это своего рода «супермастер» для сбалансированной нагрузки/масштабируемых сред.

Конфигурация выглядит следующим образом: вы говорите, что у вас есть военный файл, который вы хотите развернуть, вы его загружаете, вы выбираете контейнер (например, linux + tomcat), вы настраиваете базу данных и создаете базовую конфигурацию со всеми вы хотите: балансировка нагрузки, автомасштабирование и мониторинг. Легко изменить настройки в соответствии с вашими потребностями.

Одна хитрая вещь конфигурации базы данных: вам необходимо установить ENVIRONNEMENT переменные и использовать их в своей конфигурации яровой согласно: https://raymondhlee.wordpress.com/2013/06/01/migrating-a-java-web-app-for-deploy-to-aws-elastic-beanstalk/

обновление приложений может произойти в «качению путь», то есть происходит на ограниченный процент вашего флота серверов (по умолчанию 30%), что означает, что вам не нужно слишком беспокоиться о простоях.

1

Вы можете использовать User Data в конфигурации запуска EC2. Вы можете использовать это, чтобы передать сценарий оболочки вашему экземпляру, который будет запускаться автоматически, когда он будет запущен в первый раз. Общий шаблон - загрузить сценарий оболочки и установить сборку из S3, как вы предложили в своем вопросе.

С помощью этого шаблона обновление сборки на вашей группе автомасштабирования легко. Просто загрузите новую сборку на S3. Затем вручную завершайте экземпляры в группе автомасштабирования. Автоматическое масштабирование автоматически разворачивает новые экземпляры EC2, которые будут загружать новую сборку с S3, а presto - обновлять вашу группу автомасштабирования. Если вы завершаете каждый экземпляр по одному и ожидаете, что новый экземпляр будет подключен к сети, прежде чем завершить следующий, влияние на вашу систему будет сведено к минимуму.

2

Boxfuse делает то, что вы хотите.

Для вас веб-приложения Java вы буквально только должны выполнить:

boxfuse create my-tomcat-app -apptype=load-balanced 
boxfuse scale my-tomcat-app -capacity=1-16:t2-micro:cpu25-75 
boxfuse run my-tomcat-app-1.0.war -env=prod 

Это

  1. Настройка приложения на использование ELB
  2. Установите его AutoScale между 1 и 16 t2 .micro на основе использования ЦП (масштаб в 25% и ниже, масштаб на 75% и выше)
  3. Создайте AMI с вашим приложением и Tomcat, чтобы они были готовы к загрузке
  4. Создать ELB
  5. Создайте группу безопасности с соответствующими портами
  6. Созданием автоматического масштабирования группы
  7. Запустите экземпляр (ы)

Любое последующее обновление будет сделано как ноль простота синего/зеленого развертывания.

Подробнее: https://boxfuse.com/blog/auto-scaling