You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by luqmanahmad <lu...@gmail.com> on 2017/08/04 14:31:12 UTC

Platform updates

Hi there,

Lets say we have a distributed caching system which needs to be up 99.9%
time unless we upgrade the version of ignite. Now let say we have found some
bugs and needs to be updated on the production cluster without any downtime. 

How do we approach this scenario in ignite ? If we have a cluster, let say 2
nodes, can we stop one node -
 update the jars and repeat the same process on the other node without any
downtime ? I might not be thinking straight over here but would be
appreciated any help.

Thanks,
Luqman 



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Platform-updates-tp15998.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Platform updates

Posted by luqmanahmad <lu...@gmail.com>.
Hi Val,

Indeed, it does make sense. Thanks for all your help.

- Luqman



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Platform-updates-tp15998p16074.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Platform updates

Posted by vkulichenko <va...@gmail.com>.
Hi Luqman,

I meant the service deployment. Most likely, you will do this in init()
method - just call Class.forName() and create the instance of the class.

Makes sense?

-Val



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Platform-updates-tp15998p16069.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Platform updates

Posted by luqmanahmad <lu...@gmail.com>.
Thanks Val, that's much more similar to what I was looking for.

With respect to [1] when you say "get class to create instance during
deployment" do you mean during the server startup time ? 

[1] If a change is in service, then there is no built in mechanism for now.
But you can create a wrapper that will know class name of particular service
implementation and get class to create instance during deployment. When
service implementation change, you can use rolling upgrade technique. 



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Platform-updates-tp15998p16019.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Platform updates

Posted by vkulichenko <va...@gmail.com>.
Hi Luqman,

It depends on what change you do exactly.

If a change is in data model, then it's best not to deploy these classes on
server nodes at all and take advantage of binary object. In this case you
don't even need to restart nodes, just start using new schema and it will be
picked up transparently.

If a change is in a compute task, you can use peer class loading [1] or
dynamic task deployment [2]. Again, no need to restart classes.

If a change is in service, then there is no built in mechanism for now. But
you can create a wrapper that will know class name of particular service
implementation and get class to create instance during deployment. When
service implementation change, you can use rolling upgrade technique.

[1] https://apacheignite.readme.io/docs/zero-deployment
[2] https://apacheignite.readme.io/docs/deployment-spi

-Val



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Platform-updates-tp15998p16012.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Platform updates

Posted by luqmanahmad <lu...@gmail.com>.
Thanks Christos, it is for the application code. For upgrading the ignite
version we can schedule the downtime that's why 99.9% :)



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Platform-updates-tp15998p16001.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Platform updates

Posted by Christos Erotocritou <ch...@gridgain.com>.
Luqman, do you want to update the application or the actual Ignite version?

If it's your application Kara then as long as you can manage multiple versions of your app for a phased upgrade then sure. But if it's for Ignite then this is not possible to have 2 different version running in the same cluster. You can do that with GridGain enterprise version though. 

Cheers,
C  

> On 4 Aug 2017, at 15:31, luqmanahmad <lu...@gmail.com> wrote:
> 
> Hi there,
> 
> Lets say we have a distributed caching system which needs to be up 99.9%
> time unless we upgrade the version of ignite. Now let say we have found some
> bugs and needs to be updated on the production cluster without any downtime. 
> 
> How do we approach this scenario in ignite ? If we have a cluster, let say 2
> nodes, can we stop one node -
> update the jars and repeat the same process on the other node without any
> downtime ? I might not be thinking straight over here but would be
> appreciated any help.
> 
> Thanks,
> Luqman 
> 
> 
> 
> --
> View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Platform-updates-tp15998.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.