ElasticSearch7.6學習日記之設置ElasticSearch:配置ElasticSearch

1.配置ElasticSearch

配置文件位置

Elasticsearch具有三個配置文件:

  • elasticsearch.yml 用於配置Elasticsearch
  • jvm.options 用於配置Elasticsearch JVM設置
  • log4j2.properties 用於配置Elasticsearch日誌記錄

這些文件位於config目錄中,其默認位置取決於安裝是來自壓縮包發行版(tar.gz或 zip)還是軟件包發行版(Debian或RPM軟件包)。

對於tar.gz或者zip,配置目錄位置默認爲 $ES_HOME/config。可以通過ES_PATH_CONF環境變量來更改config目錄的位置, 如下所示:

ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch

或者,您可以通過Shell命令export來配置ES_PATH_CONF環境變量。

對於軟件包分發,config目錄位置默認爲 /etc/elasticsearch。config目錄的位置也可以通過ES_PATH_CONF環境變量來更改,但是請注意,在您的shell中進行設置是不夠的。而是,此變量來自 /etc/default/elasticsearch(對於Debian軟件包)和 /etc/sysconfig/elasticsearch(對於RPM軟件包)。您將需要相應地ES_PATH_CONF=/etc/elasticsearch在這些文件之一中編輯 條目,以更改配置目錄位置。

配置文件格式

配置格式爲YAML。這是更改數據和日誌目錄的路徑的示例:

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

也可以按照以下方式設置:

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

環境變量替換

在配置文件中用${...}符號引用的環境變量將替換爲環境變量的值,例如:

node.name:    ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}

2.設置JVM選項

您幾乎不需要更改JVM選項。如果這樣做,最有可能是更改堆大小。本文檔的其餘部分詳細說明了如何設置JVM選項。您可以使用jvm.options文件或ES_JAVA_OPTS環境變量來設置選項。

設置JVM選項(包括系統屬性和JVM標誌)的首選方法是通過jvm.options配置文件。該文件的默認位置是config/jvm.options(從tar或zip發行版/etc/elasticsearch/jvm.options安裝時)和(從Debian或RPM軟件包安裝時)。

該文件包含遵循特殊語法的以行分隔的JVM參數列表:

  • 僅由空格組成的行將被忽略
  • 以開頭的行#被視爲註釋,並被忽略

  • 以一個-開頭的被視爲獨立於JVM版本而應用的JVM選項

    - Xmx2g

     

  • 以數字開頭,:後接一個-被視爲僅在JVM版本與該數字匹配時才適用的JVM選項

    8:-Xmx2g

     

  • 以數字開頭,-後接:-被視爲JVM選項,僅在JVM版本大於或等於該數字時才適用

    8-:-Xmx2g

     

  • 以數字開頭,-後接數字,後跟一個:-被視爲JVM選項,僅當JVM版本在兩個數字範圍內時才適用

    8-9:-Xmx2g

     

  • 其他所有形式均被拒絕

您可以將自定義JVM標誌添加到此文件,然後將此配置簽入版本控制系統。

設置Java虛擬機選項的另一種機制是通過 ES_JAVA_OPTS環境變量。例如:

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch

使用RPM或Debian軟件包時,ES_JAVA_OPTS可以在系統配置文件中指定 。

JVM具有用於觀察JAVA_TOOL_OPTIONS 環境變量的內置機制。我們有意在打包腳本中忽略此環境變量。這樣做的主要原因是,在某些操作系統(例如Ubuntu)上,默認情況下通過此環境變量安裝了代理,我們不希望它們干擾Elasticsearch。

此外,其他一些Java程序也支持JAVA_OPTS環境變量。這不是 JVM內置的機制,而是生態系統中的約定。但是,我們不支持此環境變量,而是通過上述jvm.options文件或環境變量來支持設置JVM選項ES_JAVA_OPTS

3.安全設置

某些設置是敏感的,僅依靠文件系統權限來保護其值是不夠的。對於此用例,Elasticsearch提供了密鑰庫和用於管理密鑰庫中設置的elasticsearch-keystore工具

僅在重新啓動Elasticsearch之後,對密鑰庫的所有修改纔會生效。

這些設置與elasticsearch.yml配置文件中的常規設置一樣,需要在集羣的每個節點上指定。當前,所有安全設置都是特定於節點的設置,在每個節點上必須具有相同的值。

可重新加載的安全設置

就像設置elasticsearch.yml一樣,對密鑰庫內容的更改不會自動應用於正在運行的Elasticsearch節點。修改完成之後需要重新啓動節點。但是,某些安全設置被標記爲 可重載。可以重新讀取此類設置並將其應用到正在運行的節點上。

所有安全設置(可重新加載或不可重新加載)的值在所有羣集節點上必須相同。進行所需的安全設置更改後,使用以下bin/elasticsearch-keystore add命令,調用:

POST _nodes/reload_secure_settings

該API在每個羣集節點上解密並重新讀取整個密鑰庫,但僅應用於可重載的安全設置。直到下一次重新啓動,對其他設置的更改纔會生效。調用返回後,重新加載已完成,這意味着依賴於這些設置的所有內部數據結構均已更改。從頭開始,所有設置看起來都應該具有新值。

更改多個可重新加載的安全設置時,請在每個羣集節點上修改所有這些設置,然後發出reload_secure_settings呼叫,而不是在每次修改後重新加載。

4.記錄配置

Elasticsearch使用Log4j 2進行日誌記錄。可以使用log4j2.properties文件配置Log4j 2。Elasticsearch公開三個屬性${sys:es.logs.base_path}, ${sys:es.logs.cluster_name}以及${sys:es.logs.node_name}可以在配置文件中引用,以確定日誌文件的位置。該屬性${sys:es.logs.base_path}將解析爲日誌目錄, ${sys:es.logs.cluster_name}將解析爲羣集名稱(在默認配置中用作日誌文件名的前綴), ${sys:es.logs.node_name}並將解析爲節點名稱(如果顯式設置了節點名稱)。

例如,如果你的日誌目錄(path.logs)是/var/log/elasticsearch和您的羣集名爲production然後${sys:es.logs.base_path}將解析/var/log/elasticsearch和 ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log 將解析/var/log/elasticsearch/production.log

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章