0

Ich möchte ein Opsworks stack erstellen, mit einem Autoscaling Group, so dass die Instanzen dynamisch entsprechend der Gebühr hinzugefügt werden können. Jetzt, für meine Umgebung, gibt es immer eine hohe Auslastung um 00h, 6h, 12h und 18h. Ich suche nach einer Möglichkeit, die Autoscaling zu diesen Stunden zu konfigurieren: zu jeder der vorherigen Stunden, Hinzufügen von 4 Instanzen von der Autoscaling Group, den Rest der Zeit ist nur eine Instanz online.Konfigurieren der Autoscaling zu bestimmten Zeiten

Ich bin auch nach diesem Document, so dass die Instanz von der Schicht von einem Lambda Function deregistrieren. Hier

ist das Snippet:

"InstanceRole": { 
     "Type": "AWS::IAM::Role", 
     "Properties": { 
     "AssumeRolePolicyDocument": { 
      "Version": "2012-10-17", 
      "Statement": [ 
      { 
      "Effect": "Allow", 
      "Action": [ 
       "opsworks:AssignInstance", 
       "opsworks:DescribeInstances" 
      ], 
      "Resource": [ "*" ] 
      } 
     ]} 
     } 
    }, 
    "InstanceProfile": { 
     "Type": "AWS::IAM::InstanceProfile", 
     "Properties": { 
     "Path": "/", 
     "Roles": [{ "Ref": "InstanceRole" }] 
     } 
    }, 
    "LaunchConfig": { 
     "Type" : "AWS::AutoScaling::LaunchConfiguration", 
     "Properties" : { 
     "AssociatePublicIpAddress" : true, 
     "ImageId" : { "Fn::FindInMap": ["AWSRegionToAMI", { "Ref": "AWS::Region" }, "AMIID"] }, 
     "InstanceType" : {"Ref" : "InstanceType"}, 
     "IamInstanceProfile": {"Ref": "InstanceProfile"}, 
     "EbsOptimized" : true, 
     "SecurityGroups" : [{ "Ref" : "SG" }], 
     "UserData" : { 
      "Fn::Base64": { 
      "Fn::Join" : ["", 
       ["#!/bin/bash", 
       "sed -i'' -e 's/.*requiretty.*//' /etc/sudoers", 
       "pip install --upgrade awscli", 
       "INSTANCE_ID=$(/usr/bin/aws opsworks register --use-instance-profile --infrastructure-class ec2 --region us-east-1 --stack-id ", 
       { "Ref": "StackID"}," --override-hostname $(tr -cd 'a-z' < /dev/urandom |head -c8) --local 2>&1 |grep -o 'Instance ID: .*' |cut -d' ' -f3) /usr/bin/aws opsworks wait instance-registered --region us-east-1 --instance-id $INSTANCE_ID 
       /usr/bin/aws opsworks assign-instance --region us-east-1 --instance-id $INSTANCE_ID --layer-ids ",{ "Ref": "myLayer" } 
       ]] 
      } 
     } 
     } 
    }, 
    "AutoScalingGroup": { 
     "Type" : "AWS::AutoScaling::AutoScalingGroup", 
     "Properties" : { 
     "VPCZoneIdentifier": { "Ref": "subnetIds" }, 
     "LaunchConfigurationName" : { "Ref" : "LaunchConfig"}, 
     "LoadBalancerNames" : [{"Ref" : "ELB"}], 
     "MaxSize": { "Ref": "MaxSize" }, 
     "MinSize": 1, 
     "Tags": 
     [{ 
      "Key": "Name", 
      "Value": "opsworks_stack_id", 
      "PropagateAtLaunch": true 
     }], 
     } 
    }, 

Wie kann ich diese Art von Autoscaling konfigurieren? Sollte ich Time-based verwenden? Jeder Vorschlag wird sehr geschätzt.

+1

Haben Sie darüber nachgedacht zu verwenden Autoscaling mit opsworks? http://docs.aws.amazon.com/opensworks/latest/userguide/workinginstances-autoscaling-loadbased.html http://docs.aws.amazon.com/opswords/latest/userguide/workinginstances-autoscaling.html #cwalarms – strongjz

+0

ja aber nicht genug. Ich denke, ich werde beide benutzen; traditionelle Autoscaling- und zeitbasierte Instanzen – Somar

Antwort

0

können Sie eine AWS::AutoScaling::ScheduledAction Ressource verwenden, um automatisch Ihre AutoScalingGroup auf eine Stunde vor der Hochnutzungszeiten Scale-up (und Verkleinerungs zB 30 Minuten nach):

ScaleUp: 
    Type: AWS::AutoScaling::ScheduledAction 
    Properties: 
    AutoScalingGroupName: !Ref AutoScalingGroup 
    MinSize: 5 
    Recurrence: 0 23,5,11,17 * * * 
ScaleDown: 
    Type: AWS::AutoScaling::ScheduledAction 
    Properties: 
    AutoScalingGroupName: !Ref AutoScalingGroup 
    MinSize: 1 
    Recurrence: 30 0,6,12,18 * * * 
Verwandte Themen