Client node problems


#1

I am looking to restructure my ES architecture and I would like to have something like:
MACHINE 1 (Coordinator - NO DATA)
/
MACHINE 2 (50% DATA) MACHINE 3 (50% DATA)

I already create a client node with the following configuration:
cluster.name: myCluster
node.name: myClient
node.master: false
node.data: false
discovery.zen.ping.unicast.hosts: ["MACHINE2":9200", "MACHINE3:9200"]
discovery.zen.fd.ping_timeout: 30s
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.multicast.enabled: false

and the other two machines (node.master : true) :
cluster.name: myCluster
node.name: n2
network.host: MACHINE2 or MACHINE3
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["MACHINE2":9200", "MACHINE3:9200"]
discovery.zen.fd.ping_timeout: 30s
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.multicast.enabled: false
http.cors.enabled: true
http.cors.allow-origin: "*"

But now my client node says " cluster health : not connected"

Do you have any tutorial in order to get a configuration like I explained before? Thanks I would apreciate it


(Christoph) #2

Hi,

several question come to my mind:

  • why do you want a "client only" node as opposed to having three nodes that can all be master/data? In your scenario, when one node goes down you won't have enough master-eligible nodes in your cluster (see the details in Zen Discovery description)
  • any reason why the unicast.hosts port is 9200 in your example? That port is usually the default for the http.port setting (the one the REST api uses). Internal communication by default uses port 9300)
  • I think the machines all need to see each other, so Machine2 and Machine3 should also have Machine1 in their configuration

Regarding references, there is a general guide how to set up things up for production in the Elastic Search Guide available online. Other than that most tutorial I found are somewhat specific to the platform you are running on, so I'm afraid there's no single go-to document at this point.


#3

I only have two powerful servers and I want to share the data by 50% and 50% . How can I do that?
If I have two master/data they will share the data by 50% (load balancer)?


(Christoph) #4

You could have the third machine be a third master eligible node by only using node.master: true. Unless its a really small machine that should work (master nodes can usually be quite "light" compared to your data nodes. Maybe a few gb of RAM, moderate CPU, normal disks, etc.). This way you have the recommended number or master nodes for a small cluster.


#5

I have two powerful machines (as I said before) with 32gb ram and a lot of hard disk (i dont remember right now) and I could have an small machine with few ram about 8gb ram and 100gb hard disk but I dont really want to save data in the small machine because I will manage millions of data per day.

Please, could you give a recommendation?
I would like to know if I need a master node or two master nodes, client node, etc for every machine.

Thanks a lot


(Magnus Bäck) #6

If you want a cluster that's still operational if one of the two data nodes shuts down you need three master-eligible nodes (node.master: true). If one of the nodes is too small to harbor data that's fine, just set node.data: false for it.

On the other hand, having master-eligible nodes that store data or are client nodes carries a certain risk since a master node that runs low on memory can misbehave and even bring the whole cluster down.

In your case I'd make all nodes master-eligible.


(system) #7