Coordinating node


I need help/advise to build my elasticsearch cluster with a coordinating node, I have the following

Server A - MasterData Node soc-stage es-serverA /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
transport.tcp.port: 9300 10.XX.XX.1
node.master: true true

Server B - MasterData Node soc-stage es-serverB /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
transport.tcp.port: 9300 10.XX.XX.2
node.master: true true

ServerC - Coordinating Node soc-stage es-coordinate-node /var/lib/elasticsearch
path.logs: /var/log/elasticsearch 10.XX.XX.3
transport.tcp.port: 9300
http.port: 9200 localhost
node.master: false false
node.ingest: false

In the Server C (coorinatind node) Kibana is also installed.

The problem is with the coordinating node, it detects one server when I use curl to get the index list, I mean I'm only receiving the indexes from onse server, and the idea is to get all the indexes list from the two servers.

Is it posible to do it?


You have three master-eligible nodes so you should set discovery.zen.minimum_master_nodes: 2 on every node.

I'm confused, I think I have two master-eligible nodes, or Should coordinating-node work as master-eligible node too?
The problem if I set the discovery.zen.minimum_master_nodes: 2 in all my nodes, I will have indexes in all the nodes, and the purpose of mi project is, indexes from server A should be only there and indexes from server B should be only there. I mean indexes from server A should not be in the server B and indexes from server B should not be in server A.

Apologies, I miscounted. You have two master-eligible nodes. You still must set discovery.zen.minimum_master_nodes: 2, because the formula is (master_eligible_nodes / 2) + 1

I think you are perhaps looking for shard allocation filtering. The setup you describe will form two separate clusters and the coordinating node will not be able to join both.

I don't understand the shard allocation filtering, is there another way to perform the configuration to my proyect?

It's not really clear what you're trying to achieve. I am, however, certain that you must set discovery.zen.minimum_master_nodes: 2 for this cluster to form correctly. If you do not, it will sometimes work but will eventually lose your data. You also need to configure so that each node can find the other ones.

You said that you want to isolate some indices on es-serverA and others on es-serverB. You can do this with shard allocation filtering by setting index.routing.allocation.require._name: "es-serverA" on the indices that should only live on es-serverA, and similarly for the ones that should only live on es-serverB.

I do not think you actually want to do this, because if one or other server were to fail then you would lose all the data on that server. Elasticsearch automatically replicates all its data so that, by default, it has two copies of every index on different nodes. It also makes sure that all data is accessible on every node so you don't need to worry about where the data actually is stored.

Can you explain why you want to avoid replication and to isolate the indices as you describe?

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