- 從 ES 5 開始,支援 Development 和 Production 兩種執行模式
- 開發模式
- 生產模式
- 一個叢集在 Production Mode 時,啟動時必須通過所有 Bootstrap 檢測,否則會啟動失敗
- Bootstrap Checks 可以分為兩類:JVM & Linux Checks。Linux Checks 只針對 Linux 系統
https://www.elastic.co/guide/en/elasticsea...
- 從 ES 6 開始, 只支援 64 位 的JVM
- 配置 config / jvm.options
- 避免修改預設配置
- Xmx 設定不要超過實體記憶體的 50%;單個節點上,最大記憶體建議不要超過 32 G 記憶體
- 生產環境,JVM 必須使用 Server 模式
- 關閉 JVM Swapping
- 靜態設定和動態設定
- 靜態配置檔案儘量簡潔:按照文件設定所有相 關係統引數。 elasticsearch.yml 配置檔案 中儘量只寫必備引數
- 其他的設定項可以通過 API 動態進行設定。 動態設定分 transient 和 persistent 兩種, 都會覆蓋 elasticsearch.yaml 中的設定
- Transient 在叢集重啟後會丟失
- Persistent 在叢集中重啟後不會丟失
- 參照文件 “Setup Elasticsearch > Important System Configuration”
- Disable Swapping , Increase file descriptor,虛擬記憶體,number of thread
- 單個叢集不要跨資料中心進行部署(不要使用 WAN)
- 節點之間的 hops 越少越好
- 如果有多塊網路卡,最好將 transport 和 http 繫結到不同的網路卡,並設定不同的防火牆 Rules
- 按需為 Coordinating Node 或 Ingest Node 配置負載均衡
- 記憶體大小要根據 Node 需要儲存的資料來進行估算
- 搜尋類的比例建議: 1:16
- 日誌類: 1:48 - 1:96 之間
- 總資料量 1 T, 設定一個副本 = 2T 總資料量
- 如果搜尋類的專案,每個節點 31 *16 = 496 G,加上預留空間。所以每個節點最多 400 G 資料,至少需 要 5 個資料節點
- 如果是日誌類專案,每個節點 31*50 = 1550 GB,2 個資料節點 即可
- 推薦使用 SSD,使用本地儲存(Local Disk)。避免使用 SAN NFS / AWS / Azure filesystem
- 可以在本地指定多個 “path.data”,以支援使用多塊磁碟
- ES 本身提供了很好的 HA 機制;無需使用 RAID 1/5/10
- 可以在 Warm 節點上使用 Spinning Disk,但是需要關閉 Concurrent Merges
- Index.merge.scheduler.max_thread_count: 1
- Trim 你的 SSD
- https://www.elastic.co/blog/is-your-elasti...
- 建議使用中等配置的機器,不建議使用過於強勁的硬體配置
- Medium machine over large machine
- 不建議在一臺伺服器上執行多個節點
- 為 Relocation 和 Recovery 設定限流,避免過多工對叢集產生效能影響
- Recovery
- Cluster.routing.allocation.node_concurrent_recoveries: 2
- Relocation
- Cluster.routing.allocation.cluster_concurrent_rebalance: 2
- 可以考慮關閉動態索引建立的功能
PUT _cluster/settings { "persistent": { "action.auto_create_index":false } }
- 或者通過模版設定白名單
PUT _cluster/settings { "persistent": { "action.auto_create_index":"logstash-*,.kibana*" } }
- 為 Elasticsearch 和 Kibana 配置安全功能
- 開啟 Authentication & Authorization
- 實現索引和和欄位級的安全控制
- 節點間通訊加密
- Enable HTTPS
- Audit logs
本作品採用《CC 協議》,轉載必須註明作者和本文連結