【Elasticsearch管理】網絡配置

文章目錄

  • HTTP
    • 高級網絡設置
    • 高級TCP設置
  • Transport
    • TCP傳輸概要文件
    • Transport跟蹤
  • 線程池
    • fixed線程池
    • fixed_auto_queue_size
    • scaling
    • 處理器設置

HTTP

Elasticsearch只在默認情況下綁定到本地主機。對于運行本地開發服務器(如果在同一臺機器上啟動多個節點,甚至可以運行開發集群)來說,這已經足夠了,但是為了跨多個服務器運行實際的生產集群,將需要配置一些基本的網絡設置。

永遠不要將未受保護的節點暴露給公共internet。

是否綁定專屬IP是分辨是否是開發模式和生產模式的標準。

network.host 節點將綁定到此主機名或IP地址,并將此主機發布(廣告)給集群中的其他節點。
接受IP地址、主機名、特殊值或任意組合的數組。
注意,任何包含:的值(例如,一個IPv6地址或包含一個特殊值)必須用引號括起來,因為:在YAML中是一個特殊字符。0.0.0.0是一個可接受的IP地址,它將綁定到所有網絡接口。值0與值0.0.0.0具有相同的效果。
默認 _local_.
discovery.zen.ping.unicast.hosts 為了加入一個集群,節點需要知道集群中至少一些其他節點的主機名或IP地址。此設置提供此節點將嘗試聯系的其他節點的初始列表。接受IP地址或主機名。
如果主機名查找解析為多個IP地址,那么將使用每個IP地址進行發現。
循環DNS——在每次查找時從列表中返回不同的IP——可以用于發現;
不存在的IP地址將拋出異常,并導致下一輪ping時再次查找DNS(取決于JVM DNS緩存)。
默認值 ["127.0.0.1", "[::1]"]。
http.port 
要綁定到傳入HTTP請求的端口。接受單個值或范圍。如果指定了一個范圍,則節點將綁定到該范圍中的第一個可用端口。
默認值9200-9300.
transport.tcp.port 
為節點間通信而綁定的端口。接受單個值或范圍。如果指定了一個范圍,則節點將綁定到該范圍中的第一個可用端口。
默認值9300-9400.

network.host的特殊值

_[networkInterface]_網絡接口的地址,例如 _en0_.
_local_系統上的任何回送地址, for example 127.0.0.1.
_site_系統上的任何站點-本地地址, for example 192.168.0.1.
_global_系統上任何全局范圍的地址, for example 8.8.8.8.

禁用HTTP

可以通過設置http.enabled為false完全禁用http模塊。Elasticsearch節點(和Java客戶機)使用傳輸接口(而不是HTTP)進行內部通信。在不打算直接服務REST請求的節點上完全禁用http層可能是有意義的。

例如,如果還有打算為所有REST請求提供服務的客戶機節點,那么可以在僅數據節點上禁用HTTP。但是請注意,將不能直接向禁用HTTP的節點發送任何REST請求(例如檢索節點狀態)。

高級網絡設置

network.host網絡設置中介紹的主機設置是同時設置綁定主機和發布主機的快捷方式。在高級用例中,例如在代理服務器后面運行時,可能需要將這些設置設置為不同的值:

network.bind_host 
這指定了一個節點應該綁定到哪個網絡接口,以便偵聽傳入的請求。一個節點可以綁定到多個接口,例如兩個網卡,或者一個站點本地地址和一個本地地址。默認為network.host。network.publish_host 
發布主機是節點向集群中的其他節點發布的單一接口,以便這些節點可以連接到它。當前,一個Elasticsearch節點可以綁定到多個地址,但只發布一個地址。如果沒有指定,默認network.host為“最佳”地址。按IPv4/IPv6堆棧首選項排序,然后按可達性排序。如果你設置了一個網絡。如果產生多個綁定地址,但依賴于節點到節點通信的特定地址,則應該顯式設置network.publish_host. 

以上兩個設置都可以像network一樣配置。主機——接受IP地址、主機名和特殊值。

高級TCP設置

任何使用TCP的都使用以下配置:

network.tcp.no_delay啟用或禁用TCP無延遲設置。默認值為true。
network.tcp.keep_alive啟用或禁用TCP保持活動。默認值為true。
network.tcp.reuse_address地址是否可以重用。在非windows機器上默認為true。
network.tcp.send_buffer_sizeTCP發送緩沖區的大小(用大小單位指定)。默認情況下未顯式設置。
network.tcp.receive_buffer_sizeTCP接收緩沖區的大小(用大小單位指定)。默認情況下未顯式設置。

Transport

傳輸模塊用于集群內節點之間的內部通信。從一個節點到另一個節點的每個調用都使用傳輸模塊(例如,當一個HTTP GET請求由一個節點處理,而實際上應該由持有數據的另一個節點處理)。

