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

**URL:** <https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000>\
**Category:** Elasticsearch\
**Created:** [October 14, 2017, 2:45pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000 "2017-10-14T14:45:10Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![chenjinyuan87](https://avatars.discourse-cdn.com/v4/letter/c/bb73d2/32.png) [@chenjinyuan87](https://discuss.elastic.co/u/chenjinyuan87)\
**Post date:** [October 14, 2017, 2:45pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/1 "2017-10-14T14:45:10Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [October 14, 2017, 2:46pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/2 "2017-10-14T14:46:13Z")

</div>

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

> [@chenjinyuan87](#):
>
> leaving the services running old version clients?

What services?

---

<div class="post-metadata">

**Author:** ![chenjinyuan87](https://avatars.discourse-cdn.com/v4/letter/c/bb73d2/32.png) [@chenjinyuan87](https://discuss.elastic.co/u/chenjinyuan87)\
**Post date:** [October 14, 2017, 5:22pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/3 "2017-10-14T17:22:43Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![thiago](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/thiago/32/32096_2.png) [@thiago](https://discuss.elastic.co/u/thiago)\
**Post date:** [October 14, 2017, 7:43pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/4 "2017-10-14T19:43:17Z")

</div>

> [@chenjinyuan87](#):
>
> rolling restart?
> 
> Is it means to upgrade one by one?

Yes, this is a known procedure named [Rolling Restart](https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html).

> [@chenjinyuan87](#):
>
> I thought i have to stop all the nodes at the same time to upgrade es.

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.

> [@chenjinyuan87](#):
>
> 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.

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

---

<div class="post-metadata">

**Author:** ![chenjinyuan87](https://avatars.discourse-cdn.com/v4/letter/c/bb73d2/32.png) [@chenjinyuan87](https://discuss.elastic.co/u/chenjinyuan87)\
**Post date:** [October 15, 2017, 4:19pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/5 "2017-10-15T16:19:29Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [October 15, 2017, 4:40pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/6 "2017-10-15T16:40:38Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![chenjinyuan87](https://avatars.discourse-cdn.com/v4/letter/c/bb73d2/32.png) [@chenjinyuan87](https://discuss.elastic.co/u/chenjinyuan87)\
**Post date:** [October 15, 2017, 4:48pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/7 "2017-10-15T16:48:27Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [October 15, 2017, 5:01pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/8 "2017-10-15T17:01:56Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![chenjinyuan87](https://avatars.discourse-cdn.com/v4/letter/c/bb73d2/32.png) [@chenjinyuan87](https://discuss.elastic.co/u/chenjinyuan87)\
**Post date:** [October 15, 2017, 5:17pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/9 "2017-10-15T17:17:45Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 12, 2017, 5:18pm UTC](https://discuss.elastic.co/t/how-to-design-an-architecture-which-can-upgrade-es-on-hot/104000/10 "2017-11-12T17:18:01Z")

</div>

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