Elasticsearch 8.x+搭建集群一 (RPM/DEB 安装方式)

当然可以!以下是 Elasticsearch 8.x+ 自管部署(Self-Managed)环境下,从零搭建一个安全集群的完整操作流程总结 ,适用于 RPM/DEB 安装方式(如 yum/apt)


✅ 总体目标

  1. 启动第一个节点 → 自动创建安全单节点集群
  2. 添加更多节点 → 安全加入现有集群

全程 无需手动配置 TLS 证书、密码或修改 elasticsearch.yml


🧱 第一阶段:启动第一个节点(创建集群)

💡 这是整个集群的"种子节点",会自动生成 CA、密码和 token。

操作步骤:

复制代码
# 1. 安装 Elasticsearch(以 RPM 为例)
sudo yum install elasticsearch-8.x.x.rpm

# 2. 确保数据目录为空(首次安装默认就是空的)
ls /var/lib/elasticsearch    # 应该为空或不存在

# 3. 直接启动!(关键:不要改任何配置)
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

验证自动安全配置:

复制代码
# 查看 elastic 用户密码
sudo grep "Password for the elastic user" /var/log/elasticsearch/*.log

# 查看 enrollment token(用于后续加节点/Kibana)
sudo grep "Enroll this node" /var/log/elasticsearch/*.log
sudo grep "Enroll Kibana" /var/log/elasticsearch/*.log

# 检查证书是否生成
ls /etc/elasticsearch/certs/
# 应包含: http_ca.crt, http.p12, transport_ca.crt, transport.p12

# 测试访问(需密码)
curl -u elastic -k https://localhost:9200

✅ 此时你已有一个 启用 HTTPS + 认证 + TLS transport 的单节点安全集群


➕ 第二阶段:添加新节点(加入集群)

💡 新节点必须 从未启动过(数据目录为空),且使用相同版本 ES。

操作步骤:

🔹 步骤 1:在已有集群节点上生成 node enrollment token
复制代码
# 在第一个节点(或任意已有节点)执行
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

输出示例:

复制代码
eyJ2ZXIiOiIxLjAiLCJhZHIiOlsiMTkyLjE2OC4xLjEwOjkyMDAiXSwiZmdyIjoi...

注意:token 1 小时内有效,一次性使用


🔹 步骤 2:在新节点上运行 reconfigure-node
复制代码
# 在新服务器上(已安装 ES,但尚未启动!)
sudo /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node \
  --enrollment-token "eyJ2ZXIiOiIxLjAiLCJhZHIiOlsiMTkyLjE2OC4xLjEwOjkyMDAiXSwiZmdyIjoi..."

✅ 该命令会自动:

  • 下载集群 CA 证书
  • 申请本机 TLS 证书
  • 配置安全通信参数

🔹 步骤 3:启动新节点
复制代码
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

🔹 步骤 4:验证新节点是否加入成功

在任意节点执行:

复制代码
# 需要 elastic 密码(来自第一步日志)
curl -u elastic -k "https://localhost:9200/_cat/nodes?v&h=name,ip,role"

应看到新节点的 IP 和角色。


📌 关键注意事项

项目 要求
ES 版本 所有节点必须完全一致(如 8.12.0)
数据目录 新节点必须为空(/var/lib/elasticsearch
网络连通性 新节点能访问已有节点的 9200 端口(HTTPS)
主机名/DNS 建议配置正确 hostname,或确保 IP 可被识别
不要提前启动新节点 否则它会自建集群,无法加入

🚫 错误做法(务必避免)

错误 后果
先启动新节点再 reconfigure 新节点变成独立集群(脑裂)
手动复制证书文件 容易出错,官方不推荐
在 tar 包安装上用 reconfigure-node 不支持!仅限 RPM/DEB
使用过期或已用过的 token 加入失败

🔄 扩展:添加 Kibana(同理)

复制代码
# 在 ES 节点生成 Kibana token
bin/elasticsearch-create-enrollment-token -s kibana

# 在 Kibana 服务器执行
bin/kibana --enrollment-token "xxx"

Kibana 会自动完成 HTTPS 配置并连接 ES。


✅ 最终架构效果

复制代码
[Node-1] ← 自动创建 CA/密码/token
     │
     ├─ [Node-2] ← 通过 reconfigure-node + token 加入
     ├─ [Node-3] ← 同上
     └─ [Kibana] ← 通过 kibana enrollment token 加入

所有通信:HTTPS + TLS + 认证,开箱即安全 🔐


💡 总结一句话

第一个节点:直接启动,自动安全初始化;
后续节点:先拿 token,再 reconfigure,最后启动。

这就是 Elasticsearch 8.x "Secure by default, simple to scale" 的最佳实践!

需要我提供一个 自动化 Shell 脚本模板 来一键完成多节点部署吗?😊

相关推荐
Elastic 中国社区官方博客1 小时前
使用 Elasticsearch 和 LLMs 进行实体解析,第 1 部分:为智能实体匹配做准备
大数据·人工智能·elasticsearch·搜索引擎·全文检索
MicrosoftReactor2 小时前
技术速递|社区驱动的 AI 安全:一个面向安全研究的开源框架
人工智能·安全·开源
唐璜Taro2 小时前
硬核实战:内网 Windows 环境下 Jenkins + Gitee 自动化部署 Vue2 项目
gitee·自动化·jenkins
德迅云安全杨德俊2 小时前
业务不中断、源站不暴露!DDOS高防 IP 抵御网络攻击
网络·安全·https·ddos
明月_清风2 小时前
单点登录(SSO)在前端世界的落地形态
前端·安全
明月_清风2 小时前
OAuth2 与第三方登录的三个阶段(2010–至今)
前端·安全
Hello.Reader2 小时前
Flink SSL/TLS 安全加固内网 mTLS、REST HTTPS、证书 Pinning 与部署要点
安全·flink·ssl
Faker66363aaa3 小时前
工业场景下护目镜佩戴检测与安全合规性评估_Faster_R-CNN_X101-32x4d_FPN_PISA模型详解
安全·r语言·cnn
灵犀坠3 小时前
React+Node.js全栈实战:实现安全高效的博客封面图片上传(踩坑实录)
安全·react.js·node.js·router·query·clerk