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 | 大数据 |