本地英文版地址: ../en/modules-network.html
默认情况下,Elasticsearch 只绑定到localhost
。
这足以运行本地开发服务器(如果在同一台计算机上启动多个节点,甚至可以运行开发集群),但你需要配置一些基本的网络设置,以便跨多个服务器运行真实的生产集群。
注意网络配置!
不要向公共互联网公开不受保护的节点。
-
network.host
-
该节点将绑定到此主机名或IP地址,并将此主机发布(广告)到集群中的其他节点。 接受IP地址、主机名、特殊值或这些值的任意组合的数组。 请注意,任何包含
:
的值(例如,IPv 6地址或其中一个特殊值)都必须加引号,因为:
是 YAML 中的一个特殊字符。0.0.0.0
是一个可接受的IP地址,并将绑定到所有网络接口。 值0
与值0.0.0.0
具有相同的效果。默认为
_local_
-
discovery.seed_hosts
-
为了加入集群,节点需要知道集群中至少几个其他节点的主机名或IP地址。 此设置提供此节点将尝试联系的地址的初始列表。 接受IP地址或主机名。 如果主机名查找解析到多个IP地址,则每个IP地址都将用于发现。 轮询 DNS--从每次查找的列表中返回不同的IP--可以用于发现;不存在的IP地址将抛出异常,并在下一轮 ping 时导致另一次 DNS 查找(受JVM DNS 缓存影响)。
默认为
["127.0.0.1", "[::1]"]
-
http.port
-
传入HTTP请求要绑定到的端口。接受单个值或范围。 如果指定了范围,节点将绑定到范围内的第一个可用的端口。
默认为
9200-9300
-
transport.port
-
为节点之间的通信绑定的端口。接受单个值或范围。 如果指定了范围,节点将绑定到范围内的第一个可用的端口。
默认为
9300-9400
以下几个特殊值可以传递给 network.host
:
-
_[networkInterface]_
-
网络接口的地址,比如
_en0_
. -
_local_
-
系统上的任何 回环(loopback) 地址,比如
127.0.0.1
-
_site_
-
系统上的任何 本地站点(site-local) 地址,比如
192.168.0.1
-
_global_
-
系统上任何 全局范围(globally-scoped) 的地址,比如
8.8.8.8
默认情况下,这些特殊值在 IPv4 和 IPv6 上都有效,但是你也可以使用:ipv4
或 :ipv6
说明符对此进行限制。
例如,_en0:ipv4_
将仅绑定到接口en0
的 ipv4 地址。
云上的发现 (Discovery in the Cloud)
在云中运行时,可以使用更多的特殊设置,不管安装的是 EC2 discovery plugin 还是 Google Compute Engine discovery plugin。
常用网络设置 (Commonly used network settings) 中介绍的network.host
设置是同时设置bind host和publish host的快捷方式。
在高级用例中,例如在代理服务器后面运行时,你可能需要将这些设置设置为不同的值:
-
network.bind_host
-
指定节点应该绑定到哪个(哪些)网络接口,以便监听传入的请求。
一个节点可以绑定到多个接口,例如两个网卡,或者一个 本地站点(site-local) 地址和一个本地地址。默认为
network.host
。 -
network.publish_host
-
发布主机是节点向集群中的其他节点发布的单一接口,以便这些节点可以连接到它。
目前,一个 Elasticsearch 节点可能会绑定到多个地址,但只发布一个。
如果未指定,则默认为
network.host
中的“最佳”地址,先按 IPv4/IPv6 堆栈优先级排序,然后按可达性排序。 如果你设置的network.host
会产生多个绑定地址,但仍依赖特定地址进行节点到节点的通信,则应该显式设置network.publish_host
。
上述两种设置都可以像network.host
一样进行配置,它们接受IP地址、主机名和特殊值。
任何使用 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 发送缓冲区的大小(用size 单位指定)。默认情况下不显式设置。
-
network.tcp.receive_buffer_size
- TCP 接收缓冲区的大小(用size 单位指定)。默认情况下不显式设置。
传输和HTTP协议 (Transport and HTTP protocols)
Elasticsearch 节点公开了继承上述设置的两种网络协议,但可以进一步独立配置:
- TCP Transport
- 由 Java 传输客户端 (Transport client) 用于集群中节点之间的通信。 参考 传输 (Transport)。
- HTTP
- 公开所有客户端使用的 JSON-over-HTTP 接口。参考 HTTP。