一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 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

注意:默認(rèn)情況下,不允許使用root用戶運(yùn)行ES,會報錯:

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

前臺運(yùn)行

$ ./bin/elasticsearch

驗(yàn)證是否啟動成功

$ 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配置保持一致

后臺運(yùn)行

要將ES作為守護(hù)進(jìn)程運(yùn)行,請?jiān)诿钚猩现付?d,并使用-p選項(xiàng)將進(jìn)程ID記錄在文件中:

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

$ ./bin/elasticsearch -d -p pid

關(guān)閉以守護(hù)進(jìn)程方式啟動的ES,,殺死pid文件中記錄的進(jìn)程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安裝,默認(rèn)情況下data和logs是$ES_HOME的子目錄。但是,$ES_HOME中的文件在升級過程中有被刪除的風(fēng)險。

在生產(chǎn)環(huán)境中,強(qiáng)烈建議將$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é)點(diǎn)的數(shù)據(jù),但將每個分片的數(shù)據(jù)保持在同一路徑上。

注意:

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

Linux和macOS安裝path.data支持多個類Unix風(fēng)格路徑:

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

集群名稱配置

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

cluster.name: logging-prod

節(jié)點(diǎn)名稱配置

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

node.name: prod-data-2

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

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

注意:

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

要與其他服務(wù)器上的節(jié)點(diǎn)形成集群,節(jié)點(diǎn)需要綁定到非環(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é)點(diǎn)可以相互發(fā)現(xiàn)并選擇master節(jié)點(diǎn)。

discovery.seed_hosts

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

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

端口號可選,默認(rèn)為9300, 可修改。

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

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

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

cluster.initial_master_nodes

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

因?yàn)樽詣右龑?dǎo)本質(zhì)上是不安全的,在生產(chǎn)模式下啟動新集群時,必須明確列出符合master節(jié)點(diǎn)資格的節(jié)點(diǎn),這些節(jié)點(diǎn)的投票應(yīng)在第一次選舉中被計(jì)算??梢允褂胏luster.initial_master_nodes設(shè)置來設(shè)置此列表。

在集群首次成功建立后,從每個節(jié)點(diǎn)的配置中刪除cluster.initial_master_nodes設(shè)置。重新啟動群集或向現(xiàn)有群集添加新節(jié)點(diǎn)時,請勿使用此設(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標(biāo)識初始master節(jié)點(diǎn)(https://www.elastic.co/guide/en/elasticsearch/reference/7.10/important-settings.html#node-name),默認(rèn)為其主機(jī)名。確保cluster.initial_master_nodes中的值與node.name完全匹配。如果使用完全限定域名(FQDN)作為節(jié)點(diǎn)名稱,例如master-node-a.example.com,則必須使用此列表中的FQDN。相反,如果node.name是一個沒有任何尾隨限定符的裸主機(jī)名,則還必須省略cluster.initial_master_nodes中的尾隨限定符。

查閱bootstrapping a cluster

堆大小配置

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

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

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

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

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

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

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

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)存越少。此外,較大的堆可能會導(dǎo)致垃圾收集暫停時間更長。

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

-Xms2g 
-Xmx2g

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

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

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

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

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è)置

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

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

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

GC日志配置

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

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

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

Examples

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

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

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

# 使用各種選項(xiàng)將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ā)送到標(biāo)準(zhǔn)錯誤(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è)置

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

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

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

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

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

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

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

集群備份

快照可以防止因?yàn)闉?zāi)害導(dǎo)致的永久數(shù)據(jù)丟失??煺丈芷诠芾硎菍哼M(jìn)行定期備份的最簡單方法。有關(guān)更多信息,請參閱集群備份.
注意:

不能通過簡單地復(fù)制ES集群所有節(jié)點(diǎn)的數(shù)據(jù)目錄來備份ES。ES在運(yùn)行時可能會對其數(shù)據(jù)目錄的內(nèi)容進(jìn)行更改;復(fù)制其數(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)。

當(dā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可用于臨時更改資源限制。通常需要在運(yùn)行ES的用戶啟動ES前,切換為root,以配置資源限制。例如,要將打開的文件句柄數(shù)(ulimit-n)設(shè)置為65536,可以執(zhí)行以下操作:

sudo su  
ulimit -n 65535 
su esuser

新的資源配置僅應(yīng)用于當(dāng)前會話??赏ㄟ^ulimit -a查詢當(dāng)前所有限制。

/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啟動的進(jìn)程的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)包含默認(rèn)應(yīng)用的限制。

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

[Service]
LimitMEMLOCK=infinity

一旦完成更改,運(yùn)行以下命令以重載服務(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)存。這可能會導(dǎo)致JVM堆的一部分,甚至其可執(zhí)行頁面被換出到磁盤。

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

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

禁用所有swap文件

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

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

sudo swapoff -a

這不需要重新啟動Elasticsearch。

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

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

配置swappiness

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

開啟bootstrap.memory_lock

另一種選擇是在Linux/Unix系統(tǒng)上使用mlockall,在Windows上使用VirtualLock,以嘗試將進(jìn)程地址空間鎖定到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)存,則可能會導(dǎo)致JVM或shell會話退出!

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

GET _nodes?filter_path=**.mlockall

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

