Hi All,

I need your views on following.

In the Agent side we need to have a configuration file (say
instances_config.xml) which specifies the paths and names of the instances
belong to domains.

I thought to have following structure:

<domain name="wso2.as.domain">
   <instance name="wso2as-4.1.0-SNAPSHOT"
path="/home/nirmal/Desktop/wso2as-4.1.0-SNAPSHOT"/>
   <instance name="wso2as-4.1.0-SNAPSHOT"
path="/home/nirmal/Temp/wso2as-4.1.0-SNAPSHOT"/>
   .....
</domain>
<domain name="wso2.bps.domain">
   <instance name="wso2bps-4.1.0-SNAPSHOT"
path="/home/nirmal/Desktop/wso2bps-4.1.0-SNAPSHOT"/>
   <instance name="wso2bps-4.1.0-SNAPSHOT"
path="/home/nirmal/Temp/wso2bps-4.1.0-SNAPSHOT"/>
   .....
</domain>
.....

WDYT?

PS: It is my understanding that the autoscaler component passes the 'domain
name' to the "Autoscaler Service", when it wants to scale.



On Mon, Feb 20, 2012 at 9:31 PM, Selvaratnam Uthaiyashankar <
shan...@wso2.com> wrote:

> On Mon, Feb 20, 2012 at 8:17 PM, Nirmal Fernando <nir...@wso2.com> wrote:
> > Hi Shankar,
> >
> > On Mon, Feb 20, 2012 at 5:34 PM, Selvaratnam Uthaiyashankar
> > <shan...@wso2.com> wrote:
> >>
> >> Hi Nirmal,
> >>
> >> Good progress!. we can do a review on the work already done.
> >
> >
> > Thanks, will arrange a review this week.
> >
> >>
> >>
> >> Did you try the agent in windows?
> >
> >
> > No, I didn't!
> >
> >>
> >> Is it using any native code?
> >
> >
> > It needs to use native code in cases like spawning a new JVM (in Ubuntu
> we
> > need /bin/sh to run the script 'wso2server.sh' in windows we need to run
> the
> > batch file.
> > But I believe this can be handled within the code it self by checking
> the OS
> > name and execute appropriate commands!
> >
> >>
> >>
> >> See some comments below.
> >>
> >> On Sat, Feb 18, 2012 at 11:10 PM, Nirmal Fernando <nir...@wso2.com>
> wrote:
> >> > Hi All,
> >> >
> >> > I've started to implement 'new autoscaler architecture' [1] on
> February
> >> > 8th.
> >> > After having a discussion with Azeez, we came up with three milestones
> >> > for
> >> > the first iteration.
> >> >
> >> >
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> >> >
> >> > M1: Make a WS call spawns a new JVM instance & make the new instance
> >> > joins
> >> > the cluster with hard coded Agents.
> >> >
> >> > M2: Finish Agent registration related parts and spawn a new instance
> in
> >> > a
> >> > selected Agent.
> >> >
> >> > M3: Let current autoscaler component calls 'AutoscalerService' and
> >> > spawns a
> >> > new JVM instance in a selected Agent. Also applying WS security.
> >> >
> >> >
> >> >
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> >> >
> >> > I've attached set of images which depicts different stages of new
> >> > architecture. Reading order of images is as follows:
> >> >
> >> > agent-reg --> autoscaler --> spawn --> cluster
> >> >
> >> >
> >> > M1 is already finished.
> >> >
> >> > I've almost done the Agent registration (M2) aspect.
> >> >
> >> > What it does now?
> >> >
> >> > AgentManagementService and AutoscalerService should be deployed in the
> >> > back-end server. (say: IP is 192.168.1.2)
> >> >
> >> > AgentService should be deployed in machines (i.e. where new JVM
> >> > instances
> >> > will be spawned). (say: IP is 192.168.1.3)
> >> >
> >> > AgentService do a web service call (eg:  curl -X GET
> >> > http://localhost:8080/axis2/services/AgentService/agent) to
> >> > AgentManagementService and get registered. Then AgentManagementService
> >> > stores the URL (eg:
> >> > http://192.168.1.3:8080/axis2/services/AgentService/) of
> >> > that particular request.
> >> >
> >> > When autoscaler API (implementing this is M3) wanted to spawn a new
> >> > instance
> >> > (JVM or EC2 or anything else), it should call AutoscalerService (eg:
> >> > curl
> >> > --data "instanceName=as" -X POST
> >> > http://192.168.1.2:8080/axis2/services/AutoscalerService/instance).
> Then
> >> > AutoscalerService decides which kind of instance to spawn.
> >> >
> >> > If AutoscalerService decides to spawn a JVM instance, it creates a new
> >> > JVMAdaptor instance. JVMAdaptor then calls (eg: curl -X GET
> >> > http://192.168.1.2:8080/axis2/services/AgentManagementService/agent)
> >> > AgentManagementService in order to pick an Agent.
> AgentManagementService
> >> > picks an Agent in a round robin manner and sends back that Agent's EPR
> >> > (http://192.168.1.3:8080/axis2/services/AgentService/) to JVMAdaptor.
> >> > Then
> >> > JVMAdaptor does a web service call to that particular AgentService and
> >> > asked
> >> > it to spawn the requested instance (instance is yet hard coded).
> >> >
> >> > Spawned instance then joins the cluster.
> >> >
> >> >
> >> > Current observations:
> >> >
> >> > Currently starting instance aspect is done.
> >> >
> >> > I've tested this using 2 machines, and starting instance works fine.
> >> >
> >> > It is observed that the spawned JVM instances get killed when you
> issue
> >> > 'ctrl+c' in the terminal where axis2 running. But when I killed
> >> > axis2server.sh process only, the new JAVA process wasn't get killed.
> To
> >> > avoid process get killing when issue ctrl+c, we might need to handle
> >> > SIGINT
> >> > [2]. Can't we be happy with the fact that it doesn't get killed after
> >> > killing axis2server.sh?
> >>
> >> JVMs (which were created) should live even if  you kill the agent.
> >>
> >
> > Yes, but the problem is how you kill! If you use kill -9 and kills Axis2
> > related process (Axis2 is where Agent Service is deployed), spawned JVM
> > instances aren't get killed.
> > Anyway will research a bit more, I understand that spawned instance
> should
> > never get killed, unless it is asked to!
> >
> >>
> >> >
> >> >
> >> > Work to be done:
> >> >
> >> > Terminating and finding instance aspects should be addressed.
> >>
> >> You have to keep track of which JVMs/VMs created by the autoscaler.
> >> Otherwise you will not be able to stop them when you want to scale
> >> down. I believe, this information should be stored/kept with
> >> "autoscaler service".
> >
> >
> > I have started to implement this part today! According to the design
> > 'Autoscaler Service' is only responsible for
> > deciding the type of instance it should be spawned. That is a JVM
> instance
> > or an EC2 instance or something else. Thus, it keeps track of
> > the type of instance spawned.
> >
> > It is JVM Adaptor which keeps track of instances spawned in each Agent.
>
> +1. It should be JVM adapter for JVM instances and EC2 adapter for EC2
> instance, etc.
>
> Shankar
>
>
> >
> > And it is respective Agent Service that kills an instance, upon a
> request!
> >
> >
> >>
> >>
> >> > The 'sad side' (when things go wrong) should be addressed.
> >> > AgentServices should know EPR of AgentManagementService (this is hard
> >> > coded
> >> > now). Should read from a config file?
> >>
> >> +1 fore reading from config file.
> >
> >
> > Great!
> >
> >>
> >>
> >>
> >> > JVMAdaptor should keep a map of Agent EPR to AgentService client, to
> >> > avoid
> >> > creating multiple clients to access the same Agent.
> >> > AgentService should keep a count of spawned instances and get itself
> >> > unregistered if it can't handle any new instances (threshold value
> >> > should be
> >> > decided). And when it feels (another threshold) that it can handle new
> >> > instances it should register again.
> >> > Autoscaler API should be designed.
> >> > Should port EC2 client to EC2Adaptor.
> >> > Should test the whole scenario.
> >> >
> >> >
> >> > I appreciate your comments/thoughts on above facts.
> >> >
> >> >
> >> > [1]
> >> >
> http://mail.wso2.org/mailarchive/architecture/2011-October/006414.html
> >> >
> >> > [2] http://www.cons.org/cracauer/sigint.html
> >> >
> >> >
> >> >
> >> > --
> >> >
> >> > Thanks & regards,
> >> > Nirmal
> >> >
> >> > Software Engineer- Platform Technologies Team, WSO2 Inc.
> >> > Mobile: +94715779733
> >> > Blog: http://nirmalfdo.blogspot.com/
> >>
> >>
> >>
> >> --
> >> S.Uthaiyashankar
> >> Senior Architect & Senior Manager
> >> WSO2 Inc.
> >> http://wso2.com/ - "lean . enterprise . middleware"
> >>
> >> Phone: +94 714897591
> >
> >
> >
> >
> > --
> >
> > Thanks & regards,
> > Nirmal
> >
> > Software Engineer- Platform Technologies Team, WSO2 Inc.
> > Mobile: +94715779733
> > Blog: http://nirmalfdo.blogspot.com/
>
>
>
> --
> S.Uthaiyashankar
> Senior Architect & Senior Manager
> WSO2 Inc.
> http://wso2.com/ - "lean . enterprise . middleware"
>
> Phone: +94 714897591
>



-- 

Thanks & regards,
Nirmal

Software Engineer- Platform Technologies Team, WSO2 Inc.
Mobile: +94715779733
Blog: http://nirmalfdo.blogspot.com/
_______________________________________________
Carbon-dev mailing list
Carbon-dev@wso2.org
http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev

Reply via email to