女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Linux環(huán)境下高效安裝部署和配置Elasticsearch

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-01-16 11:49 ? 次閱讀

環(huán)境

CentOS-7-x86_64-DVD-2009.iso

https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso

elasticsearch-7.10.0-linux-x86_64.tar.gz

https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-10-0

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz

安裝

# mkdir -p /usr/local/elasticsearch
# chown esuser:esuser /usr/local/elasticsearch
# useradd esuser
# passwd esuser
# su - esuser
$ mv elasticsearch-7.10.0-linux-x86_64.tar.gz /usr/local/elasticsearch/
$ cd /usr/local/elasticsearch/
$ tar -xvzf elasticsearch-7.10.0-linux-x86_64.tar.gz 
$ cd elasticsearch-7.10.0
$ ls
bin  config  jdk  lib  LICENSE.txt  logs  modules  NOTICE.txt  plugins  README.asciidoc

注意:默認情況下,不允許使用root用戶運行ES,會報錯:

Caused by: java.lang.RuntimeException: can not run elasticsearch as root

前臺運行

$ ./bin/elasticsearch

驗證是否啟動成功

$ curl localhost:9200/
{
  "name" : "localhost.localdomain",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "8CLFbx4LSwW_maztFPGiTg",
  "version" : {
    "number" : "7.10.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96",
    "build_date" : "2020-11-09T2133.964949Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

說明:訪問地址要和config/elasticsearch.yml中network.host配置保持一致

后臺運行

要將ES作為守護進程運行,請在命令行上指定-d,并使用-p選項將進程ID記錄在文件中:

如果對ES密鑰庫進行了密碼保護,系統(tǒng)將提示你輸入密鑰庫的密碼。有關(guān)更多詳細信息,請參閱安全設(shè)置。日志消息可以在$ES_HOME/logs/目錄中找到。

$ ./bin/elasticsearch -d -p pid

關(guān)閉以守護進程方式啟動的ES,,殺死pid文件中記錄的進程ID:

$ pkill -F pid

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/install-elasticsearch.html

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/targz.html#install-linux

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/targz.html#targz-running

配置

重要的Elasticsearch配置

Path配置

ES將索引的數(shù)據(jù)寫入索引,并將數(shù)據(jù)流寫入data目錄。ES將自己的應(yīng)用程序日志寫入logs目錄,其中包含有關(guān)集群健康和操作的信息。

對于macOS.tar.gz、Linux.tar.gz和Windows.zip安裝,默認情況下data和logs是$ES_HOME的子目錄。但是,$ES_HOME中的文件在升級過程中有被刪除的風險。

在生產(chǎn)環(huán)境中,強烈建議將$ES_HOME/config/elasticsearch.yml中的path.data和path.logs設(shè)置為$ES_HOME之外的位置

類Unix系統(tǒng)中配置示例:

path:
  data: /var/data/elasticsearch
  logs: /var/log/elasticsearch

如果有必要,可以在path.data中指定多個路徑。ES在所有提供的路徑上存儲節(jié)點的數(shù)據(jù),但將每個分片的數(shù)據(jù)保持在同一路徑上。

注意:

ES不會在節(jié)點的數(shù)據(jù)路徑上均衡分片。單個路徑中的高磁盤使用率會觸發(fā)整個節(jié)點磁盤使用率高水位。如果觸發(fā),ES將不會向節(jié)點添加分片,即使節(jié)點的其他路徑有可用的磁盤空間。如果需要額外的磁盤空間,建議添加一個新節(jié)點,而不是額外的數(shù)據(jù)路徑。

Linux和macOS安裝path.data支持多個類Unix風格路徑:

path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

集群名稱配置

一個節(jié)點只有在與集群中的所有其他節(jié)點共享其cluster.name時才能加入集群。默認名稱是elasticsearch,但應(yīng)該將其更改為描述集群用途的適當名稱。

cluster.name: logging-prod

節(jié)點名稱配置

ES使用node.name作為ES特定實例的易讀標識符。此名稱包含在許多API的響應(yīng)中。ES啟動時,節(jié)點名默認為機器的主機名,但可以在elasticsearch.yml中顯式配置:

node.name: prod-data-2

網(wǎng)絡(luò)主機配置

默認情況下,ES只綁定到環(huán)回地址,如127.0.0.1和[::1]。此綁定足以在服務(wù)器上運行單個開發(fā)環(huán)境節(jié)點

注意:

可以從單個節(jié)點上的相同$ES_HOME位置啟動多個節(jié)點。此設(shè)置可用于測試ES形成集群的能力,但不建議用于生產(chǎn)環(huán)境。

要與其他服務(wù)器上的節(jié)點形成集群,節(jié)點需要綁定到非環(huán)回地址。雖然有許多網(wǎng)絡(luò)設(shè)置,但通常只需配置network.host即可:

network.host: 192.168.1.10

network.host設(shè)置還可以理解一些特殊值,如_local_,_site_,_global_和修飾符,如:ip4和:ip6。請參閱network.host特殊值。

Discovery和集群信息配置

在投入生產(chǎn)之前,配置兩個重要的集群發(fā)現(xiàn)和形成設(shè)置,以便集群中的節(jié)點可以相互發(fā)現(xiàn)并選擇master節(jié)點。

discovery.seed_hosts

開箱即用,無需任何網(wǎng)絡(luò)配置,ES將綁定到可用的環(huán)回地址,并掃描本地端口9300到9305,以與同一服務(wù)器上運行的其他節(jié)點連接。這種行為提供了一種自動集群體驗,而無需進行任何配置。
當希望與其他主機上的節(jié)點形成集群時,使用靜態(tài)“discovery.seed_hosts設(shè)置。此設(shè)置提供集群中其他節(jié)點的列表,這些節(jié)點符合master節(jié)點資格,可能處于活動狀態(tài)并可聯(lián)系,以啟動發(fā)現(xiàn)過程. 此設(shè)置接受集群中所有符合master節(jié)點條件的節(jié)點的YAML序列或地址數(shù)組。每個地址可以是IP地址,也可以是通過DNS解析為一個或多個IP地址的主機名。

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11 
   - seeds.mydomain.com 
   - [000c0a8:10c]:9301 

端口號可選,默認為9300, 可修改。

如果主機名解析為多個IP地址,則節(jié)點將嘗試在所有已解析的地址上發(fā)現(xiàn)其他節(jié)點。

IPv6地址必須括在方括號內(nèi)

如果符合master節(jié)點條件的節(jié)點沒有固定的名稱或地址,使用可選主機提供商動態(tài)查找其地址。

cluster.initial_master_nodes

第一次啟動ES集群時,cluster bootstrapping步驟確定了在第一次選舉中投票的符合master節(jié)點資格的節(jié)點集。在開發(fā)模式下,在沒有配置發(fā)現(xiàn)設(shè)置的情況下,此步驟由節(jié)點本身自動執(zhí)行。

因為自動引導本質(zhì)上是不安全的,在生產(chǎn)模式下啟動新集群時,必須明確列出符合master節(jié)點資格的節(jié)點,這些節(jié)點的投票應(yīng)在第一次選舉中被計算。可以使用cluster.initial_master_nodes設(shè)置來設(shè)置此列表。

在集群首次成功建立后,從每個節(jié)點的配置中刪除cluster.initial_master_nodes設(shè)置。重新啟動群集或向現(xiàn)有群集添加新節(jié)點時,請勿使用此設(shè)置。

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11
   - seeds.mydomain.com
   - [000c0a8:10c]:9301
cluster.initial_master_nodes: 
   - master-node-a
   - master-node-b
   - master-node-c

通過node.name標識初始master節(jié)點(https://www.elastic.co/guide/en/elasticsearch/reference/7.10/important-settings.html#node-name),默認為其主機名。確保cluster.initial_master_nodes中的值與node.name完全匹配。如果使用完全限定域名(FQDN)作為節(jié)點名稱,例如master-node-a.example.com,則必須使用此列表中的FQDN。相反,如果node.name是一個沒有任何尾隨限定符的裸主機名,則還必須省略cluster.initial_master_nodes中的尾隨限定符。

查閱bootstrapping a cluster

堆大小配置

默認情況下,ES告訴JVM使用一個最小和最大值都為1GB的堆。當部署到生產(chǎn)環(huán)境時,配置堆大小以確保ES有足夠的可用堆空間非常重要。

ES將通過Xms(最小堆大小)和Xmx(最大堆大小)設(shè)置分配jvm.options中指定的整個堆。Xms和Xmx設(shè)置必須彼此相等。

這些設(shè)置的值取決于服務(wù)器上可用的RAM量:

將Xmx和Xms設(shè)置為不超過物理RAM的50%。ES需要內(nèi)存用于JVM堆以外的目的,為此留出空間非常重要。例如,ES使用堆外緩沖區(qū)進行高效的網(wǎng)絡(luò)通信,依賴于操作系統(tǒng)的文件系統(tǒng)緩存來高效訪問文件,JVM本身也需要一些內(nèi)存。ES進程使用的內(nèi)存超過使用Xmx設(shè)置配置的限制是正常的。

將Xmx和Xms設(shè)置為不超過JVM用于壓縮對象指針的閾值。確切的閾值各不相同,但接近32GB。可以通過在日志中查找類似以下行來驗證是否低于閾值:

heap size [1.9gb], compressed ordinary object pointers [true]

將Xmx和Xms設(shè)置為不超過從零開始的壓縮oops的閾值。確切的閾值各不相同,但26 GB在大多數(shù)系統(tǒng)上是安全的,在某些系統(tǒng)上可能高達30 GB。可以通過使用JVM選項-XX+PrintCompressedOopsMode啟動ES,并查找類似以下行來驗證是否低于此閾值:

heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops

此行顯示啟用了從零開始的壓縮oops。如果未啟用從零開始的壓縮oops,你將看到類似以下行:

heap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000

ES可用的堆越多,它可以用于內(nèi)部緩存的內(nèi)存就越多,但留給操作系統(tǒng)用于文件系統(tǒng)緩存的內(nèi)存越少。此外,較大的堆可能會導致垃圾收集暫停時間更長。

下面是一個如何通過config/jvm.options.d/文件設(shè)置堆大小的示例:

-Xms2g 
-Xmx2g

將最小堆內(nèi)存和最大堆內(nèi)存都設(shè)置為 2g。

使用jvm.options.d是配置生產(chǎn)部署堆大小的首選方法。

備注:默認情況下,jvm.options.d為空目錄,可以在該目錄下手動新建配置,如jvm.options,文件格式可參考config/jvm.options

還可以通過ES_JAVA_OPTS環(huán)境變量設(shè)置堆大小。這通常不建議用于生產(chǎn)部署,但對于測試很有用,因為它覆蓋了設(shè)置JVM選項的所有其他方式。

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch 
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch

1 設(shè)置最小堆內(nèi)存和最大堆內(nèi)存都為 2g。

2 設(shè)置最小堆內(nèi)存和最大堆內(nèi)存都為 4000 MB。

JVM 堆 dump路徑設(shè)置

默認情況下,ES 配置JVM 將內(nèi)存不足的堆dump到默認數(shù)據(jù)目錄。RPM以及Debian包,數(shù)據(jù)目錄為/var/lib/eelasticsearch。在Linux 和 MacOS 和Windows發(fā)行版中,data目錄位于ES安裝的根目錄下。如果此路徑不適合接收堆dump,則修改jvm.options中-XX:HeapDumpPath=…條目:

如果指定了一個目錄,JVM將根據(jù)運行實例的PID為堆dump生成一個文件名。

如果指定固定文件名而不是目錄,則當JVM需要對內(nèi)存不足的異常執(zhí)行堆dump時,該文件必須不存在。否則,堆dump將失敗。

GC日志配置

默認情況下,ES啟用垃圾收集(GC)日志。這些是在jvm.options配置的并且輸出到與ES日志相同的默認位置。默認配置每64 MB輪換一次日志,最多可消耗2 GB的磁盤空間。

可以使用JEP 158: 統(tǒng)一JVM日志中描述的命令行選項重新配置JVM日志記錄。除非直接更改默認的jvm.options文件,否則除了你自己的設(shè)置外,還會應(yīng)用ES默認配置。要禁用默認配置,首先通過提供-Xlog:disable選項禁用日志,然后提供自己的命令行選項。這將禁用所有JVM日志,因此務(wù)必查看可用選項并啟用所需的一切。

要查看原始JEP中未包含的更多選項,請參閱使用JVM統(tǒng)一日志框架啟用日志。

Examples

通過創(chuàng)建帶有一些示例選項的$ES_HOME/config/jvm.options.d/GC.options,將默認GC日志輸出位置更改為/opt/my-app/gc.log:

# 關(guān)閉之前所有的日志記錄配置
-Xlog:disable

# JEP 158的默認設(shè)置,除了使用“utctime”而不是“uptime”來匹配下一行 
-Xlog:all=warningutctime,level,tags

# 使用各種選項將GC日志記錄到自定義位置
-Xlog:gc*,gc+age=trace,safepoint:file=/opt/my-app/gc.log:utctime,pid,tags:filecount=32,filesize=64m

配置ESDocker容器將GC調(diào)試日志發(fā)送到標準錯誤(stderr)。這使容器編排器能夠處理輸出。如需使用ES_JAVA_OPTS環(huán)境變量,請指定:

MY_OPTS="-Xlog:disable -Xlog:all=warningutctime,level,tags -Xlog:gc=debugutctime"
docker run -e ES_JAVA_OPTS="$MY_OPTS" # etc

臨時目錄設(shè)置

默認情況下,ES使用啟動腳本在系統(tǒng)臨時目錄下創(chuàng)建的私有臨時目錄。

在某些Linux發(fā)行版上,系統(tǒng)實用程序會將最近沒有訪問過的文件和目錄將從/tmp中刪除。這將導致ES運行期間私有臨時目錄被刪除,如果需要使用臨時目錄的功能長時間未使用的話。后續(xù)如果某些功能使用需要此臨時目錄,將會產(chǎn)生問題。

如果使用.deb或.rpm包安裝ES,并在systemd下運行它,ES使用的私有臨時目錄將被排除在定期清理之外。

如果打算在Linux或MacOS上長時間運行.tar.gz發(fā)行版,考慮為ES創(chuàng)建一個專用的臨時目錄,將該目錄設(shè)置在不會從中清除舊文件和目錄的路徑下。此目錄應(yīng)設(shè)置權(quán)限,以便只有運行ES的用戶可以訪問它。然后,在啟動ES之前,將$ES_TMPDIR環(huán)境變量設(shè)置為指向此目錄

JVM致命錯誤日志設(shè)置

默認情況下,ES配置JVM將致命錯誤日志寫入默認日志目錄。針對RPM以及Debian包,該目錄為/var/log/elasticsearch。針對Linux,MacOS和Windows發(fā)行版中,logs目錄位于ES安裝目錄的根目錄下。

這些日志是JVM在遇到致命錯誤(如分段錯誤)時生成的日志。如果此路徑不適合接收日志,則修改jvm.options中-XX:ErrorFile=…條目

集群備份

快照可以防止因為災(zāi)害導致的永久數(shù)據(jù)丟失。快照生命周期管理是對集群進行定期備份的最簡單方法。有關(guān)更多信息,請參閱集群備份.
注意:

不能通過簡單地復制ES集群所有節(jié)點的數(shù)據(jù)目錄來備份ES。ES在運行時可能會對其數(shù)據(jù)目錄的內(nèi)容進行更改;復制其數(shù)據(jù)目錄不能保證其內(nèi)容的一致性。備份群集的唯一可靠方法是使用快照和還原功能。

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/important-settings.html

重要的系統(tǒng)配置

配置系統(tǒng)設(shè)置

在哪配置系統(tǒng)設(shè)置取決于用于安裝ES的軟件包以及使用的操作系統(tǒng)。

當使用.zip或.tar.gz包時,可以配置系統(tǒng)設(shè)置:

使用ulimit臨時配置,或

在/etc/security/limits.conf中永久配置

使用RPM或Debian軟件包時,大多數(shù)系統(tǒng)設(shè)置都在 系統(tǒng)配置文件 中設(shè)置. 然后,使用systemd的系統(tǒng)要求在 systemd配置文件 中指定系統(tǒng)限制

ulimit

在Linux系統(tǒng)上,ulimit可用于臨時更改資源限制。通常需要在運行ES的用戶啟動ES前,切換為root,以配置資源限制。例如,要將打開的文件句柄數(shù)(ulimit-n)設(shè)置為65536,可以執(zhí)行以下操作:

sudo su  
ulimit -n 65535 
su esuser

新的資源配置僅應(yīng)用于當前會話。可通過ulimit -a查詢當前所有限制。

/etc/security/limits.conf

在Linux系統(tǒng)上,可以通過編輯/etc/security/limits.conf文件為特定用戶設(shè)置持久限制。例如,要將esuser用戶的最大打開文件數(shù)設(shè)置為65535,在limits.conf文件中添加以下行:

esuser  -  nofile  65535

此更改僅在elasticsearch用戶下次打開新會話時生效。

Ubuntu下的limits.conf

Ubuntu會忽略由init.d啟動的進程的limits.conf文件。要啟用limits.conf文件,請編輯/etc/pam.d/su并取消注釋以下行:

# session    required   pam_limits.so

系統(tǒng)配置文件

使用RPM或Debian軟件包時,可以在系統(tǒng)配置文件中指定系統(tǒng)設(shè)置和環(huán)境變量,該文件位于:

包類型 系統(tǒng)配置文件路徑
RPM /etc/sysconfig/elasticsearch
Debian /etc/default/elasticsearch

但是,對于使用systemd的系統(tǒng),需要通過systemd指定系統(tǒng)限制

Systemd配置

在使用systemd的系統(tǒng)上使用RPM或Debian軟件包時,必須通過systemd指定系統(tǒng)限制。

systemd服務(wù)文件(/usr/lib/systemd/system/eelasticsearch.service)包含默認應(yīng)用的限制。

要覆蓋它們,添加一個名為/etc/systemd/system/exelasticsearch.service.d/overrid.conf的文件(或者,運行sudo systemctl edit elasticsearch,會在默認編輯器中自動打開該文件)。在此文件中設(shè)置任何需要的變更,例如:

[Service]
LimitMEMLOCK=infinity

一旦完成更改,運行以下命令以重載服務(wù)單元:

sudo systemctl daemon-reload

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/setting-system-settings.html

禁用交換(swapping)

大多數(shù)操作系統(tǒng)都試圖將盡可能多的內(nèi)存用于文件系統(tǒng)緩存,并急切地交換掉未使用的應(yīng)用程序內(nèi)存。這可能會導致JVM堆的一部分,甚至其可執(zhí)行頁面被換出到磁盤。

swapping 對性能和節(jié)點穩(wěn)定性非常不利,應(yīng)該不惜一切代價避免。它可能會導致垃圾收集持續(xù)分鐘而不是毫秒,并可能導致節(jié)點響應(yīng)緩慢,甚至與集群斷開連接。在彈性分布式系統(tǒng)中,更容易導致操作系統(tǒng)殺死節(jié)點。

有三種方法可以禁用交換。首選項是完全禁用交換。如果這不是一種選擇,那么是選擇最小化swappiness還是選擇內(nèi)存鎖定取決于你的環(huán)境

禁用所有swap文件

通常,ES是在機器上運行的唯一服務(wù),其內(nèi)存使用由JVM選項控制。不需要啟用交換。

在Linux系統(tǒng)上,可以通過運行以下命令暫時禁用交換::

sudo swapoff -a

這不需要重新啟動Elasticsearch。

要永久禁用,則需要編輯/etc/fstab文件,并注釋掉任何包含單詞swap的行。

在Windows上,可以通過系統(tǒng)屬性→高級→性能→高級→虛擬內(nèi)存完全禁用分頁文件來實現(xiàn)等效功能。

配置swappiness

Linux系統(tǒng)上可用的另一個選擇是確保sysctl值vm.swappiness設(shè)置為1。這減少了內(nèi)核交換的傾向,在正常情況下不應(yīng)導致交換,同時仍然允許整個系統(tǒng)在緊急情況下交換。

開啟bootstrap.memory_lock

另一種選擇是在Linux/Unix系統(tǒng)上使用mlockall,在Windows上使用VirtualLock,以嘗試將進程地址空間鎖定到RAM中,防止任何ES堆內(nèi)存被換出。

一些平臺在使用內(nèi)存鎖時仍然會交換堆內(nèi)存。為了防止堆外內(nèi)存交換,取而代之,禁用所有交換文件。

要啟用內(nèi)存鎖,需在elasticsearch.yml中將bootstrap.memory_lock設(shè)置為true:

bootstrap.memory_lock: true

如果mlockall試圖分配的內(nèi)存超過可用內(nèi)存,則可能會導致JVM或shell會話退出!

啟動Elasticsearch后,可以通過檢查此請求輸出中mlockall值來查看此設(shè)置是否已成功應(yīng)用:

GET _nodes?filter_path=**.mlockall

如果看到mlockall為false,則意味著mlockall請求失敗。還將在日志中看到一行包含更多信息,帶有單詞Unable to lock JVM Memory的日志。

在Linux/Unix系統(tǒng)上,最可能的原因是運行Elasticsearch的用戶沒有鎖定內(nèi)存的權(quán)限。可以按如下方式授權(quán):

使用.zip和.tar.gz安裝包

啟動ES前以root用戶執(zhí)行ulimit -l unlimited。可選的,設(shè)置/etc/security/limits.confmemlock為unlimited

# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

RPM 和 Debian

系統(tǒng)配置文件中設(shè)置MAX_LOCKED_MEMORY為unlimited

使用systemd的系統(tǒng)

systemd配置中設(shè)置LimitMEMLOCK為infinity

mlockall失敗的另一個可能原因是JNA臨時目錄(通常是/tmp的子目錄)是用noexec選項掛載的。這可以通過使用ES_JAVA_OPTS環(huán)境變量為JNA指定一個新的臨時目錄來解決:

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djna.tmpdir="
./bin/elasticsearch

或者在jvm.options配置文件中設(shè)置該JVM標識。

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/setup-configuration-memory.html

文件描述符

這僅適用于Linux和MacOS,如果在Windows上運行ES,可以安全地忽略它。在Windows上,JVM使用僅受可用資源的限制的API。

ES使用了大量的文件描述符或文件句柄。文件描述符用盡可能是災(zāi)難性的,很可能會導致數(shù)據(jù)丟失。確保將運行ES的用戶的打開文件描述符數(shù)量限制增加到65536或更高。

對于.zip和.tar.gz包,在啟動ES之前以root用戶設(shè)置ulimit -n 65535,或者在/etc/security/limits.conf中將nofile設(shè)置為65535。

在MacOS上,還必須將JVM選項-XX:-MaxFDLimit傳遞給ES,以便使用更高的文件描述符限制。

RPM和Debian軟件包已經(jīng)將文件描述符的最大數(shù)量默認為65535,不需要進一步配置。

可以使用Nodes stats檢查為每個節(jié)點配置的max_file_descriptors:

GET _nodes/stats/process?filter_path=**.max_file_descriptors

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/file-descriptors.html

虛擬內(nèi)存

默認情況下,ES使用mmapfs目錄用于存儲其索引。默認操作系統(tǒng)對mmap計數(shù)的限制可能太低,這可能會導致內(nèi)存不足異常。

在Linux上,可以通過以root身份運行以下命令來增加限制。

sysctl -w vm.max_map_count=262144

要永久設(shè)置該值,需更新/etc/sysctl.conf中的vm.max_map_count設(shè)置。要在重新啟動后進行驗證,請運行sysctl vm.map_map_count。

RPM和Debian軟件包將自動配置此設(shè)置。無需進一步配置。CentOS7.9中驗證,該配置項默認為65535,無法正常啟動

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/vm-max-map-count.html

線程數(shù)量

ES為不同類型的操作使用了許多線程池。重要的是,它能夠在需要時創(chuàng)建新線程。確保Elasticsearch用戶至少可創(chuàng)建4096個線程。

這可以通過在啟動Elasticsearch之前以root用戶運行ulimit -u 4096來完成 ,或者在/etc/security/limits.conf中將nproc設(shè)置為4096。

發(fā)行包在systemd下作為服務(wù)運行時,將自動配置ES進程的線程數(shù)。不需要額外的配置。

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/max-number-of-threads.html

DNS緩存設(shè)置

ES運行時有一個安全管理器。有了安全管理器,JVM默認無限期緩存正向主機名解析,默認緩存反向主機名解析10秒。ES使用默認值覆蓋此行為,以緩存正向解析60秒,反向解析10秒。這應(yīng)適用于大多數(shù)環(huán)境,包括DNS解析隨時間變化的環(huán)境。如果沒有覆蓋此配置,可以編輯JVM選項中的es.networkaddress.cache.ttl和es.networkaddress.cache.negative.ttl。注意,ES會忽略 Java安全策略中的networkaddress.cache.ttl=和networkaddress.cache.negative.ttl=。除非移除es.networkaddress.cache.ttl和es.networkaddress.cache.notanegative.ttl設(shè)置。

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/networkaddress-cache-ttl.html

JNA臨時目錄未使用noexec掛著

這僅適用于Linux。

ES使用Java Native Access(JNA)庫來執(zhí)行一些依賴于平臺的本地代碼。在Linux上,支持此庫的本地代碼在運行時從JNA存檔中提取。默認情況下,此代碼被提取到ES臨時目錄,該目錄默認為/tmp的子目錄。可選的,可以使用JVM標志-Djna.tmpdir=控制此位置。由于本地庫作為可執(zhí)行文件映射到JVM虛擬地址空間,因此提取此代碼的位置的底層掛載點不能使用noexec掛載,因為這會阻止JVM進程將此代碼映射為可執(zhí)行文件。在一些強化的Linux安裝中,這是/tmp的默認掛載選項。底層掛載是用noexec掛載的一個跡象是,在啟動時,JNA將無法加載,提示java.lang.UnsatisfiedLinkerError異常,并顯示一條類似failed to map segment from shared object的提示信息。注意,消息可能因JVM版本差異而不同。此外,依賴于通過JNA執(zhí)行本地代碼的ES組件將失敗,并顯示because JNA is not available的提示。如果看到此類錯誤信息,則必須重新掛載用于JNA的臨時目錄,并且不使用noexec掛載。

參考鏈接

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/executable-jna-tmpdir.html

TCP重傳超時

集群中的每對節(jié)點都通過許多TCP連接進行通信,這些TCP連接保持打開狀態(tài)直到其中一個節(jié)點關(guān)閉或節(jié)點之間的通信因底層基礎(chǔ)框架故障而中斷。

TCP通過向通信應(yīng)用程序隱藏臨時網(wǎng)絡(luò)中斷,在偶爾不可靠的網(wǎng)絡(luò)上提供可靠的通信。在通知發(fā)送者任何問題之前,操作系統(tǒng)將多次重新傳輸任何丟失的消息。大多數(shù)Linux發(fā)行版默認重新傳輸任何丟失的數(shù)據(jù)包15次。重傳呈指數(shù)級推遲,因此這15次重傳需要900多秒才能完成。這意味著使用此方法檢測網(wǎng)絡(luò)分區(qū)或故障節(jié)點需要消耗Linux幾分鐘的時間。Windows默認只重傳5次,超時時間約為6秒。

Linux默認允許在可能經(jīng)歷很長一段時間數(shù)據(jù)包丟失的網(wǎng)絡(luò)上進行通信,但對于單個數(shù)據(jù)中心內(nèi)的生產(chǎn)網(wǎng)絡(luò)來說,這個默認值是過高的,正如大多數(shù)Elasticsearch集群一樣。高可用集群必須能夠快速檢測節(jié)點故障,以便通過重新分配丟失的分片、重新路由搜索以及可能選擇新的主節(jié)點來迅速做出反應(yīng)。因此,Linux用戶應(yīng)該減少TCP重傳的最大次數(shù)。

可以通過以root身份運行以下命令,將TCP重傳的最大次數(shù)減少到5。五次重傳對應(yīng)的超時時間約為六秒。

sysctl-w net.ipv4.tcp_reres2=5

要永久設(shè)置此值,更新/etc/sysctl.conf中的net.ipv4.tcp_reres2設(shè)置。要在重新啟動后運行sysctl net.ipv4.tcp_reres2查看是否生效。

此設(shè)置適用于所有TCP連接,也會影響與群體外系統(tǒng)的通信可靠性。如果的集群通過不可靠的網(wǎng)絡(luò)與外部系統(tǒng)通信,則可能需要為net.ipv4.tcp_reres2選擇更高的值。因此,Elasticsearch不會自動調(diào)整此設(shè)置。

相關(guān)配置

ES還實現(xiàn)了自己的內(nèi)部健康檢查,超時時間比Linux上的默認重傳超時時間短得多。由于這些是應(yīng)用程序級健康檢查,因此它們的超時必須考慮到應(yīng)用程序級的影響,如垃圾收集暫停。不應(yīng)該減少與這些應(yīng)用程序級健康檢查相關(guān)的任何超時。

鏈接:https://www.cnblogs.com/shouke/p/18551220

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11456

    瀏覽量

    212759
  • Elasticsearch
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    2981

原文標題:深入解析:如何在Linux環(huán)境下高效安裝部署和配置Elasticsearch

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    無人職守自動安裝部署操作系統(tǒng)指南

    當組織有服務(wù)器需要部署linux系統(tǒng)時,需要通過網(wǎng)絡(luò)方式安裝并結(jié)合自動應(yīng)答文件,實現(xiàn)無人職守自動安裝部署操作系統(tǒng)。這種方式需要我們至少
    的頭像 發(fā)表于 05-22 13:38 ?258次閱讀
    無人職守自動<b class='flag-5'>安裝</b><b class='flag-5'>部署</b>操作系統(tǒng)指南

    不借助Linux系統(tǒng),在Windows如何搭建ZMC900E交叉編譯環(huán)境

    不需要依賴笨重的虛擬機,也不需要安裝雙系統(tǒng)。拋開繁瑣的環(huán)境準備,在Windows上輕松搭建交叉編譯環(huán)境。本文將介紹如何在Windows上搭建交叉編譯
    的頭像 發(fā)表于 05-21 11:34 ?98次閱讀
    不借助<b class='flag-5'>Linux</b>系統(tǒng),在Windows<b class='flag-5'>下</b>如何搭建ZMC900E交叉編譯<b class='flag-5'>環(huán)境</b>

    單節(jié)點Elasticsearch+Filebeat+Kibana安裝指南

    單節(jié)點Elasticsearch+Filebeat+Kibana安裝指南
    的頭像 發(fā)表于 05-21 11:06 ?130次閱讀
    單節(jié)點<b class='flag-5'>Elasticsearch</b>+Filebeat+Kibana<b class='flag-5'>安裝</b>指南

    何在Linux配置DNS服務(wù)器

    本文詳細介紹了如何在Linux配置DNS服務(wù)器,包括DNS工作原理、本地緩存、DNS查詢過程,以及正向和反向查詢的配置。步驟包括服務(wù)器配置
    的頭像 發(fā)表于 05-09 13:38 ?912次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>中<b class='flag-5'>配置</b>DNS服務(wù)器

    何在CentOS系統(tǒng)中部署ELK日志分析系統(tǒng)

    日志分析已成為企業(yè)監(jiān)控、故障排查和性能優(yōu)化的重要組成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆棧作為一種強大的開源解決方案,提供了高效的日志收集、存儲和可視化
    的頭像 發(fā)表于 05-08 11:47 ?148次閱讀
    如<b class='flag-5'>何在</b>CentOS系統(tǒng)中<b class='flag-5'>部署</b>ELK日志分析系統(tǒng)

    Linux環(huán)境再升級:PLIN驅(qū)動程序正式發(fā)布

    PLIN驅(qū)動程序現(xiàn)已正式發(fā)布,本文將展示如何安裝PLIN驅(qū)動程序,以及如何在Linux環(huán)境進行基本的PLIN通信操作,確保您能夠快速掌握并
    的頭像 發(fā)表于 04-21 15:29 ?246次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>環(huán)境</b>再升級:PLIN驅(qū)動程序正式發(fā)布

    告別復雜的終極指南:如何在樹莓派上安裝 Manjaro:2024

    如果你想在RaspberryPi上體驗ArchLinux,Manjaro可能是你的最佳選擇。它基于Arch,但被打包成一個傳統(tǒng)的Linux發(fā)行版,支持多種桌面環(huán)境和架構(gòu)。讓我們來學習如何在RaspberryPi上
    的頭像 發(fā)表于 03-25 09:39 ?400次閱讀
    告別復雜的終極指南:如<b class='flag-5'>何在</b>樹莓派上<b class='flag-5'>安裝</b> Manjaro:2024

    何在RakSmart服務(wù)器上用Linux系統(tǒng)部署DeepSeek

    Linux系統(tǒng) DeepSeek 部署方案,結(jié)合RakSmart 服務(wù)器硬件推薦及多場景適配建議,主機推薦小編為您整理發(fā)布如何在RakSmart服務(wù)器上用Linux系統(tǒng)部DeepSee
    的頭像 發(fā)表于 03-14 11:53 ?320次閱讀

    Linux系統(tǒng)安裝中文環(huán)境和中文輸入法(),觸覺智能嵌入式開發(fā)板

    觸覺智能經(jīng)驗分享,Linux系統(tǒng)安裝中文環(huán)境和中文輸入法(
    的頭像 發(fā)表于 02-26 16:26 ?441次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>安裝</b>中文<b class='flag-5'>環(huán)境</b>和中文輸入法(<b class='flag-5'>下</b>),觸覺智能嵌入式開發(fā)板

    在華為云上通過 Docker 容器部署 Elasticsearch 并進行性能評測

    文件 ? 2.2 安裝 Docker ? 2.3 啟動 Docker ? 3. 使用Docker部署Elasticsearch ? 3.1 拉取Elasticsearch鏡像 ? 3.
    的頭像 發(fā)表于 01-13 13:36 ?365次閱讀
    在華為云上通過 Docker 容器<b class='flag-5'>部署</b> <b class='flag-5'>Elasticsearch</b> 并進行性能評測

    構(gòu)建高效搜索解決方案,Elasticsearch &amp; Kibana 的完美結(jié)合

    的流暢運行。部署 Elasticsearch,享受分布式搜索的精準與快速;結(jié)合 Kibana,實現(xiàn)數(shù)據(jù)可視化,決策更直觀。在 828 華為云企業(yè)上云節(jié)不僅降低成本,更提升效率。云端部署,資源按需分配,靈活應(yīng)對業(yè)務(wù)增長。立即體驗,
    的頭像 發(fā)表于 12-27 13:48 ?335次閱讀
    構(gòu)建<b class='flag-5'>高效</b>搜索解決方案,<b class='flag-5'>Elasticsearch</b> &amp; Kibana 的完美結(jié)合

    華為云 EulerOS 環(huán)境,F(xiàn)lexus X 實例快速部署寶塔面板攻略

    華為云征文活動,我們將帶領(lǐng)大家深入了解如何在華為云 EulerOS 環(huán)境中,高效安裝配置 Flexus X 實例,以及如何快速
    的頭像 發(fā)表于 12-25 17:49 ?552次閱讀
    華為云 EulerOS <b class='flag-5'>環(huán)境</b><b class='flag-5'>下</b>,F(xiàn)lexus X 實例快速<b class='flag-5'>部署</b>寶塔面板攻略

    Docker運行環(huán)境安裝

    、發(fā)布、測試和部署,可以幫助開發(fā)人員將最新版本代碼應(yīng)用到生產(chǎn)環(huán)境中。 Docker可以安裝在多個平臺中,包括Mac、Windows和Linux。不過,生產(chǎn)
    的頭像 發(fā)表于 10-29 11:28 ?556次閱讀

    Linux環(huán)境變量配置方法

    Linux環(huán)境變量配置分為設(shè)置永久變量和臨時變量兩種。環(huán)境變量設(shè)置方法同時要考慮環(huán)境Shell類型,不同類型的SHELL設(shè)置臨時變量方法和
    的頭像 發(fā)表于 10-23 13:39 ?558次閱讀

    何在不同應(yīng)用場景構(gòu)建音頻測試環(huán)境

    在之前的文章中,我們已經(jīng)詳細介紹了基礎(chǔ)音頻參數(shù)和AP525的軟硬件配置。本文將延續(xù)這一主題,以泰凌TLSR9518A EVB作為測試設(shè)備(DUT),向大家展示如何在不同應(yīng)用場景構(gòu)建音頻測試環(huán)
    的頭像 發(fā)表于 07-03 15:00 ?1104次閱讀
    如<b class='flag-5'>何在</b>不同應(yīng)用場景<b class='flag-5'>下</b>構(gòu)建音頻測試<b class='flag-5'>環(huán)境</b>