在Linux/Unix系統(tǒng)上,最可能的原因是運(yùn)行Elasticsearch的用戶沒有鎖定內(nèi)存的權(quán)限??梢园慈缦路绞绞跈?quán):

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

啟動ES前以root用戶執(zhí)行ulimit -l unlimited??蛇x的,設(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選項(xiàng)掛載的。這可以通過使用ES_JAVA_OPTS環(huán)境變量為JNA指定一個新的臨時目錄來解決:

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

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

參考鏈接

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

文件描述符

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

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

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

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

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

可以使用Nodes stats檢查為每個節(jié)點(diǎn)配置的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)存

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

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

sysctl -w vm.max_map_count=262144

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

RPM和Debian軟件包將自動配置此設(shè)置。無需進(jìn)一步配置。CentOS7.9中驗(yàn)證,該配置項(xiàng)默認(rèn)為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用戶運(yùn)行ulimit -u 4096來完成 ,或者在/etc/security/limits.conf中將nproc設(shè)置為4096。

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

參考鏈接

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

DNS緩存設(shè)置

ES運(yùn)行時有一個安全管理器。有了安全管理器,JVM默認(rèn)無限期緩存正向主機(jī)名解析,默認(rèn)緩存反向主機(jī)名解析10秒。ES使用默認(rèn)值覆蓋此行為,以緩存正向解析60秒,反向解析10秒。這應(yīng)適用于大多數(shù)環(huán)境,包括DNS解析隨時間變化的環(huán)境。如果沒有覆蓋此配置,可以編輯JVM選項(xiàng)中的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上,支持此庫的本地代碼在運(yùn)行時從JNA存檔中提取。默認(rèn)情況下,此代碼被提取到ES臨時目錄,該目錄默認(rèn)為/tmp的子目錄??蛇x的,可以使用JVM標(biāo)志-Djna.tmpdir=控制此位置。由于本地庫作為可執(zhí)行文件映射到JVM虛擬地址空間,因此提取此代碼的位置的底層掛載點(diǎn)不能使用noexec掛載,因?yàn)檫@會阻止JVM進(jìn)程將此代碼映射為可執(zhí)行文件。在一些強(qiáng)化的Linux安裝中,這是/tmp的默認(rèn)掛載選項(xiàng)。底層掛載是用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é)點(diǎn)都通過許多TCP連接進(jìn)行通信,這些TCP連接保持打開狀態(tài)直到其中一個節(jié)點(diǎn)關(guān)閉或節(jié)點(diǎn)之間的通信因底層基礎(chǔ)框架故障而中斷。

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

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

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

sysctl-w net.ipv4.tcp_reres2=5

要永久設(shè)置此值,更新/etc/sysctl.conf中的net.ipv4.tcp_reres2設(shè)置。要在重新啟動后運(yùn)行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還實(shí)現(xiàn)了自己的內(nèi)部健康檢查,超時時間比Linux上的默認(rèn)重傳超時時間短得多。由于這些是應(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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213748
  • Elasticsearch
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    3013

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    【米爾RK3576開發(fā)板免費(fèi)體驗(yàn)】1、開發(fā)環(huán)境、鏡像燒錄、QT開發(fā)環(huán)境搭建以及應(yīng)用部署

    $HOME/.bashrc中添加系統(tǒng)變量MYD3576_ENV表示工具鏈環(huán)境配置腳本 export MYD3576_BUILDROOT=<SDK安裝路徑>/buildroot
    發(fā)表于 07-14 11:26

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

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

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

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

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

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

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

    本文詳細(xì)介紹了如何在Linux配置DNS服務(wù)器,包括DNS工作原理、本地緩存、DNS查詢過程,以及正向和反向查詢的配置。步驟包括服務(wù)器配置
    的頭像 發(fā)表于 05-09 13:38 ?1416次閱讀
    如<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)堆棧作為一種強(qiáng)大的開源解決方案,提供了高效的日志收集、存儲和可視化
    的頭像 發(fā)表于 05-08 11:47 ?305次閱讀
    如<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)境進(jìn)行基本的PLIN通信操作,確保您能夠快速掌握并
    的頭像 發(fā)表于 04-21 15:29 ?349次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>環(huán)境</b>再升級:PLIN驅(qū)動程序正式發(fā)布

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

    如果你想在RaspberryPi上體驗(yàn)ArchLinux,Manjaro可能是你的最佳選擇。它基于Arch,但被打包成一個傳統(tǒng)的Linux發(fā)行版,支持多種桌面環(huán)境和架構(gòu)。讓我們來學(xué)習(xí)如何在RaspberryPi上
    的頭像 發(fā)表于 03-25 09:39 ?639次閱讀
    告別復(fù)雜的終極指南:如<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ù)器硬件推薦及多場景適配建議,主機(jī)推薦小編為您整理發(fā)布如何在RakSmart服務(wù)器上用Linux系統(tǒng)部DeepSee
    的頭像 發(fā)表于 03-14 11:53 ?395次閱讀

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

    觸覺智能經(jīng)驗(yàn)分享,Linux系統(tǒng)安裝中文環(huán)境和中文輸入法(
    的頭像 發(fā)表于 02-26 16:26 ?531次閱讀
    <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 并進(jìn)行性能評測

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

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

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

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

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

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

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

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

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