How to design an architecture which can upgrade es on hot?

We have more than 10 services who use es in different ways.
So each service connect to the cluster themselves.

That is, if i want to upgrade es to 6.0, we need to upgrade and test all the services at the same time, fully shutdown the cluster, deploy the new services, start the whole cluster and start the upgraded services.

This work seems so complex, and we can not make sure all the thing is right when upgrading.

Is there any other choice for us, so that we can upgrade es first, leaving the services running old version clients?

You can upgrade from 5.6.X to 6.0.X via a rolling restart.

What services?

rolling restart?
Is it means to upgrade one by one?
I thought i have to stop all the nodes at the same time to upgrade es.

Some services developed by our team which use elasticsearch client 5.
It's hard for us to upgrade all of them at the same time.

Yes, this is a known procedure named Rolling Restart.

This is also another way, which is known as Full Cluster Restart. That is the procedure generally required for upgrading between major Elasticsearch versions, but specifically with 5.6.x we could make it possible to do a rolling upgrade to 6.x and a full cluster restart is not really necessary.

You need to check the Breaking Changes when 6.x is fully released.

Thanks.

I have a further question:

In case my cluster has 5 nodes running 6.x, and the other 5 running 5.6.
Can a 5.6 client connect to this cluster and all the functionalities work correctly?

Additionally, what happened if i use 5.0 client to connect to 5.6 cluster? or even a cluster with half 6.x and half 5.6.

These questions seems strange, if it's not clear, i will test them myself.

Thanks again.

If you are using a REST client it should be ok.
If you are using the Java Transport Client then you should have the same versions on both end.
The Java High Level Rest client 5 is compatible with cluster running 5.
The Java low level rest client should work from 2.x to 6.x at least.

Depends on the client you are thinking of. Which one is it?

We use the java transport client.
So if i start a rolling restart, all the transport clients will be disconnected from the cluster?

The transport client will be deprecated.

You need to try but may be a client 6.0 can play with a 5.6 cluster. I did not try.

Thanks.
We will upgrade to the high level rest client in the future.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.