对官方文档Networking的阅读笔记。
ES集群中的节点,支持处理两类通信平面
- 集群内节点之间的通信,官方文档称之为transport layer。
- 集群外的通信,处理客户端下发的请求,比如数据的CRUD,检索等,官方文档称之为HTTP layer。
对于这两个平面公共的配置,配置参数可以使用network.*
。
针对transport layer的配置参数,可以使用transport.*
。
针对HTTP layer的配置参数,可以使用http.*
。
参数 | network | http | transport | remote_cluster | 说明 |
---|---|---|---|---|---|
host | network.host | http.host | transport.host | remote_cluster.host | 业务的监听地址。 |
bind_host | network.bind_host | http.bind_host | transport.bind_host | remote_cluster.bind_host | 默认值与host相同。 |
publish_host | network.publish_host | http.publish_host | transport.publish_host | remote_cluster.publish_host | 默认值与host相同。 |
publish_port | N/A | http.publish_port | transport.publish_port | remote_cluster.publish_port | |
port | N/A | http.port | transport.port | remote_cluster.port | 业务的监听端口。 |
tcp.keep_alive | network.tcp.keep_alive | http.tcp.keep_alive | transport.tcp.keep_alive | remote_cluster.tcp.keep_alive | TCP socket的SO_KEEPALIVE参数,默认值为true。 |
tcp.keep_idle | network.tcp.keep_idle | http.tcp.keep_idle | transport.tcp.keep_idle | remote_cluster.tcp.keep_idle | TCP socket的TCP_KEEPIDLE参数,默认值为-1。 |
tcp.keep_interval | network.tcp.keep_interval | http.tcp.keep_interval | transport.tcp.keep_interval | remote_cluster.tcp.keep_interval | TCP socket的TCP_KEEPINTVL参数,默认值为-1。 |
tcp.keep_count | network.tcp.keep_count | http.tcp.keep_count | transport.tcp.keep_count | remote_cluster.tcp.keep_count | TCP socket的TCP_KEEPCNT参数,默认值为-1。 |
tcp.no_delay | network.tcp.no_delay | http.tcp.no_delay | transport.tcp.no_delay | remote_cluster.tcp.no_delay | TCP socket的TCP_NODELAY参数,默认值为true。详细说明见wiki。 |
tcp.reuse_address | network.tcp.reuse_address | http.tcp.reuse_address | transport.tcp.reuse_address | remote_cluster.tcp.reuse_address | TCP socket的SO_REUSEADDR参数,Windows平台的默认值为false,其它平台的默认值为true。 |
tcp.send_buffer_size | network.tcp.send_buffer_size | http.tcp.send_buffer_size | transport.tcp.send_buffer_size | remote_cluster.tcp.send_buffer_size | TCP的发送缓冲区的大小,默认值为-1,表示使用系统的默认值。 |
tcp.receive_buffer_size | network.tcp.receive_buffer_size | http.tcp.receive_buffer_size | transport.tcp.receive_buffer_size | remote_cluster.tcp.receive_buffer_size | TCP的接收缓冲区的大小,默认值为-1,表示使用系统的默认值。 |
compression | N/A | http.compression | transport.compression | N/A | 压缩。 |
transport独有的参数:
- transport.connect_timeout
- transport.compress
- transport.compression_scheme
压缩算法,可选值包括deflate或者lz4,默认值为lz4。 - transport.ping_schedule
指示发送业务心跳的周期,默认值为-1,表示不发送业务心跳。
http独有的参数:
-
http.max_content_length
HTTP请求消息体的长度的最大值,默认值为100MB。 -
http.max_initial_line_length
HTTP请求中,URL的长度的最大值,默认值为4KB。 -
http.max_header_size
HTTP请求中,HTTP头部的总长度的最大值,默认值为16KB。 -
http.compression
使用HTTPS时,默认取值为false,其它情况下取值为true。 -
http.compression_level
压缩级别,取值范围为[1, 9],默认值为3。 -
http.detailed_errors.enabled
指定是否允许在HTTP响应消息中暴露详细的错误提示信息,默认值为true。 -
http.pipelining.max_events
HTTP请求消息队列的长度,默认值为10000。 -
http.max_warning_header_count
HTTP响应消息中允许包含的提示信息头部的数量,默认值为-1,即不限制。 -
http.max_warning_header_size
HTTP响应消息中允许包含的提示信息头部的长度,默认值为-1,即不限制。 -
http.client_stats.enabled
指示是否记录HTTP通信过程中的统计数据,默认值为true。 -
http.client_stats.closed_channels.max_count
默认值为10000。 -
http.client_stats.closed_channels.max_age
关闭HTTP通道之后,上传统计数据的时延值,默认值为5m。
http协议CORS特性相关的参数:
- http.cors.enabled
是否启用对CORS的支持。 - http.cors.allow-origin
- http.cors.max-age
指示缓存HTTP方法OPTIONS
的返回值的时长,即超时时间,默认值为1728000,即20天。 - http.cors.allow-methods
HTTP请求中允许使用的方法,默认值包括:OPTIONS
HEAD
GET
POST
PUT
DELETE
- http.cors.allow-headers
允许在HTTP请求消息中使用的头部,默认值包括:X-Requested-With
Content-Type
Content-Length
Authorization
Accept
User-Agent
X-Elastic-Client-Meta
- http.cors.expose-headers
指定在HTTP响应消息中返回的头部,默认值为X-elastic-product
。 - http.cors.allow-credentials
决定头部Access-Control-Allow-Credentials
是否返回,默认值为false。
remote_cluster_server独有的参数:
- remote_cluster_server.enabled
指示是否启用远端集群,默认值为false。
网络通信的线程模型,这部分内容在处理通信相关的故障时非常意义,后续有空时详细阅读。
导出ES进程的栈时,使用关键字transport_worker
来检索,可以看到相关的线程的栈。
参考资料
- Nodes hot threads API