Elasticsearch upgrade order based on node roles - elasticsearch

I looked for this in many websites, including Elastic official documentation, without success.
I have one Elasticsearch cluster with:
3 Master nodes
4 Data nodes
4 Ingest nodes
2 Client nodes
I must perform a rolling upgrade (from 5.x to 5.x) but the official docs do not explain the order based on node roles.
Should I upgrade Master nodes at first? What next? Data nodes?
I mean, I need to know which is the best way to get the whole cluster upgraded.
Thanks,
Best regards

We had a similar situation and elastic recommended upgrading master first, followed by data and then client nodes.
It's worth checking if your 5.x version has an upgrade assistant available (You see that in Kibana).

Related

How to setup 2 nodes on elasticsearch?

Hello enthusiastic people.
I am a student trying to learn Elastic stack.
I have 1 node installed on my local machine. I have also successfully installed beats on my other local machine to get data and deliver it to my logstash.
My question is, what if I add another node, do I still need to install kibana and elasticsearch? Then connect it from my first node?
I just read a lot that a single node is prone to data loss.
Sorry for my noob question.
Your answer is very appreciated.
Thanks in advance.
Having a cluster with at least 3 nodes would be good to ensure data security and integrity.
A cluster can have one or more nodes.
An example scenario:
It will be easier for you to install with docker during the learning and development process. I recommend you follow the link below. This link explains how to set up an elasticsearch cluster with 3 nodes on docker.
Start a multi-node cluster with Docker Compose

When configuring Snapshot for an ElasticSearch cluster, do I do that to every node?

Sorry for what may be an obvious question. But I have a 3 node ElasticSearch cluster, and I want it to take a nightly snapshot that is sent to S3 for recovery. I have done this for my test cluster which is a single node. And I was starting to do it for my 3 node production cluster when I was left wondering if I have to configure the repository and snapshot on each node separately or can I just do it on one node via Kibana and then it will replicate that across the cluster? I have looked through the documentation but didn't see anything about this.
Thank you!
Yes, you need to configure it in every node.
First you need to install the repository-s3 plugin in every node, this is explained in the documentation.
After that, you also need to add the access and secret keys in the elasticsearch-keystore of every node. (documentation).
The rest of the configuration, creating the repository and setting the snapshots, are done through Kibana once.

Elasticsearch in production with kubernetes

I am working on product in which we are using elasticsearch for search. Our production setup is in K8S (1.7.7) and we are able to scale it pretty well. Only thing I am not sure about is whether we should be hosting elasticsearch in k8s (it can go on dedicated host as well using label selector nodes) or it is advisable to host elasticsearch on VM than docker.
Our data set size is 2-3 GB and would go further. But this is the benchmark we can consider.
And elasticsearch cluster I am planning to have ti is - 3 master (with 2 as eligible master), one client node, and one data node. We can scale datanode and client node as data increases.
Is anyone did this before? thanks in advance.
IMO the best resource for Elasticsearch on Kubernetes is https://github.com/pires/kubernetes-elasticsearch-cluster
Note that while there are official Docker containers, no official solution for orchestration is being provided at the moment. This is currently covered by the community only.
3 master (with 2 as eligible master)
This doesn't make much sense. You'll want 3 master eligible nodes with the setting discovery.zen.minimum_master_nodes: 2 and one of the 3 nodes will be the actual master.

Mixing Elasticsearch minor versions in cluster nodes and clients - supported or not?

Trying to find out about the details of using Elasticsearch Java clients with a different minor version than is used within the cluster, I find different partial answers, see right below.
My question is:
When running an Elasticsearch cluster with version x.y : is it supported (generally ok/ not recommended/ totally forbidden) to use a client with version x.z ? Is the answer different for node vs transport clients?
Thanks!
http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html :
"Please note that you are encouraged to use the same version on client and cluster sides. You may hit some incompatibility issues when mixing major versions."
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_talking_to_elasticsearch.html :
"The Java client must be from the same version of Elasticsearch as the nodes; otherwise, they may not be able to understand each other."
We're currently in that scenario, a 15 node cluster, 10 data nodes. One master and one data node are on 2.3.3, the rest on 2.3.2.
All the new indexes created since this partial upgrade have replicas which refuse to be assigned, effectively preventing us to finish the upgrade (cluster status is always yellow, but we're waiting the status to be back to green before continuing the rolling restart)
So yeah, I think they should have used a different wording here. Something like "DON'T DO IT", not "You maybe shouldn't do it"....

elasticsearch snapshot fails when nodes in a cluster run in different machines

we are using elasticsearch 1.1.1
We have a cluster with 3 nodes and all three nodes are in 3 different machines.
Accessing the cluster, performing index operations work fine.
But when we use snapshot feature to take the backup, it (backup) getting failed.
but if we have all three nodes on the same machine, the snapshot command works fine.
Did anybody face this issue.
I did not include the configuration details here, as the cluster and indexing operations work fine without any issues.
Thanks in advance.
For those who are looking for a solution, it is a requirement that we should use the NFS

Resources