stratos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lakmal Warusawithana <>
Subject LXC based Cartridges
Date Thu, 11 Jul 2013 08:49:40 GMT

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



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 )



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

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.



Lakmal Warusawithana
Software Architect; WSO2 Inc.
Mobile : +94714289692
Blog :

View raw message