2015-07-13 5 views
1

Я пытаюсь создать экземпляр EC2, который будет использовать автомасштабирование, прикрепленный к балансировщику нагрузки.AWS Автомасштабирование балансировки нагрузки с облачной областью

К сожалению, я получаю ошибку

The availability zones of the specified subnets and the AutoScalingGroup do not match 

Однако, это мой текущий CloudFormation сценарий:

"ApiAutoScaling" : { 
    "Type" : "AWS::AutoScaling::AutoScalingGroup", 
    "Properties" : { 
    "VPCZoneIdentifier" : [ "subnet-5ff05206", "subnet-b1109fc6", "subnet-948ce5f1" ], 
    "InstanceId" : { 
     "Ref" : "ApiEC2" 
    }, 
    "MaxSize" : 3, 
    "MinSize" : 1, 
    "LoadBalancerNames" : [ "Api" ] 
    } 
}, 
"ApiLoadBalancer" : { 
    "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", 
    "Properties" : { 
    "LoadBalancerName" : "Api", 
    "Listeners" : [ 
     { 
     "InstancePort" : "80", 
     "InstanceProtocol" : "HTTP", 
     "LoadBalancerPort" : "80", 
     "Protocol" : "HTTP" 
     }, 
     { 
     "InstancePort" : "80", 
     "InstanceProtocol" : "HTTP", 
     "LoadBalancerPort" : "443", 
     "Protocol" : "HTTPS", 
     "SSLCertificateId" : "arn:aws:iam::xxx" 
     } 
    ], 
    "SecurityGroups" : [ "sg-a88444cc" ], 
    "Subnets" : [ "subnet-5ff05206", "subnet-b1109fc6", "subnet-948ce5f1" ] 
    } 
} 

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

+0

Если требуется больше информации, пожалуйста, дайте мне знать. – DanielM

+0

Попробуйте указать свойство 'AvailabilityZones' для группы автоматического масштабирования. По умолчанию используется все они, поэтому, если ваши подсети используют только подсеть зон, вы получите это сообщение об ошибке. – bsvingen

+1

Вы правы. Я пробовал это вручную без везения, но трюк заключался в использовании [Fn :: GetAZs] (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getavailabilityzones.html) , даже просто '" AvailabilityZones ": {" Fn :: GetAZs ":" "}' работает. Я считаю, что, как вы говорите, по умолчанию используется их все, но функция вернет только те, которые вы на самом деле * можете использовать *. Немного странно, но все же, если вы хотите ответить на этот вопрос, я буду отмечать его как правильное. – DanielM

ответ

1

Попробуйте указать свойство AvailabilityZones для группы автомасштабирования. По умолчанию используется все они, поэтому, если ваши подсети используют только подсеть зон, вы получите это сообщение об ошибке.

(Как было отмечено в комментариях, "AvailabilityZones" : { "Fn::GetAZs" : "" } должен сделать трюк.)

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