Linux 系统下 Elasticsearch 的安装与配置方法

[复制链接]
发表于 2026-10-6 11:41:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Elasticsearch 是 Elastic 栈里的分布式搜索与分析引擎,日志日志集中检索、全文检索、指标聚合这些场景基本都绕不开它。它启动本身不算复杂,但有两个地方新手容易卡住:一是必须先准备 Java 运行环境,二是出于安全设计不允许 root 直接启动。本文以 Linux 上部署 7.4.0 二进制包为例,把从 JDK 准备、解压、改配置、建用户、调系统参数到 Kibana 联调的完整链路写清楚。

一、准备 Java 运行环境

Elasticsearch 7.x 依然依赖 JDK。虽然官方安装包集成了 JDK,但不少团队习惯自己先装一套,便于统一版本管控。以 JDK 8 为例:

  1. 下载 jdk-8u152-linux-x64 压缩包,解压到 /opt 目录。
  2. 编辑 /etc/profile 追加环境变量:
JAVA_HOME=/opt/jdk1.8.0_152
PATH=/opt/jdk1.8.0_152/binPATH
export JAVA_HOME PATH

保存后执行 source /etc/profile,再用 java -version 验证。注意 ES 7.4 对 JDK 8 支持完好,但若混用 JDK 11/17,需要额外关注启动参数与模块化限制。

二、下载并解压安装包

官方中文站点的下载页是获取安装包最直接的位置。下载得到 elasticsearch-7.4.0-linux-x86_64.tar.gz 后,解压到 /opt(注意 -C 后面跟的是大写字母 C):

tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt

解压后会得到一个带版本号的目录,后续配置路径都以此为准,避免以后版本升级时路径失效。

三、修改 elasticsearch.yml

编辑 /opt/elasticsearch-7.4.0/config/elasticsearch.yml:

cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]

各行的含义与默认值如下:

  • cluster.name:集群名,默认就叫 elasticsearch;改名可以让多套环境互不干扰。
  • node.name:节点名,不填会随机分配一个,生产环境建议固定便于排障。
  • network.host:填 0.0.0.0 表示监听全部网卡、允许外网访问;只在本机用就填 127.0.0.1,安全性更好。
  • http.port:HTTP 接口端口,默认 9200。
  • cluster.initial_master_nodes:首次初始化新集群时用来投票选出 master,仅在集群第一次启动时填写,之后稳定运行的集群里保留也无害,但重复执行初始化会导致数据异常。

四、创建专用运行用户

出于安全考虑,Elasticsearch 明确禁止 root 用户直接运行,必须新建普通用户。

useradd esuser
passwd esuser

然后把安装目录的所有权交给这个用户,否则后面启动会报权限错误:

chown -R esuser:esuser /opt/elasticsearch-7.4.0

五、调系统内核参数

ES 对文件句柄和虚拟内存有硬性要求,默认值不满足会在启动阶段直接失败。以下三处都要改。

5.1 用户文件句柄上限

编辑 /etc/security/limits.conf 追加:

esuser soft nofile 65536
esuser hard nofile 65536

再编辑 /etc/security/limits.d/20-nproc.conf 追加同样的两行,并把通配那一行降下来以限制总进程数:

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

这里 * 代表 Linux 上的全部用户,限制不清零会导致 fork 失败。

5.2 虚拟内存区域数量

编辑 /etc/sysctl.conf 追加一行:

vm.max_map_count=655360

然后让参数立刻生效:

sysctl -p

六、启动与验证

开发测试环境可以临时关闭防火墙省事,生产环境请改为只放通 9200 端口:

systemctl stop firewalld

切换到专用用户后台启动:

su - esuser
cd /opt/elasticsearch-7.4.0
./bin/elasticsearch -d -p /tmp/es.pid

稍等几十秒,浏览器或命令行访问 http://主机IP:9200/,返回包含版本号与集群名称的 JSON 即说明正常。

七、安装并配置 Kibana

Kibana 是 ES 的可视化界面,二进制包单独下载,同样解压到 /opt:

tar -xzf kibana-7.4.0-linux-x86_64.tar.gz -C /opt

编辑 /opt/kibana-7.4.0-linux-x86_64/config/kibana.yml:

server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
elasticsearch.requestTimeout: 30000
  • server.port:Kibana 自身 Web 端口,默认 5601。
  • server.host:填 0.0.0.0 表示可被远程访问;只本机用填 127.0.0.1。
  • server.name:服务名,仅标识用途。
  • elasticsearch.hosts:指向 ES 的地址。
  • elasticsearch.requestTimeout:请求 ES 的超时时间,默认 30000 毫秒,大结果集场景可以适当调大。

启动 Kibana(7.x 自带 JDK,可用 root 加 --allow-root 启动测试环境实例,生产仍建议专用账号):

cd /opt/kibana-7.4.0-linux-x86_64/bin
./kibana --allow-root

浏览器打开 http://主机IP:5601 即可。注意 ES 与 Kibana 必须同时处于运行状态,否则界面会提示连接不可用。

八、生产环境还要补的几件事

  • 堆内存:修改 config/jvm.options,堆一般设为物理内存的一半且不超过 31GB,避免 GC 与压缩指针带来的性能拐点。
  • 数据目录与日志日志目录:默认放在安装目录下,线上建议单独挂载磁盘,便于扩容与备份。
  • 安全加固:7.x 默认开启安全特性时需要通过账号密码访问;开放 0.0.0.0 又不开认证等于把数据裸奔在公网,务必搭配防火墙与反向代理。
  • 内存锁定:在 elasticsearch.yml 加 bootstrap.memory_lock: true 并配置 memlock,防止 swap 拖垮查询性能。
  • 集群扩展:多节点部署时把 discovery.seed_hosts 与 cluster.initial_master_nodes 一起规划好,节点数保持奇数便于选举。

整体流程并不长,真正的坑集中在 limits 与 sysctl 这两处系统参数上——它们一旦没配够,报错信息往往指向别处,容易误判为安装包问题。按上面顺序做完,再补上生产环境的内存与权限规划,一套可用的搜索与分析平台就立住了。

qidao123.com企服评测-应用市场 编辑提示:本文根据公开安装手册与实际部署经验整理,未引用任何外部链接与截图;文中用户名、版本号、路径均为示例,落地时请替换为你自己的环境参数,并在生产变更前做好数据备份。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表