Elasticsearch部署关键在系统配置、核心参数与JVM调优。必须创建专用用户、调高文件句柄数和vm.max_map_count;elasticsearch.yml需设cluster.name、node.name、network.host等;JVM堆内存Xms/Xmx须相等且合理;启动前前台验证日志,再curl测试接口。
直接上手部署 Elasticsearch,关键不在“装”,而在“配稳、跑通、防坑”。多数启动失败不是版本不对,而是系统限制没调、用户权限错、内存设小或网络没放开。下面按真实生产节奏分步说清。
Linux 下不提前调参数,90% 会卡在启动报错。三件事缺一不可:
useradd es && passwd es,后续所有操作切到该用户/etc/security/limits.conf,追加两行es soft nofile 65536
es hard nofile 65536
sudo sysctl -w vm.max_map_count=262144,并写入 /etc/sysctl.conf 永久生效这个文件决定服务能不能被访问、集群能不能组起来。单机开发和生产集群改法不同,但以下几项必设:
cluster.name: my-es-cluster(别用默认名,避免误连其他集群)node.name: node-1(节点唯一标识,建议带主机信息如 node-prod-01)network.host: 0.0.0.0(若只本地用可写 127.0.0.1;外网访问必须配此项 + 防火墙放行)http.port: 9200(确认端口未被占用,可用 netstat -tulnp | grep 9200 查)discovery.type: single-node(跳过集群发现逻辑,避免启动卡住)discovery.seed_hosts: ["192.168.1.10", "192.168.1.11"] 和 cluster.initial_master_nodes: ["node-1", "node-2"]
ES 自带 JDK,但 config/jvm.options 里堆内存必须手动设——默认 1G 对多数场景太小,且 Xms 和 Xmx 必须相等:
-Xms1g -Xmx1g
-Xms4g -Xmx4g,不超过物理内存 50%-Xms1g -Xmx8g,动态扩容易触发 GC 风暴别急着后台启动,先前台运行看日志是否干净:
su - es
./bin/elasticsearch
started,且无 ERROR 或 WARN 堆栈curl -X GET "http://localhost:9200/?pretty",返回含 "name" : "node-1" 和版本号的 JSON 即通sudo firewall-cmd --add-port=9200/tcp --permanent && sudo firewall-cmd --reload