For your production web farm, you have configured an auto scaling group behind a Network Load Balancer. Your auto-scaling group is defined to have a core number of reserved instances and to scale with spot instances. Because of differences in spot pricing across AZs, sometimes you end up with many more instances in one AZ over another. During times of peak load, you notice that AZs with fewer instances are averaging 70% CPU utilization while the AZ with more instances average barely above 10% CPU utilization. What is the most likely cause of this behavior?
A) The TTL for sticky sessions is set too high and therefore are blocking a scale-out event until some connections are dropped.
B )CloudWatch is not accurately reflecting the true CPU load due to mesh processing on Nginx. The real CPU load might in fact not reach the threshold which explains why the group is not scaling.
C)The cooldown time is too short in the launch configuration.
D)At the time a scale event is triggered, there are no more available resources in the AZ or region of the instance type you have configured in your auto scaling group.
E)Cross-zone load balancing is disabled on the Network Load Balancer.
The answer E seems wrong. If cross zone load balancing was disabled. There would not be even 10% CPU utilization on other AZs. Can anyone advise if my thinking is right or wrong?
In addition, why is option A wrong? Is the reason this – because for a Network load balancer, there is not a concept of sticky sessions?
For option A, NLB is layer 4 load balancer; I think you have to use layer 7 LB in order to use sticky cookies. ELB uses the DNS round robin to connect user requests to different LB nodes. if you don’t have the cross zone load balance enabled, and resolver cached DNS queries, user reuqests may favor one AZ or the other. You can enable cross zone load balance to mitigate the impact of DNS caching.
Adding to vault0109’s answer, there’s a great description of Cross-Zone Load Balancing on the page How Elastic Load Balancing Works. Specifically:
When cross-zone load balancing is enabled, each load balancer node distributes traffic across the registered targets in all enabled Availability Zones.
When cross-zone load balancing is disabled, each load balancer node distributes traffic across the registered targets in its Availability Zone only.
And yes; Cross-Zone Load Balancing is a feature that AWS doesn’t describe very well. Hope this clarifies that question a little!