Elasticsearch重要配置


雖然Elasticsearch需要很少的配置,但是有一些設置需要手動配置,並且必須在進入生產之前進行配置。

  • path.data  and path.logs
  • cluster.name
  • node.name
  • bootstrap.memory_lock
  • network.host
  • discovery.zen.ping.unicast.hosts
  • discovery.zen.minimum_master_nodes

path.data and path.logs

如果您正在使用.zip.tar.gz文件歸檔datalogs 目錄在 $ES_HOME 如果這些重要文件夾保留在默認位置,則Elasticsearch升級到新版本時,很有可能被刪除。

在生產中使用,肯定要更改數據和日志文件夾的位置:

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

RPM和Debian的安裝包已經使用了自定義的data和logs路徑。

 path.data  選項可以同時指定多個路徑,所有的路徑都會被用來存儲數據(但所有屬於同一個分片的文件,都會全部保存到同一個數據路徑)

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

cluster.name

某個節點只有和集群下的其他節點共享它的 cluster.name  才能加入一個集群。默認是elasticsearch,但是應該修改為更恰當的,用於描述集群目的的名稱。

cluster.name: logging-prod

一定要確保不要在不同的環境中使用相同的集群名稱。否則,節點可能會加入錯誤的集群中。

cluster.name

默認情況下,Elasticsearch 將使用隨機生成的uuid的前7個字符作為節點id,請注意,節點ID是持久化的,並且在節點重新啟動時不會更改,因此默認節點名稱也不會更改。

推薦為節點配置更有意義的名稱。

node.name: prod-data-2

也可以使用服務器的 HOSTNAME  作為節點的名稱。

node.name: ${HOSTNAME}

bootstrap.memory_lock

由於當jvm開始swapping時es的效率會降低,所以要保證它不swap,這對節點健康極其重要。實現這一目標的一種方法是將 bootstrap.memory_lock 設置為true

要使此設置有效,首先需要配置其他系統設置。有關如何正確設置內存鎖定的更多詳細信息,請參閱啟用bootstrap.memory_lock

network.host

默認情況下,Elasticsearch 僅僅綁定回環地址,比如127.0.0.1 和[::1] 。這足以在服務器上運行單個開發節點。

事實上,一台機器上可以啟動多個節點這可對於測試Elasticsearch集群的能力很有用,但不推薦用於生產。

為了與其他服務器上的節點進行通信並形成集群,你的節點將需要綁定到非環回地址。雖然這里有很多網絡相關的配置,但通常只需要配置一下 network.host 

network.host: 192.168.1.10

 network.host 設置一些特殊值也是可以的,比如 _local_, _site_, _global_ ,ip4,ip6。更多詳情請參考 “Special values for network.host”.

一旦自定義設置了 network.host ,Elasticsearch 會假定你正在從開發模式轉移到生產模式,並將許多系統啟動檢查從警告升級到異常。有關詳細信息,請參閱Development mode vs production mode”。

discovery.zen.ping.unicast.hosts

開箱即用,沒有任何網絡配置情況下,Elasticsearch將綁定到可用的回環地址,並會掃描端口9300至9305以嘗試連接到同一服務器上運行的其他節點。這提供了一個自動集群體驗,而無需執行任何配置。

如果想和其他服務器的節點形成一個集群,你必須提供集群中其它節點的列表。可以通過以下方式指定:

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

如果沒有指定端口,將默認為 transport.profiles.default.port 並回退 transport.tcp.port 。

如果輸入的是主機名,被解析成多個地址,將會嘗試連接所有地址。

discovery.zen.minimum_master_nodes

為了防止數據丟失, discovery.zen.minimum_master_nodes 配置至關重要, 以便每個候選主節點知道為了形成集群而必須可見最少數量的候選主節點

沒有這種設置,遇到網絡故障的群集有可能將群集分成兩個獨立的群集(腦裂), 這將導致數據丟失。更詳細的解釋在Avoiding split brain with minimum_master_nodes ” 中提供

為了避免腦裂,候選主節點的數量應該設置為:

(master_eligible_nodes / 2) + 1

換句話說,如果現在有3個節點,最小候選主節點數應該是(3/2)+1=2:

discovery.zen.minimum_master_nodes: 2

官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#path-settings

參考文檔

https://github.com/13428282016/elasticsearch-CN/wiki/es-setup--elasticsearch

ElasticSearch入門 第二篇:集群配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM