Note that there are some explanatory texts on larger screens.

plurals
  1. POCreate autoscaling webserver group add to existing elb
    primarykey
    data
    text
    <p>I have an Elastic Load Balancer already configured with ports and SSL certificates etc and Route 53 is set to route traffic for my site to it. </p> <p>I'd like to know if there is an example cloudFormation template that creates an auto-scaling group of ec2 instances where each instance is added and removed to/from this existing load balancer.</p> <p>I've looked around online for examples - the one below seems to be nearly what I need, but the problem with it (and all the others which appear to use variations of this) is that it presumes you want to create a NEW load balancer. I do not.</p> <p><a href="https://s3.amazonaws.com/cloudformation-templates-us-east-1/AutoScalingMultiAZWithNotifications.template" rel="nofollow">https://s3.amazonaws.com/cloudformation-templates-us-east-1/AutoScalingMultiAZWithNotifications.template</a></p> <p>Is it possible, to do what I'm suggesting? Does someone have an example?</p> <p>My CloudFormation script looks like below ( I removed the actual server package config part). This successfully creates a new instance, but it does not add to load balancer "load4". I can add the host to the load balancer manually, but this defeats the purpose obviously.</p> <pre><code>{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Create an Auto-scaling group that will attach to existing load balancer and inhereit existing security groups.", "Parameters" : { "KeyName" : { "Description" : "mykeyname", "Type" : "String" }, "InstanceType" : { "Type" : "String", "Default" : "m1.small", "AllowedValues" : [ "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "c1.xlarge", "cc1.4xlarge" ], "Description" : "EC2 instance type (e.g. m1.large, m1.xlarge, m2.xlarge)" }, "SpotPrice": { "Description": "Spot price for application AutoScaling Group", "Type": "Number", "MinValue" : ".03" }, "MinInstances" : { "Description" : "The minimum number of Workers", "Type" : "Number", "MinValue" : "0", "Default" : "0", "ConstraintDescription" : "Enter a number &gt;=0" }, "MaxInstances" : { "Description" : "The maximum number of Workers", "Type" : "Number", "MinValue" : "1", "Default" : "4", "ConstraintDescription" : "Enter a number &gt;1" }, "OperatorEmail": { "Description": "Email address to notify if there are any scaling operations", "Type": "String" } }, "Mappings" : { "AWSInstanceType2Arch" : { "t1.micro" : { "Arch" : "64" }, "m1.small" : { "Arch" : "64" }, "m1.medium" : { "Arch" : "64" }, "m1.large" : { "Arch" : "64" }, "m1.xlarge" : { "Arch" : "64" }, "m2.xlarge" : { "Arch" : "64" }, "m2.2xlarge" : { "Arch" : "64" }, "m2.4xlarge" : { "Arch" : "64" }, "m3.xlarge" : { "Arch" : "64" }, "m3.2xlarge" : { "Arch" : "64" }, "c1.medium" : { "Arch" : "64" }, "c1.xlarge" : { "Arch" : "64" }, "cc1.4xlarge" : { "Arch" : "64HVM" }, "cc2.8xlarge" : { "Arch" : "64HVM" }, "cg1.4xlarge" : { "Arch" : "64HVM" } }, "AWSRegionArch2AMI" : { "us-east-1" : { "32" : "ami-31814f58", "64" : "ami-1b814f72", "64HVM" : "ami-0da96764" }, "us-west-2" : { "32" : "ami-38fe7308", "64" : "ami-30fe7300", "64HVM" : "NOT_YET_SUPPORTED" }, "us-west-1" : { "32" : "ami-11d68a54", "64" : "ami-1bd68a5e", "64HVM" : "NOT_YET_SUPPORTED" }, "eu-west-1" : { "32" : "ami-973b06e3", "64" : "ami-953b06e1", "64HVM" : "NOT_YET_SUPPORTED" }, "ap-southeast-1" : { "32" : "ami-b4b0cae6", "64" : "ami-beb0caec", "64HVM" : "NOT_YET_SUPPORTED" }, "ap-southeast-2" : { "32" : "ami-b3990e89", "64" : "ami-bd990e87", "64HVM" : "NOT_YET_SUPPORTED" }, "ap-northeast-1" : { "32" : "ami-0644f007", "64" : "ami-0a44f00b", "64HVM" : "NOT_YET_SUPPORTED" }, "sa-east-1" : { "32" : "ami-3e3be423", "64" : "ami-3c3be421", "64HVM" : "NOT_YET_SUPPORTED" } } }, "Resources" : { "NotificationTopic": { "Type": "AWS::SNS::Topic", "Properties": { "Subscription": [ { "Endpoint": { "Ref": "OperatorEmail" }, "Protocol": "email" } ] } }, "WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : ""}, "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MinSize" : "0", "MaxSize" : "4", "LoadBalancerNames" : [ "load4" ], "NotificationConfiguration" : { "TopicARN" : { "Ref" : "NotificationTopic" }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH","autoscaling:EC2_INSTANCE_LAUNCH_ERROR","autoscaling:EC2_INSTANCE_TERMINATE", "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"] } } }, "CfnUser" : { "Type" : "AWS::IAM::User", "Properties" : { "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Statement": [ { "Effect":"Allow", "Action":"cloudformation:DescribeStackResource", "Resource":"*" } ] } } ] } }, "HostKeys" : { "Type" : "AWS::IAM::AccessKey", "Properties" : { "UserName" : { "Ref" : "CfnUser" } } }, "LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Create a single webserver", "AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { } }, "files" : { } } } }, "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "SpotPrice" : { "Ref" : "SpotPrice" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [ "webserver" ], "InstanceType" : { "Ref" : "InstanceType" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash\n", "yum update -y aws-cfn-bootstrap\n", "# Install the Worker application\n", "/opt/aws/bin/cfn-init ", " --stack ", { "Ref" : "AWS::StackId" }, " --resource LaunchConfig ", " --configset ALL", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]}} } }, "WorkerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : ""}, "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MinSize" : { "Ref" : "MinInstances" }, "MaxSize" : { "Ref" : "MaxInstances" } } }, "WebServerScaleUpPolicy" : { "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AdjustmentType" : "ChangeInCapacity", "AutoScalingGroupName" : { "Ref" : "WorkerGroup" }, "Cooldown" : "60", "ScalingAdjustment" : "1" } }, "WebServerScaleDownPolicy" : { "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AdjustmentType" : "ChangeInCapacity", "AutoScalingGroupName" : { "Ref" : "WorkerGroup" }, "Cooldown" : "60", "ScalingAdjustment" : "-1" } }, ... "WorkerThreadHigh": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "Scale-up if Worker Thread Vs. Idle Percent &gt; 80% for 10min", "MetricName": "PctActiveWorkers", "Namespace": "EC2", "Statistic": "Average", "Period": "300", "EvaluationPeriods": "2", "Threshold": "80", "AlarmActions": [ { "Ref": "WebServerScaleUpPolicy" } ], "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": { "Ref": "WebServerGroup" } } ], "ComparisonOperator": "GreaterThanThreshold" } }, "WorkerThreadLow": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "Scale-down if CPU &lt; 50% for 10 minutes", "MetricName": "PctActiveWorkers", "Namespace": "EC2", "Statistic": "Average", "Period": "300", "EvaluationPeriods": "2", "Threshold": "50", "AlarmActions": [ { "Ref": "WebServerScaleDownPolicy" } ], "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": { "Ref": "WebServerGroup" } } ], "ComparisonOperator": "LessThanThreshold" } } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload