2015-05-07 4 views
1

Этот вопрос имеет концептуальные и практичные части.AWS автомасштабирование существующего экземпляра

Концептуально хотелось бы знать, эквивалентно ли использование функции автомасштабирования просто увеличить вычислительную мощность в несколько раз по количеству добавленных экземпляров?

Практически ... как это работает? У меня есть один запущенный экземпляр, его база данных находится на LVM, состоящем из нескольких томов EBS, аналогично всем данным веб-сайта. Судя по нагрузке на экземпляр, мне нужно либо перейти на более мощный экземпляр, либо ввести это автомасштабирование. Это копия работающего сервера? Если да, то как поддерживается база данных (и т. Д.)?

Я прочитал документацию AWS и до сих пор не получил изображение - я мог бы установить одну группу автосохранения, которая, вероятно, устранит мои сомнения, но я очень осторожен, чтобы сделать это с производственным сервером.

Любые толчки в правильном направлении приветствуются.

ответ

2

Обычно, если у вас есть решение, которое также использует базу данных и несколько машин в решении, база данных, как правило, не находится на какой-либо из машин, но вместо этого размещается отдельно с каждой рабочей машиной, указывающей на одну и ту же базу данных - если вы уже на платформе AWS, тогда DynamoDB или RDS являются хорошими решениями для этого.

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

  • Использование нескольких машин вместо одного большого дает вам некоторую отказоустойчивость. Одна или несколько машин могут опуститься, и если ваше решение будет правильно спроектировано, новые машины будут вращаться, чтобы их заменить.
  • Увеличение размера решения для одной машины означает, что вы, вероятно, слишком много платите. Если размер этой отдельной машины достаточно большой, чтобы обрабатывать максимальные рабочие нагрузки, это означает, что в другое время (возможно, в большинстве случаев) вы платите за более крупную машину, чем вам нужно. Если вы настроите свое автомасштабирующее решение должным образом, все больше машин поступает в очередь в ответ на растущий спрос, а затем прекращается, когда этот спрос уменьшается - вы платите только за необходимую мощность, когда вам это нужно.
  • Когда ваше решение сконструировано таким образом, вам нужно подумать обо всех рабочих машинах как о эрмальном, которые могут исчезнуть в любое время, поэтому вам нужно строить свое решение по-другому. Помимо использования размещенной базы данных (например, на DynamoDB или AWS RDS), вы также не должны хранить данные на машинах в вашей группе автомасштабирования, которая также не живет в другом месте. Например, если часть вашего приложения позволяет пользователям загружать изображения, вы не храните их в экземплярах, вы храните их в S3. То же самое относится к любым другим новым данным, которые поступают.

Вы должны иметь возможность образно «вытащить вилку» в любой момент на любой из машин вашего ASG без потери данных.

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

+0

спасибо. Можно ли это сделать без RDS или DynamoDB? – user1658296

+0

Да, любая база данных будет работать, вы просто не хотите, чтобы база данных находилась в одном из ящиков, которые будут частью группы Auto-scale. –