雖然Elasticsearch需要很少的配置,但是有一些設置需要手動配置,並且必須在進入生產之前進行配置。 path.data and path.logs cluster.name node.name bootstrap.memory_lock network.host discovery.zen. ...
雖然Elasticsearch需要很少的配置,但是有一些設置需要手動配置,並且必須在進入生產之前進行配置。
path.data
andpath.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文件歸檔
,data
和logs
目錄在 $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
一定要確保不要在不同的環境中使用相同的集群名稱。否則,節點可能會加入錯誤的集群中。
node.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://github.com/13428282016/elasticsearch-CN/wiki/es-setup--elasticsearch