elasticsearch高級配置


title: elasticsearch高級配置
date: 2020-10-16 09:00:39
categories: elk
tags:
- 配置
- elasticsearch


大多數(shù)設(shè)置可以使用 集群更新API來更改

Elasticsearch提供了三個主要的配置文件,我們所有的配置都通過這個三個文件:

  • Elasticsearch配置文件:elasticsearch.yml
  • jvm配置文件:jvm.options
  • 日志配置文件:log4j2.properties

1、設(shè)置JVM選項

您應(yīng)該很少需要更改Java虛擬機(JVM)選項。如果這樣做,最可能的更改是設(shè)置堆大小。

  • <font color="501818">堆大小</font>

    默認情況下,Elasticsearch告訴JVM使用最小和最大大小為1 GB的堆。遷移到生產(chǎn)環(huán)境時,配置堆大小以確保 Elasticsearch有足夠的堆可用是很重要的。

    1、將最小堆大?。╔ms)和最大堆大?。╔mx)設(shè)置為彼此相等

    2、lasticsearch可用的堆越多,它可用于緩存的內(nèi)存就越多。但請注意,過多的堆可能會使您陷入長時間的垃圾收集暫停。

    3、設(shè)置Xmx為不超過物理RAM的50%,以確保有足夠的物理RAM留給內(nèi)核文件系統(tǒng)緩存。

    4、不要設(shè)置Xmx為JVM用于壓縮對象指針(壓縮oops)的截止值以上; 確切的截止值變化接近32 GB,大多數(shù)是26GB。

    設(shè)置方式

    • 修改jvm.option

      -Xms2g
      -Xmx2g

    • 在啟動elasticsearch時加入?yún)?shù)

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

<font color="501818">10. 堆轉(zhuǎn)儲路徑</font>

默認情況,配置jvm存儲堆棧溢出到data文件夾里,如果該目錄不支持則需要修改。

<font color="501818">11. GC記錄</font>

默認情況下,Elasticsearch啟用GC日志。這些配置在 jvm.options默認位置和默認位置與Elasticsearch日志相 同。默認 配置每64 MB輪換一次日志,最多可占用2 GB的磁盤空間。

2、安全設(shè)置:

某些設(shè)置是敏感的,依靠文件系統(tǒng)權(quán)限來保護其值是不夠的。對于此用例,Elasticsearch提供了一個密鑰庫和elasticsearch-keystore管理密鑰庫中設(shè)置的工具。

3、elasticsearch.yml設(shè)置

在投入生產(chǎn)之前,必須考慮以下設(shè)置:

<font color="501818">1.路徑設(shè)置</font>
主要是數(shù)據(jù)和日志路徑

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

對于數(shù)據(jù),可以有多個路徑如:

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

data中生成目錄形式:elasticsearch/nodes/0/indices/uuid/shard/

  • indices下是以各個索引的uuid命名的文件夾
  • shard,同一個分片會被分配到同一個目錄

<font color="501818">2. 群集名稱</font>
這是節(jié)點加入集群的唯一方法,默認的是elasticsearch

<font color="501818">3. 節(jié)點名稱</font>
節(jié)點名稱有助于區(qū)別不同類型(可以使用環(huán)境變量如 node.name: ${HOSTNAME})
<font color="501818">4. 網(wǎng)絡(luò)主機 network.host</font>
一般設(shè)置本機ip ,一旦設(shè)置為非回環(huán)地址,即默認視為生產(chǎn)模式,就需要注意系統(tǒng)配置
一旦配置了類似的網(wǎng)絡(luò)設(shè)置network.host,Elasticsearch就會假定您正在轉(zhuǎn)向生產(chǎn)并將上述警告升級為異常。這些異常將阻止您的Elasticsearch節(jié)點啟動。這是一項重要的安全措施,可確保您不會因服務(wù)器配置錯誤而丟失數(shù)據(jù)。
<font color="501818">5. 發(fā)現(xiàn)設(shè)置</font>

discovery.zen.ping.unicast.hosts:
-  192.168.1.10:9300
-  192.168.1.11 ①
-  seeds.mydomain.com   ②

①:如果不指定port,則會使用transport.tcp.port
②:如果是多個ip的主機,則會訪問所有解析到的ip
discovery.zen.minimum_master_nodes
最好為 (master_eligible_nodes / 2)+ 1 3個節(jié)點的情況設(shè)置2個

3、系統(tǒng)設(shè)置

<font color="501818">1. 資源限制:</font>
要將打開文件句柄(ulimit -n)的數(shù)量設(shè)置為65,536 /etc/security/limits.conf

<font color="501818">2. Disable swapping</font>

