Конфигурация Amazon Cloud для веб-приложения Java EE с MySQL

В моей работе мне нужно переместить некоторые существующие приложения Enterprise Java на AWS. Я просмотрел много страниц на aws.amazon.com и достаточно погуглил. Кроме того, я попытался ответить на все связанные вопросы в stackoverflow. Все это многое прояснило, однако у меня все еще есть некоторая путаница. Вот структура нашего приложения:

  1. Это приложение на основе Spring, которое использует Spring MVC в качестве уровня представления и простые интерфейсы и классы Java для обработки бизнес-логики и логики данных.
  2. MySQL используется для сохранения.

Итак, Архитектура приложения достаточно проста. Однако загвоздка в том, что нам нужно развернуть множество экземпляров этого приложения. В настоящее время это число составляет 15 и может превышать 30. Еще один момент - все эти экземпляры используют общую базу данных.

Вот чего нам нужно достичь, перейдя на AWS:

  1. Более высокая отказоустойчивость для приложения. Недавно мы столкнулись с отказом сервера / питания на выделенном хостинге, что привело к простоям на несколько часов.
  2. Более высокая производительность для всех экземпляров приложения с точки зрения времени отклика и пропускной способности.
  3. Более высокая отказоустойчивость для MySQL. Экземпляры приложений недавно вышли из строя на одном из наших серверов из-за некоторого оборудования (жесткого диска), что в основном привело к неожиданной остановке MySQL. Вся файловая система на жестком диске стала доступной только для чтения, что привело к неисправности экземпляров приложения, размещенных на этом сервере.
  4. Очевидно, что снизились общие затраты и накладные расходы на управление инфраструктурой.

Насколько я могу понять инфраструктуру AWS, пока Теперь вот то, что нам понадобится в AWS для нашей установки:

  1. 4 экземпляра, каждый из которых содержит около 10 экземпляров приложений, некоторого AMI LINUX на основе EBS с установленными на нем Tomcat и MySQL.
  2. Я предполагаю, что мы могли бы это сделать. также потребуется 1 экземпляр для обеспечения отказоустойчивости для каждого из этих 4 экземпляров, всего 8 экземпляров.
  3. Все экземпляры сервера будут иметь около 160 ГБ EBS.
  4. 4 эластичных IP-адреса
  5. 4 эластичных балансировщика нагрузки
  6. Другие вещи, такие как моментальные снимки и т. Д.

Вот мои вопросы:

  1. Действительно ли мне нужен этот дополнительный экземпляр сервера (для отказоустойчивости) для каждого экземпляра основного сервера, учитывая тот факт, что EBS автоматически копируются AWS и они предоставят новой EBS те же данные в случае аппаратного сбоя?

  2. Как я могу совместно использовать базу данных между всеми экземплярами сервера (4x2) в приведенном выше сценарии? Один из вариантов, который я вижу, - это реализовать кластеризацию MySQL среди этих экземпляров сервера. Допустим, кластер MySQL будет содержать 1 узел управления, 3 узла SQL и 4 узла данных. Однако в этом случае поддержка кластера будет для нас дополнительными накладными расходами, и это может быть неприемлемо, поскольку мы хотели бы избавиться от управления инфраструктурой.

  3. Нужно ли мне иметь RDS вместо базы данных и удалять экземпляры MySQL со всех серверов isntances (4x2)? Если да, нужно ли мне покупать экземпляры RDS в дополнение к экземплярам EC2 (я думаю, если мне нужно покупать отдельные экземпляры для RDS, тогда стоимость всей инфраструктуры увеличится как минимум на 75%) или экземпляры RDS также предоставляют вычислительные единицы для разработки приложений, что сокращает общее количество экземпляров для развертывания приложений?

  4. В случае реализации RDS, действительно ли нужны экземпляры EC2 на базе EBS? Если мы сможем каким-либо образом удалить требование EBS из экземпляров EC2 с установленными экземплярами RDS, мы сможем снизить общую стоимость.

Любая помощь будет принята с благодарностью, и, пожалуйста, дайте мне знать, если я не могу четко указать мою проблему и требовать дополнительных разъяснений для любой точки.

5
задан Arjan Tijms 3 March 2013 в 10:56
поделиться