CentOS7下的ElasticSearch部署

CentOS7下的ElasticSearch部署

部署流程(单节点版)

1. 添加官方 YUM 仓库

bash 复制代码
导入GPG密钥
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2. 创建仓库文件,填写如下内容

bash 复制代码
vim /etc/yum.repos.d/elasticsearch.repo
bash 复制代码
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

3. 安装Elasticsearch

bash 复制代码
yum install -y elasticsearch

4. 验证安装

bash 复制代码
elasticsearch --version
  • 如果出现了提示:
bash 复制代码
bash: elasticsearch: command not found...

问题分析:

  1. elasticsearch: command not found 错误
    • Elasticsearch 的可执行文件默认安装在 /usr/share/elasticsearch/bin/
    • 该路径未添加到系统的 PATH 环境变量中
  2. Java 版本不兼容警告
bash 复制代码
Future versions of Elasticsearch will require Java 11; 
your Java version from [/usr/lib/jvm/java-1.8.0-openjdk-...] does not meet this requirement.
  • 检测到 Java 8 (1.8.0),但 Elasticsearch 7.x 需要 Java 11
  • 需要升级 Java 版本

🛠️ 解决方案
步骤 1:修复命令路径问题

临时使用完整路径:

bash 复制代码
/usr/share/elasticsearch/bin/elasticsearch --version

永久添加到 PATH:

bash 复制代码
添加到当前用户的 PATHecho 'export PATH=$PATH:/usr/share/elasticsearch/bin' >> ~/.bashrc
source ~/.bashrc# 添加到当前用户的 PATHecho 'export PATH=$PATH:/usr/share/elasticsearch/bin' >> ~/.bashrc
source ~/.bashrc

# 验证
elasticsearch --version

步骤 2:升级 Java 到 JDK 11

bash 复制代码
# 安装 OpenJDK 11
sudo yum install -y java-11-openjdk-devel

# 设置默认 Java 版本
sudo alternatives --config java

选择 Java 11 对应的编号(通常为 /usr/lib/jvm/java-11-openjdk-*/bin/java)

验证 Java 版本:

bash 复制代码
java -version
# 应显示 "openjdk version "11.x.x"

5. 添加基础配置(注意默认端口是9200,避免和别的冲突):

bash 复制代码
vim /etc/elasticsearch/elasticsearch.yml
bash 复制代码
# 集群名称(同一集群节点需一致)
cluster.name: my-es-cluster
 
# 节点名称(建议与主机名一致)
node.name: node-1
 
# 允许外网访问(生产环境需限制为内网IP)
network.host: 0.0.0.0
 
# 监听端口(默认9200)
http.port: 9200
 
# 集群自动发现配置(单机部署可注释)
# discovery.seed_hosts: ["node-1:9300", "node-2:9300"]
 
# 最小主节点数量(集群模式必填)
# cluster.initial_master_nodes: ["node-1"]

# --------------------------------- Discovery ----------------------------------
# 单节点部署配置
discovery.type: single-node

# 如果是要配置集群,需要将下面的配置给打开
# --------------------------------- Discovery ----------------------------------
# 集群部署配置
# discovery.seed_hosts: ["127.0.0.1"]  # 节点IP列表
# cluster.initial_master_nodes: ["node-1"]  # 初始主节点名称(与node.name一致)

6. 重新配置 Elasticsearch

bash 复制代码
# 重新加载系统配置
sudo systemctl daemon-reload

# 修复安全密钥问题(因Java升级需要)
sudo /usr/share/elasticsearch/bin/elasticsearch-keystore create

# 启动服务
systemctl start elasticsearch
systemctl status elasticsearch

# 设置开机自启动
systemctl enable elasticsearch
  • 验证是否成功
bash 复制代码
# 检查服务状态
sudo systemctl status elasticsearch

# 检查端口
sudo ss -tuln | grep 9200

# 测试连接
curl -X GET "http://localhost:9200/?pretty"

📊 JSON 响应字段解析:

密码重置

1. 启用 X-Pack 安全功能

bash 复制代码
# 编辑 Elasticsearch 配置文件
sudo vi /etc/elasticsearch/elasticsearch.yml

