Hi,
In the current Stratos, cartridge run time is a VM. With this if we want to create a cartridge we have to do it for each and every IaaS that run Stratos. So cartridge creator have to spend lot of time on this. And it will be more costly when it comes to do a update of cartridges. We need to have a way to create universal cartridges. The best option what I see is we can use LXC as Cartridge run time. Then when we create a LXC cartridge it will run on top of any IaaS, and only need Linux VM. Also it give more benefit like we can pack many cartridge runtime in single VM which give high utilization. Here auto scaling going to happen in two levels and it’s coupled with smart auto scaling policies, will discuss separate mail thread for what kind of auto scaling polices need for Stratos. Here I have drow some sample scenarios. Before going into detail we need to get familiar with some terms - Partition We can have partition for each cartridge type. For example we can have PHP Partition, Tomcat Partition ..etc. Partition may consist of one or many VM and this will come from policies. (will discuss in separate mail ) - Subscription User can subscribe to cartridge with some unique alias, say subscription A - Cartridge Process Cartridge Processes are runtime environment (LXC) of subscribed cartridge. For a one subscribed cartridge can have multiple Cartridge Processes depending on auto scaling policies. To accomplish this, Stratos Cloud Controller (CC) need to expand to support LXC management. We need to have a cartridge store and it will store all Cartridges (LXC based images). Then CC can spin out Partition VM depending on policies associated with that cartridge type. A partition will have a CC LXC agent and for the first time it will copy relevant Cartridge images. When scaling request comes to CC it will communicate relevant Partition’s LXC agent and agent who is responsible for spinning up LXCs (Cartridge Processes). So we need to implement this LXC agent (It should handle all LXC management). I am looking some help from expert who in the Apache Stratos community who may already worked on LXC. Maybe we can used existing open source tools. Docker [1] is one I found while doing some research. Please share your expertise on this then we can finalize how we can implement this. We are in the process of organizing some google hangout sessions to conduct some technical discussion of Stratos and we can discuss this also in a hangout. thanks [1]https://github.com/dotcloud/docker -- Lakmal Warusawithana Software Architect; WSO2 Inc. Mobile : +94714289692 Blog : http://lakmalsview.blogspot.com/
