# NetWork Setting(网络配置)

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-network.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-network.html)

译文链接 : [NetWork Setting(网络配置)](/pages/viewpage.action?pageId=10027576)

贡献者 : [赵芳城](/display/~zhaofangcheng)，[ApacheCN](/display/~apachecn)，[Apache中文网](/display/~apachechina)

  Elasticsearch默认绑定到localhost(本地主机)。 这足够满足你运行一个本地开发服务器（甚至是在同一台计算机上启动多个节点的开发集群），但是您需要配置一些 [basic network settings](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-network.html#common-network-settings "Commonly Used Network Settingsedit")(基本的网络设置)，才能跨多台服务器运行真正的生产集群 。

配置网络时请注意

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

## 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](https://en.wikipedia.org/wiki/Nagle%27s_algorithm) 默认为true； |
| `network.tcp.keep_alive` | 启用或停用 [TCP keep alive](https://en.wikipedia.org/wiki/Keepalive). 默认为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模块。