TL;DR

  • 场景: 单机部署 Elasticsearch 用于开发测试
  • 结论: 单机模式满足小公司业务场景,配置简单易上手
  • 产出: 完整部署流程、JVM 配置、系统参数

ES 单机部署概述

Single-Node Mode

Elasticsearch 是一个分布式全文搜索引擎,支持:

  • 单节点模式(Single-Node Mode)
  • 集群模式(Cluster Mode)

小公司业务场景使用 Single-Node Mode 即可。


官方网站

https://www.elastic.co/cn/downloads/elasticsearch

下载与解压

下载

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz

解压

cd /opt/software/
tar -zxvf elasticsearch-7.3.0-linux-x86_64.tar.gz
mv elasticsearch-7.3.0 ../servers/

配置修改

服务配置

修改 elasticsearch.yml

vim /opt/servers/elasticsearch-7.3.0/config/elasticsearch.yml
  • 单机安装请取消注释: node.name: node-1
  • 修改网络和端口
# ------------------------------------ Node ------------------------------------
node.name: node-1

JVM 配置

修改 jvm.options

vim /opt/servers/elasticsearch-7.3.0/config/jvm.options

注意: 默认 1G 内存不够用,建议设置 2G:

-Xms2g
-Xmx2g

用户与权限

创建用户

ES 默认不允许 root 用户启动:

useradd es_server
passwd es_server

授权

chown -R es_server /opt/servers/elasticsearch-7.3.0

系统参数配置

修改 sysctl.conf

ES 需要创建大量索引文件,需要调整内核参数:

vim /etc/sysctl.conf

末尾添加:

vm.max_map_count=655360

执行生效:

sysctl -p

修改 limits.conf

修改文件描述符限制:

vim /etc/security/limits.conf

末尾添加:

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

启动服务

切换用户

su es_server

启动

/opt/servers/elasticsearch-7.3.0/bin/elasticsearch

后台启动

/opt/servers/elasticsearch-7.3.0/bin/elasticsearch -d

访问服务

验证

http://h121.wzk.icu:9200

返回结果

{
  "name": "node-1",
  "cluster_name": "elasticsearch",
  "cluster_uuid": "zv9WF53-RfKO1xNaIxt3uA",
  "version": {
    "number": "8.15.0",
    "build_flavor": "default",
    "build_type": "tar",
    "build_hash": "1a77947f34deddb41af25e6f0ddb8e830159c179",
    "build_date": "2024-08-05T10:05:34.233336849Z",
    "build_snapshot": false,
    "lucene_version": "9.11.1",
    "minimum_wire_compatibility_version": "7.17.0",
    "minimum_index_compatibility_version": "7.0.0"
  },
  "tagline": "You Know, for Search"
}

部署最佳实践

集群规划

  • 设置主节点、数据节点、协调节点等不同角色
  • 设置合理的分片和副本数,确保性能与容错

安全性

  • 使用 X-Pack 进行用户认证和角色管理
  • 配置 TLS/SSL 加密通信,保障数据传输安全

性能优化

  • 合理设置 index.refresh_interval 以减少开销
  • 使用 index.max_result_window 调整查询结果数量限制
  • 启用 shard allocation awareness,确保分片在不同的物理节点上分布

错误速查

症状根因修复
内存不足JVM 堆设置过大/物理内存不足调小 -Xms2g -Xmx2g
文件描述符 too lowlimits.conf 未生效重启或重新登录
max_map_count too low内核参数未设置sysctl -p 生效
拒绝 root 运行ES 不允许 root 启动创建普通用户
端口被占用9200/9300 端口占用检查端口或修改配置