原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/modules-network.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../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的特殊值

以下几个特殊值可以传递给 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 vs IPv6

默认情况下,这些特殊值在 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 hostpublish 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 设置

任何使用 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