2013-12-16 6 views
4

Я хочу запустить несколько компьютеров EC2 параллельно. До сих пор я использовал boto и fabric, но серийное исполнение требует времени для запуска и предоставления их по одному. Любое альтернативное решение/инструмент для этого?Запуск нескольких экземпляров EC2 параллельно

ответ

2

Средство командной строки amazon поддерживает параметр для количества экземпляров.

aws ec2 run-instances help 
    --count (string) 
     Number of instances to launch. If a single number is provided, it is 
     assumed to be the minimum to launch (defaults to 1). If a range is 
     provided in the form min:max then the first number is interpreted as 
     the minimum number of instances to launch and the second is inter- 
     preted as the maximum number of instances to launch. 

Если вы используете старую CLI:

ec2-run-instances 
-n, --instance-count MIN[-MAX] 
     The number of instances to attempt to launch. May be specified as a 
     single integer or as a range (min-max). This specifies the minimum 
     and maximum number of instances to attempt to launch. If a single 
     integer is specified min and max are both set to that value. 

Update: Согласно документации бота ec2, вы можете передать в min_count и MAX_COUNT параметра команды run_instances, который также позволят вам запускайте несколько экземпляров параллельно.

+0

выше информации нигде не упоминается, создает ли он несколько экземпляров «одновременно» или «один за другим». OP ищет альтернативу «серийному исполнению» запуска нескольких экземпляров. – slayedbylucifer

+0

@slayedbylucifer: Это единственная команда, и экземпляры создаются параллельно. – chris

+0

Согласен. Просто попробовал, и это сработало. Пробовал и с Ruby SDK, и это сработало. Все они создают экземпляры параллельно, поскольку все они вызывают одни и те же API. Не уверен, почему OP говорит, что python boto не создает экземпляры параллельно. Я никогда не пробовал Бото. Но AWS CLI использует boto за шторами. – slayedbylucifer

1

вы можете использовать CloudFormation для запуска автоматического масштабирования группы с фиксированным размером:

"MyFixedSizeGroup":{ 
     "Type":"AWS::AutoScaling::AutoScalingGroup", 
     "Properties":{ 
      "LaunchConfigurationName":{"Ref":"GlobalWorkersSmallLaunchConf"}, 
      "AvailabilityZones" : [ "us-east-1a" ], 
      "MinSize":"4", 
      "MaxSize":"4", 
      "DesiredCapacity":"4", 
      "Tags":[{"Key":"Name", "Value":"worker instance", "PropagateAtLaunch":"true"}]   
     }   
} 

и желаемой конфигурации запуска, например:

"GlobalWorkersSmallLaunchConf":{ 
     "Type":"AWS::AutoScaling::LaunchConfiguration", 
     "Properties":{"KeyName":{"Ref":"MyKeyName"}, 
         "ImageId":"ami-SomeAmi", 
         "UserData":{"Fn::Base64":{"Fn::Join":["",[{"Ref":"SomeInitScript"}]]}}, 
         "SecurityGroups":[{"Ref":"InstanceSecurityGroup"}], 
         "InstanceType":"m1.small", 
         "InstanceMonitoring":"false" 
     }   
} 

Вы можете использовать его с boto или через CLI

BTW- Он работает намного лучше, потому что вы отправляете один запрос на услугу AWS, то есть han как стек. для завершения экземпляров (и любых других ресурсов, которые вы хотите добавить) просто удалите стек.

Смежные вопросы