Uploaded image for project: 'PuppetDB'
  1. PuppetDB
  2. PDB-1263

Round robin support for EC2 subnets

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Normal
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: PDB 2.3.5
    • Component/s: None
    • Labels:
      None
    • Template:
    • Story Points:
      8
    • Sprint:
      PuppetDB 2015-04-22

      Description

      Using VPCs requires that we pin our instances to a specific subnet which also implies a specific availability zone. Under normal conditions this is fine, but when one availability zone is at capacity, it results in errors like the one below:

      [AWS EC2 500 0.194905 0 retries] run_instances(:block_device_mappings=>[{:device_name=>"/dev/sda1",:ebs=>{:delete_on_termination=>true,:volume_size=>8}}],:client_token=>"35a3e6d2-119b-431b-94c1-7bcebe5af82f",:disable_api_termination=>false,:image_id=>"ami-bd420e8d",:instance_initiated_shutdown_behavior=>"terminate",:instance_type=>"c3.large",:key_name=>"Beaker-jenkins-sector",:max_count=>1,:min_count=>1,:monitoring=>{:enabled=>true},:security_group_ids=>["sg-9f6926fa"],:subnet_id=>"subnet-92dd65f7") AWS::EC2::Errors::InsufficientInstanceCapacity We currently do not have sufficient c3.large capacity in the Availability Zone you requested (us-west-2b). Our system will be working on provisioning additional capacity. You can currently get c3.large capacity by not specifying an Availability Zone in your request or choosing us-west-2a, us-west-2c.
      Failed: errored in CLI.provision
      #<AWS::EC2::Errors::InsufficientInstanceCapacity: We currently do not have sufficient c3.large capacity in the Availability Zone you requested (us-west-2b). Our system will be working on provisioning additional capacity. You can currently get c3.large capacity by not specifying an Availability Zone in your request or choosing us-west-2a, us-west-2c.>
      

      If we were not specifying an availability zone, it would have just picked one of the other zones that were under capacity (and we would have not seen the error). Since we need to have the subnet pinned in order to use VPCs Ken Barber has created a subnet in each of the zones. If we were able to specify a list of subnet ids and beaker was able to roll to the next subnet when one failed, it would give us the same ability as not specifying a vpc/subnet.

      This change involves changing Beaker to support a list of subnets, the failover code and updating PuppetDB to take advantage of that new subnet list feature.

        Attachments

          Issue Links

            Activity

              jsd-sla-details-panel

                People

                • Assignee:
                  Unassigned
                  Reporter:
                  ryan.senior Ryan Senior
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  4 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: