Linux怎么安装和配置Elasticsearch 8.x Linux全文检索集群详解

冬墨酱_8248

冬墨酱_8248

2026-05-14

482人浏览

原创

es 8.x 生产环境必须手动配置安全、https证书和节点通信:默认强制启用xpack安全与https,curl返回401或连接拒绝多因未配证书或9300端口被防火墙/selinux拦截;rpm安装易因jvm内存超限(如-xms4g)或权限错误静默失败;discovery.seed_hosts与cluster.initial_master_nodes须严格按节点名和ip:port填写,且node.name不可含下划线。

linux怎么安装和配置elasticsearch 8.x linux全文检索集群详解

ES 8.x 在 Linux 上不能靠“装完就跑”应付生产环境,安全、通信、证书这三关不手动过一遍,集群根本起不来——哪怕配置全对,curl http://localhost:9200 返回 401 或连接拒绝,大概率是 HTTPS 强制启用后没配证书,或者节点间 9300 端口被防火墙/SELinux 拦了。

为什么 elasticsearch-8.17.3.rpm 安装后起不来?

rpm 包自带 JDK 17,但默认 jvm.options 里堆内存设为 -Xms4g -Xmx4g,而很多测试机只有 2–4GB 总内存,启动直接 OOM。另外 rpm 安装会把配置文件放在 /etc/elasticsearch/,日志在 /var/log/elasticsearch/,但权限常卡在 elasticsearch 用户上,如果你用 root 启动或改过目录属主,systemctl start elasticsearch 会静默失败。

  • 先检查 sudo journalctl -u elasticsearch -n 50 --no-pager,重点看 java.lang.OutOfMemoryError 或 Permission denied
  • 编辑 /etc/elasticsearch/jvm.options,把 -Xms4g -Xmx4g 改成 -Xms2g -Xmx2g(单节点测试)或更低
  • 确认 /var/lib/elasticsearch 和 /var/log/elasticsearch 所有者是 elasticsearch:elasticsearch,执行 sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch /var/log/elasticsearch
  • 关闭 swap:ES 8.x 默认要求 bootstrap.memory_lock: true,必须关 swap,否则报错 memory locking requested for elasticsearch process but memory is not locked,执行 sudo swapoff -a 并注释 /etc/fstab 中 swap 行

elasticsearch.yml 里 discovery.seed_hosts 和 cluster.initial_master_nodes 到底填什么?

这两个参数不是可选的——ES 8.x 启动时强制校验,填错或漏填会导致节点卡在 “waiting to join cluster”,日志里反复出现 master_not_discovered_exception。它们不是 IP 列表,而是「能互相连通的候选主节点名称」的集合,且必须与各节点的 node.name 完全一致(包括大小写和中划线)。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • discovery.seed_hosts 填的是其他节点的 host:port,端口是 transport 端口(默认 9300),例如 ["192.168.1.10:9300", "192.168.1.11:9300"];注意不能填域名除非 /etc/hosts 已解析,也不能填 localhost(多机部署时无效)
  • cluster.initial_master_nodes 必须是初始集群中所有可能当选 master 的节点名,例如 ["es-master-1", "es-master-2", "es-master-3"],这个列表只在第一次启动集群时生效,之后增删节点不再修改它
  • 每个节点的 node.name 必须唯一,且不能含下划线(ES 8.x 不允许),推荐用短横线+数字,如 node-1、node-2
  • 确保所有节点的 cluster.name 完全相同,且不含空格或特殊字符

为什么 curl -k https://localhost:9200 返回 unauthorized?

ES 8.x 默认开启安全特性(xpack.security.enabled: true),HTTP 接口强制 HTTPS + 基础认证,不带证书和凭据的请求一律 401。这不是 bug,是设计如此——你必须显式生成凭证、配置 TLS,或临时关闭安全(仅限测试)。

  • 若要保留安全:先用 sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic 重置 elastic 用户密码,再用 curl -k -u elastic:<password> https://localhost:9200</password> 测试
  • 若要临时关安全(仅开发):在 elasticsearch.yml 加两行:xpack.security.enabled: false 和 xpack.security.http.ssl.enabled: false,然后重启服务
  • 证书路径必须正确:如果启用了 HTTPS,elasticsearch.yml 中需指定 xpack.security.http.ssl.certificate: /etc/elasticsearch/certs/http.p12 和 xpack.security.http.ssl.key: /etc/elasticsearch/certs/http.p12,且该文件属主必须是 elasticsearch
  • 别忽略 curl -k 的 -k 参数——ES 自签证书默认不被系统信任,不加会报 SSL handshake failed

多节点集群里节点无法互相发现,常见堵点在哪?

节点发现失败,90% 是网络层或系统层拦截,而不是配置写错。ES 日志里看到 failed to resolve host 或 connection refused 时,别急着改 yml,先做三件事。

  • 确认所有节点的 network.host 不是 localhost 或 127.0.0.1,应设为本机可路由 IP(如 192.168.1.10)或 0.0.0.0(生产慎用,需配防火墙)
  • 在任意节点上执行 telnet 192.168.1.11 9300(替换为目标 IP),不通就说明 9300 端口没开或被拦——CentOS/RHEL 默认开 firewalld,需运行 sudo firewall-cmd --add-port=9300/tcp --permanent && sudo firewall-cmd --reload
  • 检查 SELinux:若为 enforcing 模式,ES 的 socket 绑定会被拒,临时关掉验证:sudo setenforce 0;长期方案是写 SELinux 策略或切到 permissive
  • 同一台机器跑多个节点时,必须区分 http.port 和 transport.port,例如 node-1 用 9200/9300,node-2 改成 9201/9301,否则端口冲突直接启动失败

最易被忽略的其实是证书权限和 JVM 锁内存——前者导致 HTTPS 握手失败却不报错具体原因,后者让服务在日志里安静退出。别信“配置没问题就应该起来”,ES 8.x 的容错比 7.x 低得多,每一步都得亲手验证输出,而不是只看 systemctl status。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3870

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3333

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2473

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5950

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5602

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3293

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2785

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3019

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习