傳輸機制在本質上是完全異步的,這意味著沒有等待響應的阻塞線程。使用異步通信的好處是首先解決了C10k問題,同時也是分散(廣播)/收集操作(如Elasticsearch中的搜索)的理想解決方案。

TCP傳輸是使用TCP的傳輸模塊的實現。它允許以下設置:

transport.tcp.port
綁定端口范圍。默認為9300 - 9400。transport.publish_port
transport.bind_host
transport.publish_host
transport.host

TCP傳輸概要文件

Elasticsearch允許通過使用傳輸配置文件綁定到不同接口上的多個端口。參見下面的示例配置

transport.profiles.default.port: 9300-9400
transport.profiles.default.bind_host: 10.0.0.1
transport.profiles.client.port: 9500-9600
transport.profiles.client.bind_host: 192.168.0.1
transport.profiles.dmz.port: 9700-9800
transport.profiles.dmz.bind_host: 172.16.1.2

默認配置文件是特殊的。如果其他配置文件沒有特定的配置設置集,則將其用作任何其他配置文件的回退,并且此節點是如何連接到集群中的其他節點的。

可以在每個傳輸配置文件上配置以下參數,如上面的示例所示:

  • port: The port to bind to
  • bind_host: The host to bind
  • publish_host: The host which is published in informational APIs
  • tcp_no_delay: Configures the TCP_NO_DELAY option for this socket
  • tcp_keep_alive: Configures the SO_KEEPALIVE option for this socket
  • reuse_address: Configures the SO_REUSEADDR option for this socket
  • tcp_send_buffer_size: Configures the send buffer size of the socket
  • tcp_receive_buffer_size: Configures the receive buffer size of the socket

Transport跟蹤

傳輸模塊有一個專用的跟蹤記錄器,當它被激活時,它會記錄傳入和傳出的請求。可以通過設置org.elasticsearch.transport.TransportService的級別動態激活該日志。跟蹤記錄器要跟蹤:

PUT _cluster/settings
{"transient" : {"logger.org.elasticsearch.transport.TransportService.tracer" : "TRACE"}
}

還可以使用一組包含和排除通配符模式來控制跟蹤哪些操作。默認情況下,除故障檢測外,每個請求都將被跟蹤:

PUT _cluster/settings
{"transient" : {"transport.tracer.include" : "*","transport.tracer.exclude" : "internal:discovery/zen/fd*"}
}

線程池

一個節點擁有幾個線程池,以便改進在節點內管理線程內存消耗的方式。許多這些池還有與它們相關聯的隊列,這些隊列允許持有掛起的請求,而不是丟棄它們。

