Skip to content

首次生产部署 ​

硬件规划 ​

组件建议
内存≥ 32G(堆内存设为物理内存一半左右,且 ≤ 32G,其余为 OS 文件缓存及其他非堆内存开销预留)
磁盘SSD,IOPS ≥ 10000,多盘用 RAID 或 LVM 合并为单一文件系统
CPU≥ 8 核
网络万兆网卡(集群内部通信)

上表为首次部署的示例性估算值,不是 Elasticsearch 官方通用要求,也不是最低要求。实际规格需按压测结果与峰值负载确定,并验证副本分布、节点冗余与故障恢复能力。

节点角色规划 ​

角色建议规模说明
master3专用 master,不存数据(三节点为常见方案,非固定拓扑)
data_hot≥ 2热数据节点,SSD
data_warm≥ 2温数据节点,HDD(可选)
ingest≥ 2预处理节点(可选)
coordinating≥ 2协调节点(可选)

关键配置 ​

yaml
# elasticsearch.yml
cluster.name: production-cluster
node.name: node-1
node.roles: [master]

network.host: 10.0.0.1  # 示例:绑定内网网卡 IP,并配合网络层访问控制限制访问范围
http.port: 9200
transport.port: 9300

discovery.seed_hosts: ["master-1", "master-2", "master-3"]
# 仅用于全新集群的首次引导,集群形成后必须从所有节点移除
cluster.initial_master_nodes: ["master-1", "master-2", "master-3"]

# 安全(传输层 TLS 需配置证书与信任关系,自动安全配置生成的证书需按部署方式管理生命周期)
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

# 路径(多盘建议用 RAID/LVM 合并为单一文件系统)
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch

cluster.initial_master_nodes 只用于全新集群的首次引导。首次成功形成集群后,从所有节点删除该参数,后续节点加入与集群重启依赖 discovery.seed_hosts 等发现配置,不要再设置它,否则在特定错误配置下可能引导出另一个集群。

JVM 配置 ​

bash
# jvm.options
-Xms16g
-Xmx16g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200  # 可选:暂停时间目标,非硬性上限

安全加固 ​

bash
# 8.x:设置或重置 elastic 内置用户密码
bin/elasticsearch-reset-password -u elastic -i
# 7.x 及更早版本使用
# bin/elasticsearch-setup-passwords interactive

# 创建只读用户(密码用占位符替换,不要复用示例密码)
POST /_security/role/read_only
{ "indices": [{ "names": ["*"], "privileges": ["read"] }] }

POST /_security/user/readonly
{ "password": "<your-password>", "roles": ["read_only"] }

监控 ​

指标说明告警阈值诊断入口
集群健康状态green/yellow/redred 立即告警;yellow 按容忍度设持续时间_cluster/health
节点磁盘使用率数据盘空间> 80% 告警_cat/allocation
JVM 堆使用率堆内存> 75% 告警_nodes/stats/jvm
GC 暂停时间单次 GC 暂停时长> 1s 告警GC 日志 / 监控采集单次暂停事件
搜索延迟P99 查询耗时> 500ms 告警应用侧 / APM 耗时分布
索引速率每秒写入文档数基线监控按时间窗口的写入计数差值
未分配分片分片分配失败> 0 告警_cat/shards 定位 + _cluster/allocation/explain 分析

阈值为初始参考值,最终需按业务 SLO 与压测结果调整。

Released under the MIT License.