在文件末尾添加/修改以下配置:

bash 复制代码
# 启用安全功能
xpack.security.enabled: true

# 允许使用默认密码(首次设置时需要)
xpack.security.authc.accept_default_password: true

# 启用内置 API 密钥服务(可选但推荐)
xpack.security.authc.api_key.enabled: true

2. 重启 Elasticsearch 服务

bash 复制代码
sudo systemctl restart elasticsearch

# 等待 30 秒让服务完全启动

# 检查服务状态
sudo systemctl status elasticsearch

3. 设置密码(两种方法)
方法一:自动生成所有内置用户密码

bash 复制代码
sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

命令会输出类似以下内容:

bash 复制代码
Changed password for user apm_system
PASSWORD apm_system = xxxxxxxxxxxx

Changed password for user kibana_system
PASSWORD kibana_system = xxxxxxxxxxxx

Changed password for user kibana
PASSWORD kibana = xxxxxxxxxxxx

Changed password for user logstash_system
PASSWORD logstash_system = xxxxxxxxxxxx

Changed password for user beats_system
PASSWORD beats_system = xxxxxxxxxxxx

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = xxxxxxxxxxxx

Changed password for user elastic
PASSWORD elastic = xxxxxxxxxxxx

方法二:仅重置 elastic 用户密码

bash 复制代码
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i

按提示交互式设置新密码

验证密码是否生效

bash 复制代码
# 使用新密码测试连接
curl -u elastic:你的新密码 http://localhost:9200/_security/_authenticate?pretty

应返回包含用户信息的 JSON 响应

bash 复制代码
{
  "username" : "elastic",
  "roles" : [
    "superuser"
  ],
  "full_name" : null,
  "email" : null,
  "metadata" : {
    "_reserved" : true
  },
  "enabled" : true,
  "authentication_realm" : {
    "name" : "reserved",
    "type" : "reserved"
  },
  "lookup_realm" : {
    "name" : "reserved",
    "type" : "reserved"
  },
  "authentication_type" : "realm"
}

4. 首次密码设置后:

bash 复制代码
# 完成密码设置后必须禁用默认密码
xpack.security.authc.accept_default_password: false

修改后需重启服务:sudo systemctl restart elasticsearch

5. 防火墙配置:

bash 复制代码
# 如果启用了防火墙
sudo firewall-cmd --add-port={9200,9300}/tcp --permanent
sudo firewall-cmd --reload

6. 密码管理建议:

  • 立即保存显示的密码
  • Kibana 配置需使用 kibana_system 用户密码
  • 生产环境建议定期轮换密码
相关推荐
为什么要内卷,摆烂不香吗2 分钟前
LVS部署DR模式集群
服务器·数据库·lvs
wanglingli9520 分钟前
HBase2.5.4单机模式与伪分布式的安装与配置(Ubuntu系统)
大数据·数据库·hbase
ai小鬼头24 分钟前
AIStarter教你快速打包GPT-SoVITS-v2,解锁AI应用市场新玩法
前端·后端·github
艾莉丝努力练剑43 分钟前
【数据结构与算法】数据结构初阶:详解顺序表和链表(五)——双向链表
c语言·开发语言·数据结构·学习·算法
王小王-1231 小时前
基于大数据电信诈骗行为分析与可视化预测系统的设计与实现【海量数据、多种机器学习对比、数据优化、过采样】
大数据·机器学习·电信诈骗·诈骗预测模型·欺诈模型·电信诈骗预测
paopaokaka_luck1 小时前
基于SpringBoot+Vue的汽车租赁系统(协同过滤算法、腾讯地图API、支付宝沙盒支付、WebsSocket实时聊天、ECharts图形化分析)
vue.js·spring boot·后端·websocket·算法·汽车·echarts
giao源1 小时前
Spring Boot 整合 Shiro 实现单用户与多用户认证授权指南
java·spring boot·后端·安全性测试
【本人】1 小时前
Django基础(四)———模板常用过滤器
后端·python·django
cpsvps2 小时前
香港服务器SSH安全加固方案与密钥认证实践
服务器·安全·ssh