generic
線程池類型為scalingindex
索引寫入刪除操作。線程池類型為fixed,大小為# of available processors,隊列長度為200。search
count/search/suggest操作。類型為fixed_auto_queue_size,大小為int((# of available_processors * 3) / 2) + 1,初始值為1000.get
類型為fixed,大小為# of available processors,隊列長度為1000.analyze  
類型為fixed,大小為1,隊列長度為16write
single-document index/delete/update和 bulk requests。
類型為fixed,大小為# of available processors,隊列長度為200。最大大小為1 + # of available processorssnapshot
snapshot/restore操作。
類型為scaling,保持活躍5m,并且最大為`min(5, (# of available processors)/2)`.warmer
segment warm-up 操作。
類型為scaling,保持活躍5m,并且最大為`min(5, (# of available processors)/2)`.refresh
類型為scaling,保持活躍5m,并且最大為`min(10, (# of available processors)/2)`.listener 
listener threaded設置為true的時候。
類型為scaling,默認為`min(10, (# of available processors)/2)`.

設置

可以通過設置特定類型的參數來更改特定的線程池;例如,改變索引線程池有更多的線程:

thread_pool:index:size: 30

fixed線程池

下面是線程池的類型及其各自的參數:

fixed:fixed持有固定大小的線程來處理請求,使用一個隊列(可選綁定)處理沒有線程為其服務的掛起請求。

size:size參數控制線程的數量,默認為內核數量乘以5。

queue_size:queue_size控制沒有線程執行的掛起請求隊列的大小。默認情況下,它被設置為-1,這意味著它是無界的。當一個請求進入并且隊列已滿時,它將中止該請求。

thread_pool:index:size: 30queue_size: 1000

fixed_auto_queue_size

fixed_auto_queue_size線程池持有固定大小的線程,用于處理沒有線程服務的掛起請求,并使用一個有界隊列處理這些請求。它類似于fixed線程池,但是,queue_size會根據Little定律的計算自動調整。每次完成auto_queue_frame_size操作時,這些計算可能會將queue_size調高或調低50。

size參數控制線程的數量,默認為內核數量乘以5。

queue_size允許控制沒有線程執行的掛起請求隊列的初始大小。

min_queue_size設置控制queue_size可以調整的最小值。

max_queue_size設置控制queue_size可以調整的最大數量。

auto_queue_frame_size設置控制在調整隊列之前進行度量的操作數量。它應該足夠大,單個操作不能過度影響計算。

target_response_time是一個時間值設置,指示線程池隊列中任務的目標平均響應時間。如果任務通常超過這個時間,線程池隊列將被調低,以拒絕任務。

thread_pool:search:size: 30queue_size: 500min_queue_size: 10max_queue_size: 1000auto_queue_frame_size: 2000target_response_time: 1s

scaling

可伸縮的線程池持有動態數量的線程。這個數字與工作負載成比例,并在核心參數和最大參數的值之間變化。

keep_alive參數決定一個線程在不做任何工作的情況下應該在線程池中保留多長時間。

thread_pool:warmer:core: 1max: 8keep_alive: 2m

處理器設置

自動檢測處理器的數量,并根據它自動設置線程池設置。這可以通過顯式設置處理器設置來實現。

processors: 2

如果在同一個主機上運行多個Elasticsearch實例,但希望Elasticsearch調整其線程池的大小,就像它只有一部分CPU一樣,應該覆蓋設置為所需的部分的處理器(例如,如果在一臺16核的機器上運行兩個Elasticsearch實例,請將處理器設置為8)。請注意,這是一個專家級的用例,其中涉及的內容遠不止設置處理器設置,還有其他需要考慮的事項,如更改垃圾收集器線程的數量、將進程固定到內核等。

有時候會錯誤地檢測到處理器的數量,在這種情況下,顯式地設置處理器設置可以解決這類問題。

GET /_nodes/os

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711281.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711281.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711281.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

YOLOv7基礎 | 第2種方式:簡化網絡結構之yolov7.yaml(由104層簡化為30層)

前言:Hello大家好,我是小哥談。通過下載YOLOv7源碼可知,原始的yolov7.yaml文件是拆開寫的,比較混亂,也不好理解,并且為后續改進增添了很多困難。基于此種情況,筆者就給大家介紹一種將yolov7.yaml文件簡化的方法,將104層簡化為30層,并且參數量和計算量和原來是一致的,…

內存占用構造方法

#使用虛擬內存構造內存消耗 mkdir /tmp/memory mount -t tmpfs -o size5G tmpfs /tmp/memory dd if/dev/zero of/tmp/memory/block #釋放消耗的虛擬內存 rm -rf /tmp/memory/block umount /tmp/memory rmdir /tmp/memory #內存占用可直接在/dev/shm目錄下寫文件

《極客時間 - 左耳聽風》【文章筆記個人思考】

《極客時間 - 左耳聽風》原文鏈接:https://time.geekbang.org/column/intro/100002201?tabcatalog 10 | 如何成為一個大家愿意追隨的Leader? 10 | 如何成為一個大家愿意追隨的Leader? 這里的Leader是在技術上取得優勢,而不是行政…

2024年2月個人工作生活總結

本文為 2024年2月工作生活總結。 研發編碼 一些警告修正記錄 這個月修正了個人所負責的工程警告,這些警告其實是前人的代碼遺留的,我續寫的代碼,除printf函數的%d、%ld格式,都在寫的過程中改了。 下面記錄一些典型的警告及應對…

NLP(一)——概述

參考書: 《speech and language processing》《統計自然語言處理》 宗成慶 語言是思維的載體,自然語言處理相比其他信號較為特別 word2vec用到c語言 Question 預訓練語言模型和其他模型的區別? 預訓練模型是指在大規模數據上進行預訓練的模型,通常…

測試環境搭建整套大數據系統(七:集群搭建kafka(2.13)+flink(1.13.6)+dinky(0.6)+iceberg)

一:搭建kafka。 1. 三臺機器執行以下命令。 cd /opt wget wget https://dlcdn.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz tar zxvf kafka_2.13-3.6.1.tgz cd kafka_2.13-3.6.1/config vim server.properties修改以下倆內容 1.三臺機器分別給予各自的broker_id…

git操作學習記錄,簡單易上手

配置git 的賬戶郵箱 $ git config --global user.name "Firstname Lastname" $ git config --global user.email "your_emailexample.com"代碼回溯 git rest --hard [commit哈希值]git log命令只能查看以當前狀態為終點的歷史日志 git reflog命令&#x…

Python+neo4j構建豆瓣電影知識圖譜

文章目錄 數據來源數據整理導入節點和關系導入使用Subgraph批量導入節點和關系 多標簽實體和實體去重 數據來源 http://www.openkg.cn/dataset/douban-movie-kg 該網址擁有豐富的中文知識圖譜數據集,OpenKG(Open Knowledge Graph),可供研究人員使用研究…

【golang】25、圖片操作

用 “github.com/fogleman/gg” 可以畫線, 框 用 “github.com/disintegration/imaging” 可以變換顏色 一、渲染 1.1 框和字 import "github.com/fogleman/gg"func DrawRectangles(inPath string, cRects []ColorTextRect, fnImgNameChange FnImgNameChange) (st…

Python爬蟲——Urllib庫-3

目錄 ajax的get請求 獲取豆瓣電影第一頁的數據并保存到本地 獲取豆瓣電影前十頁的數據 ajax的post請求 總結 ajax的get請求 獲取豆瓣電影第一頁的數據并保存到本地 首先可以在瀏覽器找到發送數據的接口 那么我們的url就可以在header中找到了 再加上UA這個header 進行請…

Facebook的元宇宙實踐:數字化社交的新前景

近年來,元宇宙(Metaverse)這一概念備受矚目,被認為是數字化社交的未來趨勢之一。而在眾多科技巨頭中,Facebook(現更名為Meta)一直處于元宇宙發展的前沿。在本文中,我們將深入探討Fac…

萬字帶你走過數據庫的這激蕩的三年

本文收集了卡內基梅隆大學計算機科學系數據庫學副教授 Andy Pavlo 從 2021 到 2023 連續三年對數據庫領域的回顧,希望通過連續三年的回顧讓你對數據庫領域的技術發展有所了解。 關于 Andy Pavlo:卡內基梅隆大學計算機科學系數據庫學副教授,數…

vuepress項目側邊欄菜單配置使用

第一種菜單配置,自定義菜單名稱 {text: 菜單名稱,// 是否折疊collapsible: true,children: [{text: "自定義md菜單名稱",sidebarDepth: 2,link: "/xxx/aa.md",children: [],}],},第二種菜單配置 標題自動生成菜單,使用需要搭配sideb…

c語言求矩陣的局部極大值

給定M行N列的整數矩陣A,如果A的非邊界元素A[i][j]大于相鄰的上下左右4個元素,那么就稱元素A[i][j]是矩陣的局部極大值。本題要求給定矩陣的全部局部極大值及其所在的位置。 輸入格式: 輸入在第一行中給出矩陣A的行數M和列數N(3≤…

C語言創建結構體時 什么時候需要C++引用 什么情況下下不需要引用

在C語言中,結構體通常通過傳遞指針來實現對結構體的修改。當在函數中需要修改結構體的內容,并且希望這些修改在調用函數后仍然保持,可以考慮使用指針。引用是C中的一種特殊機制,用于更方便地傳遞參數,但在純粹的C語言中…

《springcloud alibaba》 三 sentinel流量控制

目錄 sentinel準備流控規則 qpspom.xmlapllication.yml啟動類controller查看結果流控提示不太友好 流控規則 線程數全局異常處理pom.xmlapplication.yml啟動類實體類controller類異常類測試 關聯流控模式關聯jmeter 鏈路servicecontroller代碼調整 流控效果Warm UP 熔斷降級規則…

[Flutter]用16進制顏色字符串初始化Color

使用: // 使用Color的靜態方法 fromARGB() 來創建顏色對象。透明度為 255(完全不透明) Color a Color.fromARGB(255, 42, 35, 72); // 使用八位的十六進制數來表示顏色,其中前兩位表示透明度,后六位表示紅色、綠色和…

本科畢業設計:計及并網依賴性的分布式能源系統優化研究。(C語言實現)(內包含NSGA II優化算法)(二)

目錄 前言 1、sofc函數 2、光伏板函數 3、集熱場函數 4、sofc電跟隨策略函數 5、二分法找sofc運行點函數 6、目標函數:成本 7、目標函數:二氧化碳排放量 8、目標函數:并網依賴性 前言 本篇文章介紹的是我的畢業設計,我將C…

JavaScript DOM操作筆記記錄回憶總結

一、什么是DOM? 1、通過 HTML DOM,可訪問 JavaScript HTML 文檔的所有元素。 2、當網頁被加載時,瀏覽器會創建頁面的文檔對象模型(Document Object Model) 二、操作DOM 1、在操作DOM之前,我們需要先獲取到…

DOM 創建節點、添加節點和刪除節點

創建元素節點 document.createElement(‘標簽名’) 創建文本節點document.createTextNode ( 內容 ) 根據傳入的標簽名創建出一個空的元素對象創建出來的默認不顯示,要成為別人的子元素才能顯示,所以要結合appendChild使用 添加節點(后面&am…