Currently Apache CloudStack supports AutoScaling feature with external Citrix NetScaler device for three purposes: monitoring, grouping and load balancing. For anyone don't know about it, please take a look into Admin guide. Also, there is a pretty explanation below:
http://support.citrix.com/proddocs/topic/ns-system-10-map/ns-autoscale-how-autoscale-works-con.html
Starting from a motivation about creating a native solution of AutoScaling feature, I made some changes to reproduce NetScaler engine operation. The first version still keeps the similar steps compared with the current NetScaler version, while adding two new native counters (Linux User CPU - native & Linux User Memory - native). You can find more detail from my presentation here:
http://www.slideshare.net/tuna20073882/autoscale-without-netscalerccceu13
http://www.youtube.com/watch?v=LJnKMuADvHc
Chiradeep, CloudStack PMC, has a vision to improve my hacking with some new changes below:
+ Need to remove Load Balancing feature from AutoScaling. That’s very simple to do.
+ Need to use SNMP for monitoring not only instance-level but also application-level.
+ Also, supporting well KVM hypervisor
The idea is that the monitoring (WHAT to monitor and HOW to monitor) is separate from the autoscaling decision.
...
- communicates with CS MS to perform scale-up/scale-down
+ AutoScale API: keep the same
+ Monitor API:
+ HTTP request from CS to Monitor device