硬件选型
1. 硬件需求概述
| 资源 | 需求等级 | 说明 |
|---|---|---|
| 内存 | ⭐⭐⭐⭐⭐ | 最重要,影响查询性能和缓存 |
| 磁盘 IO | ⭐⭐⭐⭐ | 影响写入和查询速度 |
| CPU | ⭐⭐⭐ | 影响聚合和排序性能 |
| 网络 | ⭐⭐ | 影响集群通信和数据迁移 |
2. 存储选型
| 类型 | 适用场景 | IOPS(参考值) | 成本 |
|---|---|---|---|
| NVMe SSD | Hot 节点、搜索密集 | 100K+ | 高 |
| SATA SSD | Hot/Warm 节点 | 10K~50K | 中 |
| HDD | Warm/Cold 节点 | 100~200 | 低 |
| 云盘 (gp3) | 云环境通用 | 可配置 | 中 |
上表 IOPS 为特定测试条件下的参考值,仅供粗略量级参考,实际取决于块大小、读写比例、队列深度与设备型号。选型时应结合随机读延迟、持续写入吞吐与访问模式(查询频率、延迟目标、数据保留策略)判断,而非只看 IOPS 数字。
yaml
# 每个节点使用单一数据路径
path.data: /data/esdata需要整合多块磁盘时,在操作系统层用 RAID 或 LVM 合并后作为单一
path.data使用;独立扩展容量时优先新增数据节点。Elasticsearch 的多数据路径(path.data以逗号分隔多个目录)自 7.13 弃用、8.0 起移除。
3. 内存配置
| 场景 | 内存建议 | 说明 |
|---|---|---|
| 小型集群 | 16~32GB | 堆 8~16GB |
| 中型集群 | 64~128GB | 堆 16~26GB |
| 大型集群 | 128~256GB | 堆约 26GB + 大量 OS 缓存 |
核心原则:堆内存不超过物理内存的 50%,留给文件系统缓存;同时不超过 JVM 压缩对象指针(compressed oops)的阈值。该阈值随系统而异,多数环境下约 26GB 是更稳妥的参考值,部分系统可接近 30GB。可通过
GET /_nodes/_all/jvm查看using_compressed_ordinary_object_pointers确认压缩指针是否生效。
4. CPU 选型
| 场景 | CPU 建议 |
|---|---|
| 搜索密集 | 高主频(3.0GHz+),核心数适中 |
| 聚合密集 | 多核心(16+),主频适中 |
| 写入密集 | 多核心 + 高主频 |
| 通用场景 | 8~16 核,2.5GHz+ |
5. 网络配置
| 配置 | 建议 |
|---|---|
| 带宽 | ≥ 10Gbps(生产环境) |
| 延迟 | < 1ms(同机房) |
| 节点间通信 | 同一机房/可用区 |
以上为生产环境典型建议,实际带宽与延迟取决于写入吞吐、分片迁移量与查询并发,应以压测结果为准。
6. 云环境配置
以下实例与存储为示例配置,需结合预期数据量、写入吞吐、查询并发、副本数与保留周期压测验证,不可直接当作生产通用基线;Warm 节点选用 HDD 前需确认访问模式与延迟目标。
6.1 AWS 推荐
| 节点类型 | 实例类型 | 存储 |
|---|---|---|
| Hot Data | r6i.xlarge | gp3 SSD |
| Warm Data | r6i.xlarge | st1 HDD |
| Master | m6i.large | gp3 |
6.2 阿里云推荐
| 节点类型 | 实例类型 | 存储 |
|---|---|---|
| Hot Data | ecs.r6.xlarge | ESSD PL1 |
| Warm Data | ecs.r6.xlarge | 高效云盘 |
| Master | ecs.g6.large | ESSD PL1 |
7. 硬件配置示例
以下为待验证的规格清单(非 Elasticsearch 配置文件),非默认推荐值;最终规格以实际负载的 GC、堆占用与文件系统缓存命中情况为准。
yaml
# Hot 节点(搜索/写入密集)
CPU: 16 核 (3.0GHz+)
内存: 64GB(堆约 26GB)
存储: 2TB NVMe SSD
网络: 10Gbps
# Warm 节点(数据存储)
CPU: 8 核
内存: 32GB(堆 16GB)
存储: 8TB HDD
网络: 10Gbps
# Master 节点(集群管理)
CPU: 4 核
内存: 8GB(堆 4GB)
存储: 100GB SSD
网络: 1Gbps8. 最佳实践
- Hot 节点使用 SSD,Warm/Cold 节点可使用 HDD
- 堆内存不超过物理内存的 50%,且不超过 JVM 压缩对象指针阈值(随系统而异,多数环境约 26GB)
- 留足够内存给文件系统缓存
- 生产环境网络带宽 ≥ 10Gbps
- 使用
bootstrap.memory_lock: true请求锁定内存,是否生效取决于系统权限与 ulimit 限制 - 磁盘整合走 RAID/LVM 或新增数据节点,不用多路径
path.data - 定期监控硬件资源使用率
9. 容量规划与诊断
9.1 容量规划
- 按原始数据增长量与保留周期估算总存储需求。
- 分别计算副本带来的存储开销、磁盘水位线约束,以及节点故障或扩容期间的恢复余量(15% 仅为初步估算示例,非固定要求)。
- 预留故障恢复空间与增长余量。
- 按查询密集、写入密集、历史检索等工作负载取舍 CPU、内存与存储。
9.2 诊断对照
表中症状仅作线索,需结合观测指标确认瓶颈后再做硬件决策,避免把症状直接等同于硬件原因。
| 症状 | 观测指标 | 确认瓶颈后的决策 |
|---|---|---|
| 查询延迟高、缓存命中低 | 页缓存命中、磁盘读 | 增加内存或换更快存储 |
| 写入积压、IO 等待高 | 磁盘读写延迟、队列 | 换更高 IOPS 存储或分散写入 |
| 聚合排序慢、CPU 饱和 | CPU 利用率、查询耗时 | 更多核心或更高主频 |