The transport module is used for internal communication between nodes within the cluster. Each call that goes from one node to the other uses the transport module (for example, when an HTTP GET request is processed by one node, and should actually be processed by another node that holds the data).
The transport mechanism is completely asynchronous in nature, meaning that there is no blocking thread waiting for a response. The benefit of using asynchronous communication is first solving the C10k problem, as well as being the ideal solution for scatter (broadcast) / gather operations such as search in ElasticSearch.
The TCP transport is an implementation of the transport module using TCP. It allows for the following settings:
A bind port range. Defaults to
The port that other nodes in the cluster
should use when communicating with this node. Useful when a cluster node
is behind a proxy or firewall and the
The host address to bind the transport service to. Defaults to
The host address to publish for nodes in the cluster to connect to. Defaults to
Used to set the
The socket connect timeout setting (in
time setting format). Defaults to
It also uses the common network settings.
TCP Transport Profilesedit
Elasticsearch allows you to bind to multiple ports on different interfaces by the use of transport profiles. See this example configuration
transport.profiles.default.port: 9300-9400 transport.profiles.default.bind_host: 10.0.0.1 transport.profiles.client.port: 9500-9600 transport.profiles.client.bind_host: 192.168.0.1 transport.profiles.dmz.port: 9700-9800 transport.profiles.dmz.bind_host: 172.16.1.2
default profile is a special. It is used as fallback for any other profiles, if those do not have a specific configuration setting set.
Note that the default profile is how other nodes in the cluster will connect to this node usually. In the future this feature will allow to enable node-to-node communication via multiple interfaces.
The following parameters can be configured like that
port: The port to bind to
bind_host: The host to bind
publish_host: The host which is published in informational APIs
tcp_no_delay: Configures the
TCP_NO_DELAYoption for this socket
tcp_keep_alive: Configures the
SO_KEEPALIVEoption for this socket
reuse_address: Configures the
SO_REUSEADDRoption for this socket
tcp_send_buffer_size: Configures the send buffer size of the socket
tcp_receive_buffer_size: Configures the receive buffer size of the socket
This is a handy transport to use when running integration tests within
the JVM. It is automatically enabled when using
Added in 1.5.0.