Multi instance configuration


I am trying to setup multiple instances running on same physical box.
Among the multiple instances I would like to set 1 as master and others as data only.

I was planning to have the data nodes 1,2 listen on ports 9201 and 9202 respectively and always. I want to give the connections settings of data nodes only to the es clients.

I have the below config

http.port: 9200
transport.tcp.port: 9300 [ "", local ] 3s true [ "" ]

node.master: false true
node.master: true false
http.port: 9201
transport.tcp.port: 9301 [ "", local ] 3s true [ "" ]

node.master: false true
http.port: 9202
transport.tcp.port: 9302 [ "", local ] 3s true [ "" ]

What I see is with these settings for the data only nodes (cloud-2 and cloud-3), It fails to discover the master running on 9300. The cloud-3 instance seems to be pinging its own self. Same with cloud-2

If I comment out http.port and transport.tcp.port, the discovery seems to work, but the instances select first available ports in the range.

How can I set pre-defined ports for http and transport through yml as I am configuring these as connection variables in other ES clients.

[] [cloud-3] [1] sending to {cloud-3}{VJtxMqsxSYCCvTRDCjHxLQ}{}{}{rack_id=cloud, master=false}
[2016-06-02 13:26:09,514][TRACE][] [cloud-3] [1] received response from {cloud-3}{VJtxMqsxSYCCvTRDCjHxLQ}{}{}{rack_id=cloud, master=false}: [ping_response{node [{cloud-3}{VJtxMqsxSYCCvTRDCjHxLQ}{}{}{rack_id=cloud, master=false}], id[1], master [null], hasJoinedOnce [false], cluster_name[vagrant_low_profile]}, ping_response{node [{cloud-3}{VJtxMqsxSYCCvTRDCjHxLQ}{}{}{rack_id=cloud, master=false}], id[2], master [null], hasJoinedOnce [false], cluster_name[vagrant_low_profile]}]

I am using elasticsearch 2.3.1