Adding master nodes to Existing cluster

Hello All,

I have 14 node elasticsearch cluster in which all nodes are data,master,client. Now i want to have separate master nodes. How do i achieve this without causing splitbrain or down time. I can bring one node at one time down. Suggestions please.

Thanks,
Surya.

The reference manual includes comprehensive instructions on adding and removing master-eligible nodes and for repurposing existing nodes. You should add your new dedicated master nodes and then repurpose your existing nodes one-by-one.

Thank you so much. I would like to do
step 1: Add 3 master only nodes to the cluster
step 2: update each node other than master only node to be data only node(one node at one time).

Does this look good? @DavidTurner

Yes, sounds good to me.

I did same, on small level. I had five node cluster all data-master
I wanted one node as master only as it has low disk space and was using for something else as well.
this is what I did.

I ran following

PUT /_cluster/settings
{
   "transient" :{
   "cluster.routing.allocation.exclude._ip" : "<ip_of_nodewho is getting out>"
     }
}

if above does not work you can use name

PUT /_cluster/settings
{
   "transient" :{
   "cluster.routing.allocation.exclude._name" : "<name of node is getting out>"
     }
}

then once is is empty of all data. shut it down.
change elasticsearch.yml file and have this.
node.master: true
node.data: false

restarted node and now it is master only.

once all is done
I did this
PUT /_cluster/settings
{
"transient" :{
"cluster.routing.allocation.exclude._name" : ""
}
}

that makes routing enable.

Thanks @elasticforme .
I do not want to make existing nodes to be master. I will take them down and make data only node.
I am going to add additional 3 master only nodes.

thanks @DavidTurner