ElasticSearch之網路配置

jackieathome發表於2024-10-06

對官方文件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

相關文章