Elasticsearch单机与集群安装详细步骤

一、环境准备

1. 系统要求

  • 操作系统:Linux(CentOS 7+/Ubuntu 18.04+)或Windows Server 2016+
  • Java环境:Elasticsearch 7.x需要JDK 11+,8.x需要JDK 17+
  • 硬件配置:建议4核CPU、8GB内存、SSD存储

2. 系统参数优化

# 修改文件描述符限制
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 131072" >> /etc/security/limits.conf

# 修改虚拟内存映射限制
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

# 关闭swap(可选)
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab

二、单机安装步骤

1. 下载与解压

# 下载Elasticsearch安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.4-linux-x86_64.tar.gz

# 解压到目标目录
tar -zxvf elasticsearch-8.11.4-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/elasticsearch-8.11.4/

2. 创建专用用户

# 创建用户和组
groupadd elasticsearch
useradd elasticsearch -g elasticsearch -s /bin/bash

# 授权目录
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-8.11.4/

3. 配置JVM参数

编辑 config/jvm.options

-Xms2g
-Xmx2g

注意:生产环境建议堆内存不超过物理内存的50%,且不超过32GB

4. 配置Elasticsearch

编辑 config/elasticsearch.yml

# 集群名称
cluster.name: my-elasticsearch

# 节点名称
node.name: node-1

# 数据存储路径
path.data: /usr/local/elasticsearch-8.11.4/data

# 日志存储路径
path.logs: /usr/local/elasticsearch-8.11.4/logs

# 网络配置
network.host: 0.0.0.0
http.port: 9200

# 单节点模式配置
discovery.type: single-node

# 跨域访问配置
http.cors.enabled: true
http.cors.allow-origin: "*"

# 安全配置(测试环境可关闭)
xpack.security.enabled: false

5. 启动服务

# 切换用户
su elasticsearch

# 前台启动(调试用)
./bin/elasticsearch

# 后台启动
./bin/elasticsearch -d

6. 验证安装

# 检查服务状态
curl http://localhost:9200

# 查看集群健康状态
curl http://localhost:9200/_cluster/health?pretty

正常返回JSON格式的集群信息表示安装成功

三、集群安装步骤

1. 规划集群节点

建议至少3个节点组成集群,节点角色规划如下:

  • 主节点:负责集群管理,建议3个专用主节点
  • 数据节点:存储数据,根据数据量配置
  • 协调节点:处理客户端请求

2. 各节点配置

节点1(主节点+数据节点)

cluster.name: my-cluster
node.name: node-1
node.master: true
node.data: true
network.host: 192.168.1.10
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11:9300", "192.168.1.12:9300"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

节点2(数据节点)

cluster.name: my-cluster
node.name: node-2
node.master: false
node.data: true
network.host: 192.168.1.11
http.port: 9201
transport.port: 9301
discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11:9300", "192.168.1.12:9300"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

节点3(协调节点)

cluster.name: my-cluster
node.name: node-3
node.master: false
node.data: false
network.host: 192.168.1.12
http.port: 9202
transport.port: 9302
discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11:9300", "192.168.1.12:9300"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

3. 启动集群

# 分别在每个节点启动
./bin/elasticsearch -d

4. 验证集群状态

# 查看集群健康
curl http://192.168.1.10:9200/_cluster/health?pretty

# 查看节点列表
curl http://192.168.1.10:9200/_cat/nodes?v

集群状态应为green,节点数量显示为3

四、安全配置(可选)

1. 生成证书

# 生成CA证书
./bin/elasticsearch-certutil ca

# 生成节点证书
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

2. 配置安全参数

# 启用安全功能
xpack.security.enabled: true

# 启用SSL加密
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

3. 设置密码

# 设置内置用户密码
./bin/elasticsearch-setup-passwords interactive

五、常见问题处理

1. 内存不足错误

# 修改JVM配置
vim config/jvm.options
# 调整为:-Xms512m -Xmx512m

2. 端口冲突

# 检查端口占用
netstat -tlnp | grep 9200

# 修改配置文件中的端口号
http.port: 9201

3. 集群节点无法加入

  • 检查防火墙是否开放9300端口
  • 确认discovery.seed_hosts配置正确
  • 验证节点间网络连通性

六、监控与维护

1. 集群健康监控

# 查看集群状态
curl http://localhost:9200/_cluster/health?pretty

# 查看节点信息
curl http://localhost:9200/_cat/nodes?v

# 查看索引状态
curl http://localhost:9200/_cat/indices?v

2. 性能监控指标

  • 集群状态:green/yellow/red
  • 节点负载:CPU、内存、磁盘使用率
  • 分片状态:active、relocating、unassigned

3. 定期维护

  • 定期清理过期索引
  • 监控磁盘空间使用情况
  • 定期备份重要数据

通过以上步骤,您可以完成Elasticsearch的单机和集群部署,并根据实际需求进行安全配置和性能优化。

作者:严锋  创建时间:2025-12-22 21:01
最后编辑:严锋  更新时间:2025-12-25 10:39