You've configured a weighted auto-scaling array and the instance distribution is not evenly weighted according to your percentages.
During a resize event and prior to launching a new instance on a weighted array, we first have to select the appropriate zone to launch the instance into. There are three major factors that come into play that can seemingly cause the weighted distribution to be off, especially in smaller arrays with fewer instances:
- If the array is configured to use a zone that does not have available space at the time of launch then it will not be included as an option when we provision the instance. If the zone is full during multiple resize actions this can cause quite a gap.
- If a zone hits the maximum allowed instances, set by either the user on the array itself or the max instances allowed by AWS in the zone, then it will no longer be counted as an option at the time of resize.
- Each zone is applied a direct probability of being selected based off of the percentage assigned in the Dashboard. Every time an instance is launched, each zone will have that same probability of the instance being launched inside it. Assuming neither of the previous two factors are involved, there is a 25% chance (1/2 x 1/2) that a single array with two instances and a 50-50 split weight between two zones will end up with both instances in a single zone. There is a 12.5% chance (1/2 x 1/2 x 1/2) that 3 instances launched in the same array will end up in the same zone.
NOTE: the algorithm takes into account the existing instances in each zone and modifies the weight distribution for each zone before selection.