Elasticsearch 9 安装验证实战:start-local 一键部署 + Docker 手动安装踩坑指南

Elasticsearch 9 安装验证实战:start-local 一键部署 + Docker 手动安装踩坑指南

ES 8 用得好好的,要不要升 9?升级前总得先跑起来摸一摸。本文记录一次 Elasticsearch 9 的完整验证过程:官方 start-local 脚本一键拉起 ES+Kibana、手动 Docker 安装的 GPG 密钥坑、Kibana 的 enrollment token 接入,附验证清单和踩坑表。十几分钟就能在测试机拥有一个 9.x 环境。

🔗 相关阅读:环境跑起来之后,用《esrally 压测全流程》摸性能基线;升级生产前先看《快照备份到 NAS》/《备份到 HDFS》——升级的第一原则是先有退路。

Elasticsearch 9 验证:两条部署路线

一、ES 9 带来了什么

评估一个新版本值不值得折腾,先看核心变化(细节以官方 release notes 为准):

  • 底座升级到 Lucene 10:索引与检索性能持续优化,这是 9 系列所有收益的根基
  • ES|QL 持续增强:日志分析场景的查询语言越来越能打
  • 向量检索与 AI 生态:语义检索相关能力继续加码
  • 安全默认更严格:从 8 系延续的默认开启安全、自动生成凭证的思路进一步固化——本文的 enrollment token 就是这套机制的一环

对新版本的正确姿势:先在测试机验证兼容性,再评估升级窗口。下面两条部署路线都能快速起步。

二、最速路线:start-local 一键拉起 ES + Kibana

Elastic 官方的 start-local 脚本是最省事的验证方式,一条命令拉起 ES + Kibana 两个容器(含安全配置):

sudo curl -fsSL https://www.elastic.co/start-local | sudo sh

跑完的输出大致长这样(凭证每台机器随机生成,以下为示意):

🎉 Congrats, Elasticsearch and Kibana are installed and running in Docker!
🌐 Open your browser at http://localhost:5601
   Username: elastic
   Password: <自动生成的随机密码>
🔌 Elasticsearch API endpoint: http://localhost:9200
🔑 API key: <自动生成的 API key>

脚本默认把 8/9 的当前 GA 版本拉起来,容器名、网络、数据卷都自动编排好,凭证务必当场存下来(输出只打印一次)。

三、手动路线:Docker 安装踩坑实录

要精细控制版本和参数时用手动方式。装 Docker 时踩了本次最有意思的一个坑:

3.1 GPG 密钥的管道坑

按官方文档安装 Docker,添加 GPG 密钥这步报错:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# gpg: no valid OpenPGP data found.

根因:管道右侧加了 sudo 后,gpg 以 root 运行,而管道里的数据流经的是当前用户的 shell——某些环境下重定向和 sudo 的组合会读到空流,gpg 拿到空输入就报 no valid OpenPGP data。

解法:两步走,先把文件落盘,再解包:

sudo apt install -y ca-certificates curl gnupg lsb-release

# 1. 下载密钥文件到当前目录
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o docker-gpg
cat docker-gpg   # 正常应显示二进制乱码,空文件说明下载就没成功

# 2. 再解包到 keyrings
sudo gpg --dearmor docker-gpg -o /usr/share/keyrings/docker-archive-keyring.gpg

之后正常走完:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

3.2 内核参数:vm.max_map_count

ES 容器最常见的起不来原因,宿主机必须调:

sudo sysctl -w vm.max_map_count=262144
# 持久化
echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-es.conf

3.3 启动 ES9 容器

docker run -d --name es9 \
  -p 9200:9200 \
  -e discovery.type=single-node \
  -e xpack.security.enabled=true \
  -e ES_JAVA_OPTS="-Xms2g -Xmx2g" \
  -m 4g \
  docker.elastic.co/elasticsearch/elasticsearch:9.2.2

安全开启状态下,容器日志里会打印 elastic 用户的初始密码(docker logs es9 | grep password 可找回)。

四、Kibana 接入:enrollment token

ES 8.2+ 安全自动配置后,Kibana 首次接入需要 enrollment token(一次性令牌,30 分钟有效)。在 ES 容器里生成:

docker exec -it es9 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
# 输出一段 base64 的 token,复制

浏览器打开 http://localhost:5601,粘贴 token,再用 elastic 用户密码登录即完成配对。Kibana 容器方式启动时,也可以把 token 作为环境变量传入。

五、验证清单

检查项命令/位置预期
ES 版本号curl -u elastic:<密码> localhost:9200"number" : "9.x.x"
集群健康GET _cluster/healthstatus 为 green(单节点为 yellow 属正常,无副本可分配)
Kibana 可用浏览器 5601 端口能登录进控制台
旧客户端兼容业务 SDK 连一下8.x 客户端大多兼容 9.x(REST 兼容层),核心链路建议回归

六、踩坑记录表

现象解法
GPG 管道解包失败no valid OpenPGP data found先落盘再 --dearmor,见 3.1
ES 容器启动即退日志报 max virtual memory areas宿主机调 vm.max_map_count=262144
Kibana 登录要 token安全自动配置机制create-enrollment-token -s kibana 生成,30 分钟有效
凭证丢失start-local 输出没存按官方文档重置 elastic 密码,或重建容器(测试环境)
内存不足被 OOM 杀容器消失,dmesg 有 oom-kill-m 限内存 + ES_JAVA_OPTS 堆对齐,测试机 4G 起步

总结

验证新版本的最低成本路径已经跑通:start-local 十分钟起步摸功能,手动 Docker 控版本细节做兼容验证。ES9 的升级决策建议分三步走——测试环境验证(本文)→ 压测对比(esrally)→ 生产灰度升级(先备份!)。整个链路里最容易被忽略的是备份:升级失败能回滚的前提,是快照真的存在。

你们开始评估 ES9 了吗?升级路上撞到什么兼容问题?评论区聊聊。


环境:Ubuntu + Docker;版本 9.2.x;文中密码、token 均为示意,以实际生成为准。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sayai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值