In Azure, the cloud service can work as a load balancer, the VMs should in the same Availability set, and should set load balancer rules at the endpoint. Load balancing endpoints have a one-to-many relationship between the public IP address and the local ports assigned to the services on the virtual machines in the cloud service.
One VM’s CPU usage is close to 100%, and another is 3%. Because of the Azure Load Balancer one time will send all the new requests to one VM, and after the LB probe the health of another (in my case is 15s), the LB will send new connections to another, so one VM’s CPU usage will higher than another.
Here is my LB rules:
About the auto scaling, we should check the configuration of the SCALE.
1. we should check the Instance range, if you just create 2 instances, even if the average CPU usage higher than your target, the auto scaling will not scale to 3 instances.
2. We should check the Target CPU settings. This range represents average CPU usage for the entire role. Windows Azure will add or remove virtual machines to keep you in this range. And the average CPU usage (5mins) higher\lower than the target, then the auto scale will add\remove the VM.
Here are my auto scale settings:

Also we can find the Autoscale operation logs here:
