On Mon, Oct 6, 2014 at 2:45 PM, Imesh Gunaratne <im...@apache.org> wrote:

> Hi Reka,
>
> I have a small concern on using the term "kill" in this scenario, I think
> it would be much more elegant if we call it something like "terminate".
> WDYT?
>

+1 for terminate.


>
> Thanks
>
> On Mon, Oct 6, 2014 at 11:44 AM, Reka Thirunavukkarasu <r...@wso2.com>
> wrote:
>
>> Hi all,
>>
>> I have implemented the dependency tree as mentioned in my mail earlier.
>> It will return the immediate children for the start able dependencies.
>>
>> FYI: a composite application has  postgresGroup, php, mysqlGroup, app
>> server and esb as it's immediate children and their start up order is as
>> mentioned in the mail earlier.
>>
>> "startupOrders": [
>> “postgresGroup, php",
>> "sqlGroup, tomcat",
>> "tomcat, apimanager",
>> "tomcat, esb”
>> ]
>>
>> So, if we look at the kill behaviour of this composite Application, it
>> will be like below:
>>
>> *kill-none* : none of them will be returned
>>
>> *kill-all*: all the elements in that dependency tree will be returned
>>     For eg: if something happened to postgresGroup, then all the children
>> of dependency tree would be returned as php, mysqlGroup, app server and esb
>> will be get killed.
>>
>> *kill-dependent*: all the children of that particular node in the
>> dependency tree will be returned.
>>     For eg: If something happened to mysqlGroup, then subsequently
>> tomcat, app server and esb would be get killed.
>>
>> Question: in case when we get more than one dependencies to be killed,
>> can we kill all of them in parallel or do we have to wait until it's
>> dependent cluster/group got killed?
>>
>> Thanks,
>> Reka
>>
>> On Thu, Oct 2, 2014 at 5:58 PM, Reka Thirunavukkarasu <r...@wso2.com>
>> wrote:
>>
>>> Hi Martin,
>>>
>>> On Wed, Oct 1, 2014 at 11:03 PM, Martin Eppel (meppel) <mep...@cisco.com
>>> > wrote:
>>>
>>>>  Hi Reka,
>>>>
>>>>
>>>>
>>>> Are you suggesting to replace the current startupOrder definition with
>>>> the one mentioned below ?
>>>>
>>>>
>>>>
>>>> "startupOrder" : [
>>>>
>>>>          {
>>>>
>>>>             "start":"aa",
>>>>
>>>>             "after":"bb"
>>>>
>>>>          }
>>>>
>>>>          ]
>>>>
>>>>
>>>>
>>>> Replaced with
>>>>
>>>>
>>>>
>>>> "startupOrders": [
>>>>
>>>>           "mypostgresGroup, myphp",
>>>>
>>>>           "mysqlGroup, mytomcat",
>>>>
>>>>           "mytomcat, myapimanager",
>>>>
>>>>           "mytomcat, myesb"
>>>>
>>>>       ]
>>>>
>>>>
>>>>
>>>> I have a couple of questions,
>>>>
>>>>
>>>>
>>>> 1.      If we use the cartridge alias and the group alias in the
>>>> group  / application dependency definition how will it work when we auto
>>>> scale groups ?  My current  understanding is that to get group scaling to
>>>> work we would need 2 parameters – group name (==group.name) and group
>>>> instance id (== group.alias), one static and one dynamic. So I would think
>>>> we’ll have to define the application dependencies and group dependencies
>>>> based on the name and not the alias, but, during run time we have to
>>>> calculate the dependencies based on the alias.
>>>>
>>>> I think is important to make the distinction between group type (or
>>>> name,) and group instance Id, without it we won’t be able to implement
>>>> group scaling, wdyt ?
>>>>
>>> Thanks for pointing this out..Yah..As you have mentioned, if we are to
>>> scale the groups by creating new groups, then we will be unable to use the
>>> groups alias in place of startuporders. But stratos is tightly coupled with
>>> subscription to cluster as one to one mapping and also, load balancer uses
>>> one to one mapping between cluster and hostname. So, if we are to bring up
>>> new clusters/groups, then things might get complicated in stratos. As i
>>> explained in the [part-1] discussion, we thought of achieving scale by
>>> group member and scale by group using constructing the deployment policy in
>>> a more advanced manner. I will start a separate thread on that. According
>>> to all of our opinion, we can decide on how to follow that up.
>>>
>>>> IMHO the startupOrders in composite application and group definitions
>>>> (json ) should look like
>>>>
>>>> "startupOrders": [
>>>> “postgresGroup, php",
>>>> "sqlGroup, tomcat",
>>>> "tomcat, apimanager",
>>>> "tomcat, esb”
>>>> ]
>>>>
>>>> while the runtime representation of the logical relationship model for
>>>> each group or cartridge should use the corresponding aliases  (or instance
>>>> Id) so the monitor will reference the aliases (or instance Ids) while the
>>>> json application / group definition will reference the group name (or type)
>>>> and cartridge type to define the dependencies, WDYT ?
>>>>
>>>>  2.      If for example a cartridge has multiple dependencies we would
>>>> just add another line to the the startupOrders :
>>>>
>>>>                e.g.  postgresGroup depends on php and abc would be
>>>> represented by:
>>>>             "startupOrders": [
>>>>                  "postgresGroup, php",
>>>>                   "postgresGroup, “abc”
>>>>                    ….
>>>>               ]
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Otherwise I think the proposal looks good,  +1
>>>>
>>>
>>> Thanks,
>>> Reka
>>>
>>>>
>>>>
>>>> Thanks
>>>>
>>>>
>>>>
>>>> Martin
>>>>
>>>>
>>>>
>>>> *From:* Reka Thirunavukkarasu [mailto:r...@wso2.com]
>>>> *Sent:* Wednesday, October 01, 2014 5:58 AM
>>>> *To:* dev
>>>> *Cc:* Lakmal Warusawithana; Isuru Haththotuwa; Martin Eppel (meppel);
>>>> Udara Liyanage
>>>> *Subject:* [Grouping][Part-2] Composite Application Dependency Tree
>>>> building based in Autoscaler
>>>>
>>>>
>>>>
>>>> Hi
>>>>
>>>>
>>>>
>>>> As you aware, in the composite application we can define the depencies
>>>> between groups/cartridges. Autoscaler's responsible is to parse this
>>>> dependencies and build up a logical relationship model in order to handle
>>>> the dependency information among the child nodes. As we have the
>>>> hierarchical monitors in autoscaler, i propose to have dependencies
>>>> information in each monitor that they aware of (the immediate child only).
>>>> In that monitor, we need to identify the group/cartridge which can be
>>>> started in parallel. So that a monitor can look at it's dependency and
>>>> control it's immediate children based on that. Once all the children are
>>>> active, it can pass the control to it's parent. For Eg:
>>>>
>>>>
>>>>
>>>> If we take the top level in Composite application which has mysqlGroup,
>>>> postgresGroup, php, tomcat, apimanager and esb. If they have an alias
>>>> saying my + cartridge/groupName then we can define the dependency
>>>> information as follows:
>>>>
>>>>             - myPhp depends on myPostgresGroup (means postgresGroup
>>>> should be started before php)
>>>>
>>>>             - myTomcat depends on myMysqlGroup
>>>>
>>>>             - myApiManager depends on myTomcat
>>>>
>>>>             - myEsb depends on myTomcat
>>>>
>>>>
>>>>
>>>> Like wise, groups will define their own dependency as well.
>>>>
>>>>
>>>>
>>>> In that way, we need to represent these dependency information as part
>>>> of Composite Application definition/GroupDefinition. In order to represent
>>>> this dependency information given above for Composite Application, i would
>>>> suggest to have the following in Composite Application definition.
>>>>
>>>>
>>>>
>>>>  "startupOrders": [
>>>>
>>>>           "mypostgresGroup, myphp",
>>>>
>>>>           "mysqlGroup, mytomcat",
>>>>
>>>>           "mytomcat, myapimanager",
>>>>
>>>>           "mytomcat, myesb"
>>>>
>>>>       ]
>>>>
>>>>
>>>>
>>>> You can use the same format in GroupDefinition to define dependencies
>>>> in a group.
>>>>
>>>>
>>>>
>>>> As per the example, autoscaler will build a dependency tree for
>>>> ApplicationMonitor as below in order to identify the parallel and dependent
>>>> ones. So that Autoscaler will start up same level children monitors as in
>>>> parallel.
>>>>
>>>>
>>>>
>>>>
>>>> ​
>>>>
>>>> As above, ApplicationMonitor will start GroupMonitors of
>>>> myPostgresGroup and myMysqlGroup in parallel. Once postgres becomes active,
>>>> ApplicationMonitor will start ClusterMonitor for myPhp. Once
>>>> myPostgresGroup becomes active, ApplicationMonitor will start the immediate
>>>> child myTomcat. Once myTomcat becomes active, ApplicationMonitor will start
>>>> the myAppServer and myEsb in parallel. This will be applicable for
>>>> GroupMonitors as well. They can look at their own dependency tree and will
>>>> start their children.
>>>>
>>>>
>>>>
>>>> Please share your suggestions on the above model to handle the
>>>> Dependency information of Composite Application in autoscaler.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> Reka
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Reka Thirunavukkarasu
>>>> Senior Software Engineer,
>>>> WSO2, Inc.:http://wso2.com,
>>>>
>>>> Mobile: +94776442007
>>>>
>>>>
>>>>
>>>> ​
>>>>
>>>
>>>
>>>
>>> --
>>> Reka Thirunavukkarasu
>>> Senior Software Engineer,
>>> WSO2, Inc.:http://wso2.com,
>>> Mobile: +94776442007
>>>
>>>
>>>
>>
>>
>> --
>> Reka Thirunavukkarasu
>> Senior Software Engineer,
>> WSO2, Inc.:http://wso2.com,
>> Mobile: +94776442007
>>
>>
>>
>
>
> --
> Imesh Gunaratne
>
> Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>



-- 
Lakmal Warusawithana
Vice President, Apache Stratos
Director - Cloud Architecture; WSO2 Inc.
Mobile : +94714289692
Blog : http://lakmalsview.blogspot.com/

Reply via email to