NetWork Setting(网络配置)

Elasticsearch默认绑定到localhost(本地主机)。 这足够满足你运行一个本地开发服务器(甚至是在同一台计算机上启动多个节点的开发集群),但是您需要配置一些 basic network settings(基本的网络设置),才能跨多台服务器运行真正的生产集群 。

配置网络时请注意

不要将裸奔节点发布到互联网上 

Commonly Used Network Settings(常用的网络配置)

network.host

配置节点绑定到该主机名或IP地址,并将该主机发布(advertise)给群集中的其他节点。 配置值支持IP地址,主机名,特殊值或这些组合的数组。默认为_local_

discovery.zen.ping.unicast.hosts

为了加入集群,节点需要知道集群中至少一些其他节点的主机名或IP地址。 此设置提供此节点尝试联系的其他节点的初始列表。 接受IP地址或主机名(域名)。 如果主机名(域名)查找解析为多个IP地址,则每个IP地址将被用于发现。 循环DNS - 从每个查找列表中返回不同的IP - 可以用于发现; 不存在的IP地址会抛出异常,并在下一轮的ping(进行JVM DNS缓存)下进行另一个DNS查找

默认配置为 ["127.0.0.1", "[::1]"].

http.port

配置一个监听http请求的端口。 接受单个值或范围。 如果指定了范围,则该节点将绑定到该范围中的第一个可用端口。默认为 9200-9300.(如9200未被占用则默认为9200)

transport.tcp.port

配置一个监听节点间通信使用的端口。接受单个值或范围。 如果指定了范围,则该节点将绑定到该范围中的第一个可用端口。默认为 9300-9400.(如9300未被占用则默认为9300)

Special values for network.host(特殊配置值说明)

以下特殊值将可能会配置给network.host:

| _[networkInterface]_ | 网络接口的地址,例如:en0 | | _local_ | 本地回环地址,例如:127.0.0.1. | | _site_ | 系统任意站点地址,例如:192.168.0.1. | | _global_ | 系统上的任何全局范围的地址, 例如 8.8.8.8. |

IPv4 vs IPv6

默认情况下,这些特殊值可以在IPv4和IPv6两种情况下工作,但也可以通过使用ipv6指定符来限制此值。 例如,_en0:ipv4_只会绑定到接口en0的IPv4地址。

基于云系统的网络发现

使用 EC2 discovery plugin 或安装了 Google Compute Engine discovery plugin 在云端运行时,还可以使用更多特殊设置。

Advanced network settings(高级网络配置)

常用网络设置中介绍的network.host设置是同时设置绑定主机和发布主机的快捷方式。在高级用例中,例如在代理服务器后运行时,可能需要将这些设置设置为不同的值: network.bind_hostThis指定节点应绑定到哪个网络接口,以便侦听传入的请求。节点可以绑定到多个接口,例如两个网卡或站点本地地址和本地地址。默认为network.host.network.publish_host发布主机是节点向群集中其他节点通告的单一接口,以便这些节点可以连接到该接口。目前,弹性搜索节点可能绑定到多个地址,但只能发布一个。如果未指定,则默认为network.host中的“最佳”地址,按IPv4 / IPv6堆栈优先级排序,然后按可达性排序。 上述两种设置都可以像network.host一样配置 - 它们接受IP地址,主机名和特殊值。

Advanced TCP Settings(高级TCP配置)

任何使用TCP的组件(如HTTP和传输模块)共享以下设置:

| network.tcp.no_delay | 启用或停用TCP no delay 默认为true; | | network.tcp.keep_alive | 启用或停用 TCP keep alive. 默认为true; | | network.tcp.reuse_address | 是否应该重复使用地址? 在非Windows机器上默认为true。 | | network.tcp.send_buffer_size | TCP发送缓冲区的大小。 默认情况下未设置。 | | network.tcp.receive_buffer_size | TCP接受缓冲区的大小。 默认情况下未设置。 |

Transport and HTTP protocols(节点和HTTP协议)

Elasticsearch节点公开了继承上述设置的两个网络协议,但可以独立进一步配置: TCP传输用于通过Java Transport客户端和Tribe节点在集群中的节点之间进行通信。 有关更多信息,请参阅传输模块.HTTPExpose除Java客户端之外的所有客户端使用的JSON-over-HTTP接口。 有关详细信息,请参阅HTTP模块。