Elasticsearch 5:集群設置與管理(第二篇)

本文章包含有關如何設置Elasticsearch並使其運行的配置。包括es的配置、伺服器系統配置、es節點的停止。

說到es的搭建過程,主要涉及到兩個配置文件修改,

elasticsearch.yml for configuring Elasticsearch

log4j2.properties for configuring Elasticsearch logging.

  • es的重要配置參數:

1、path.data and path.logs:數據路徑日誌路徑

2、cluster.name:集群名稱,節點只能在與集群中的所有其他節點共享同一個cluster.name時才能加入集群

3、node.name:節點名稱

4、bootstrap.memory_lock:

伺服器發生系統swapping的時候ES節點的性能會非常差,也會影響節點的穩定性。所以要不惜一切代價來避免swapping。swapping會導致Java GC的周期延遲從毫秒級惡化到分鐘,更嚴重的是會引起節點響應延遲甚至脫離集群。

這個參數的目的是當你無法關閉系統的swap的時候,建議把這個參數設為true。防止在內存不夠用的時候,elasticsearch的內存被交換至交換區,導致性能驟降

5、network.host:節點綁定IP地址

6、discovery.zen.minimum_master_nodes:最小節點數量

所謂腦裂問題(類似於精神分裂),就是同一個集群中的不同節點,對於集群的狀態有了不一樣的理解。集群如果6個節點,故障恢復後,有時候可能會形成2個--3節點的集群,導致不能正常工作。

設置為所有可用節點個數加1的50%(如果6個節點數量, 官方的推薦值是(N/2)+1,就是4),將只會有一個4節點的集群。另外2個無法組成一個集群,只能等待重新連接會到集群。

7、discovery.zen.ping.unicast.hosts:集群發現機制的配置,單播配置

單播配置非常簡單,當節點不是集群中的一部分的時候,它會發送一個ping請求給配置文件的所在地址列表,加入集群。

需要與其他伺服器上的節點組成群集時,您必須提供群集中其他節點的種子列表,這些節點可能是活的並且可聯繫的。

discovery.zen.ping.unicast.hosts:

- 192.168.1.10:9300

- 192.168.1.11

- seeds.mydomain.com

注意:千萬不能配置外網地址,這樣就是網路安全大漏洞了,如果沒有配置防火牆的話,互聯網就可以訪問你的集群了

  • es的安全配置:

如果只是依靠文件系統許可權等來保護ela還不夠,它還提供了一個keystore,他可以密碼保護的。

使用elasticsearch-keystore工具管理

1、 .bin/elasticsearch-keystore create 創建一個和es配置同目錄的elasticsearch.keystore文件

2、 .bin/elasticsearch-keystore add key 添加一個key欄位,tool提示輸入值

3、 .bin/elasticsearch-keystore list 列出keystore中所有的命令key

4、 .bin/elasticsearch-keystore remove key 刪除keystore中的命令key

  • 重要的伺服器配置:

1、最重要的打開文件句柄等等(ulimit -n)的數量設置為65536

修改文件/etc/security/limits.conf

2、通過jvm.options設置JVM堆大小

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

需要注意幾點

默認情況下,Elasticsearch通知JVM使用最小和最大大小為2 GB的堆。在轉移到生產環境時,配置堆大小以確保Elasticsearch有足夠的可用堆是非常重要的。

Elasticsearch將通過Xms(最小堆大小)和Xmx(最大堆大小)設置來分配jvm.options中指定的整個堆。

好的經驗法則是:

將最小堆大小(Xms)和最大堆大小(Xmx)設置為相等。

Elasticsearch可用的堆越多,可用於緩存的內存就越多。但是太大的堆可能會使您長時間垃圾收集暫停。

將Xmx設置為不超過物理RAM的50%,以確保有足夠的物理RAM留給內核文件系統緩存。

不要將Xmx設置超過32GB,超過的話就進入到64位的世界裡了,因此對象引用就只能是8位元組了

3、禁用所有交換文件swap

在Linux系統上,可以運行以下命令臨時禁用交換:

sudo swapoff -a

-----

可以修改config/elasticsearch.yml文件來防止任何Elasticsearch內存被換出:

bootstrap.memory_lock:true

4、虛擬內存

對於64位系統,Elasticsearch默認使用mmapfs目錄來存儲其索引。 mmap計數的默認操作系統限制可能太低,這可能會導致內存不足異常。

在Linux上,可以通過以root身份運行以下命令來增加限制:

sysctl -w vm.max_map_count = 262144

要永久設置此值,請更新/etc/sysctl.conf中的vm.max_map_count設置。

要在重新啟動後進行驗證,請運行sysctl vm.max_map_count。

5、線程數

Elasticsearch為不同類型的操作使用了一些線程池。 在需要的時候能夠創建新的線程是非常重要的。

確保Elasticsearch用戶可以創建的線程數至少為2048。

這可以通過在啟動Elasticsearch之前將ulimit -u 2048設置為root來完成,或者通過在/etc/security/limits.conf中將nproc設置為2048來完成。

  • 關閉集群

$ jps | grep Elasticsearch

15516 Elasticsearch

$ kill -SIGTERM 15516

謝謝


推薦閱讀:

從Elasticsearch來看分散式系統架構設計
Elasticsearch與Solr的選擇?
日誌分析的模式發現功能實現(1)
多個ElasticSearch Cluster的一致性問題

TAG:Elasticsearch | Solr | 大数据 |