交換對性能,節(jié)點穩(wěn)定性非常不利,應(yīng)該不惜一切代價避免。它可能導(dǎo)致垃圾收集持續(xù)數(shù)分鐘而不是毫秒,并且可能導(dǎo)致節(jié)點響應(yīng)緩慢甚至斷開與群集的連接。在彈性分布式系統(tǒng)中,讓操作系統(tǒng)終止節(jié)點更有效。
三種方案:

  • 禁用所有的交換 臨時:sudo swapoff -a 永久修改: 在/etc/fstab 注釋掉所有包含swap的行
  • 配置swappiness
    設(shè)置 sysctl 中 vm.swappiness =1 這降低了內(nèi)核交換的傾向,在正常情況下不應(yīng)導(dǎo)致交換,同時仍允許整個系統(tǒng)在緊急情況下交換。
  • 啟用bootstrap.memory_lock
    修改 config/elasticsearch.yml:bootstrap.memory_lock: true

<font color="501818">3. Increase file descriptors</font>

Elasticsearch使用大量文件描述符或文件句柄。用完文件描述符可能是災(zāi)難性的,最有可能導(dǎo)致數(shù)據(jù)丟失。確保將運行 Elasticsearch的用戶的打開文件描述符數(shù)量限制增加到65,536或更高。
/etc/security/limits.conf  

<font color="501818">4. Ensure sufficient virtual memory</font>

可以設(shè)置存儲方式(fs、simplefs、niofs、mmapfs),默認Elasticsearch會選擇最佳的存儲方式,
Elasticsearch 默認使用mmapfs文件夾存儲索引 ,操作系統(tǒng)mmap計數(shù)的默認限制可能太低,這可能導(dǎo)致內(nèi)存不足異常。  
臨時修改: sysctl -w vm.max_map_count = 262144  
永久修改:/etc/sysctl.conf  

<font color="501818">5. Ensure sufficient threads</font>

Elasticsearch為不同類型的操作使用了許多線程池。重要的是它能夠在需要時創(chuàng)建新線程。確保Elasticsearch用戶可以創(chuàng)建的線程數(shù)至少為4096。  
臨時: ulimit -u 4096  
永久: /etc/security/limits.conf.  

<font color="501818">6. JVM DNS cache settings</font>
<font color="501818">7. Temporary directory not mounted with noexec</font>

<font color="501818">8. 臨時目錄</font>

默認情況,Elasticsearch 使用一個私有的臨時文件夾來存儲歷史腳本  
在一些linux版本中,會自動清除在一段時間內(nèi)沒有被訪問到的文件,所以對于Elasticsearch來說是致命的
如果安裝.tar.gz在Linux 上運行分發(fā)一段時間,那么您應(yīng)該考慮為Elasticsearch創(chuàng)建一個專用的臨時目錄,該目錄不在  將從中清除舊文件和目錄的路徑下。此目錄應(yīng)具有權(quán)限集,以便只有運行Elasticsearch的用戶才能訪問它。然后    $ES_TMPDIR在啟動Elasticsearch之前將環(huán)境變量設(shè)置 為指向它。

3、安全設(shè)置

Generate a private key and X.509 certificate.
生成節(jié)點證書

  1. 創(chuàng)建一個一個整數(shù)頒發(fā)機構(gòu),命令 : bin/elasticsearch-certutil ca
    您可以將群集配置為信任具有此CA已簽名的證書的所有節(jié)點。
    這個命令生成一個單獨的文件(默認名稱是elastic-stack-ca.p12)該文件是PKCS#12密鑰庫,包含CA的公共證書以及用于為每個節(jié)點簽名證書的私鑰。

  2. 為群集中的每個節(jié)點生成證書和私鑰。

    bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

    輸出是單個PKCS#12密鑰庫,包括節(jié)點證書,節(jié)點密鑰和CA證書。

  3. 將節(jié)點證書復(fù)制到適當?shù)奈恢谩?/p>

  4. 將elastic-stack-ca.p12和elastic-certificates.p12復(fù)制到其他節(jié)點

  5. 配置elasticsearch.yml文件:

    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

  1. 設(shè)置密碼

  2. 報錯

    {
        "error": {
            "root_cause": [
                {
                    "type": "security_exception",
                    "reason": "current license is non-compliant for [security]",
                    "license.expired.feature": "security"
                }
            ],
            "type": "security_exception",
            "reason": "current license is non-compliant for [security]",
            "license.expired.feature": "security"
        },
        "status": 403
    }
    

<font color="blue">結(jié)論:</font> 開源基礎(chǔ)版,無法使用安全功能

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容