ES的安装教程

发布时间:2021-06-26 10:14:18 作者:chen
来源:亿速云 阅读:146
# ES的安装教程

## 目录
1. [Elasticsearch简介](#一elasticsearch简介)
2. [环境准备](#二环境准备)
3. [单节点安装](#三单节点安装)
   - [3.1 下载安装包](#31-下载安装包)
   - [3.2 解压与目录结构](#32-解压与目录结构)
   - [3.3 修改配置文件](#33-修改配置文件)
   - [3.4 启动与验证](#34-启动与验证)
4. [集群部署](#四集群部署)
   - [4.1 节点配置](#41-节点配置)
   - [4.2 集群发现设置](#42-集群发现设置)
   - [4.3 跨机房部署建议](#43-跨机房部署建议)
5. [安全配置](#五安全配置)
   - [5.1 启用X-Pack](#51-启用x-pack)
   - [5.2 设置用户权限](#52-设置用户权限)
6. [常见问题解决](#六常见问题解决)
7. [性能优化建议](#七性能优化建议)

---

## 一、Elasticsearch简介

Elasticsearch(简称ES)是一个基于Lucene构建的开源分布式搜索引擎,具有以下核心特性:

- **近实时搜索**:数据写入后1秒内可检索
- **分布式架构**:自动分片(Sharding)和副本(Replica)机制
- **RESTful API**:通过HTTP协议进行交互
- **多语言支持**:官方提供Java/Python/Go等客户端
- **丰富的数据分析**:支持聚合、地理位置查询等

典型应用场景包括日志分析(ELK Stack)、电商搜索、应用性能监控等。

---

## 二、环境准备

### 2.1 硬件要求
| 组件       | 最低配置 | 生产环境建议 |
|------------|----------|--------------|
| CPU        | 2核      | 16核+        |
| 内存       | 4GB      | 32GB+        |
| 磁盘       | 50GB HDD | 1TB SSD      |
| 网络       | 1Gbps    | 10Gbps       |

### 2.2 软件依赖
- **操作系统**:Linux(推荐CentOS 7+/Ubuntu 18.04+)
- **Java环境**:OpenJDK 11或Oracle JDK 11
  ```bash
  # 检查Java版本
  java -version

2.3 系统参数优化

# 修改最大文件描述符
echo "* - nofile 65535" >> /etc/security/limits.conf

# 禁用交换分区
sudo swapoff -a
echo "vm.swappiness = 1" >> /etc/sysctl.conf

# 调整虚拟内存
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

三、单节点安装

3.1 下载安装包

官方下载地址(以7.17.3版本为例):

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.3-linux-x86_64.tar.gz

# 校验SHA512
shasum -a 512 elasticsearch-7.17.3-linux-x86_64.tar.gz

3.2 解压与目录结构

tar -zxvf elasticsearch-7.17.3-linux-x86_64.tar.gz -C /opt/
cd /opt/elasticsearch-7.17.3/

关键目录说明: - bin/:启动脚本 - config/:配置文件 - data/:数据存储(需单独挂载) - logs/:日志文件 - plugins/:插件目录

3.3 修改配置文件

config/elasticsearch.yml 核心配置:

cluster.name: my-es-cluster
node.name: node-1
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node  # 单节点模式

3.4 启动与验证

# 以非root用户启动
useradd elastic
chown -R elastic:elastic /opt/elasticsearch-7.17.3
su - elastic -c "/opt/elasticsearch-7.17.3/bin/elasticsearch -d"

# 验证服务
curl -X GET "localhost:9200/_cat/health?v"

预期返回:

epoch      timestamp cluster       status node.total node.data shards ...
163456789 10:15:30  my-es-cluster green           1         1      0 ...

四、集群部署

4.1 节点配置

典型三节点集群配置(elasticsearch.yml):

# 节点1配置
cluster.name: production-cluster
node.name: node-1
node.master: true
node.data: true
network.host: 192.168.1.101
http.port: 9200
discovery.seed_hosts: ["192.168.1.101", "192.168.1.102", "192.168.1.103"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

# 其他节点需修改node.name和network.host

4.2 集群发现设置

Zen Discovery机制参数:

discovery.zen.minimum_master_nodes: 2  # 防止脑裂
discovery.zen.ping.unicast.hosts: ["host1", "host2", "host3"]

4.3 跨机房部署建议

# 配置机架感知
cluster.routing.allocation.awareness.attributes: rack_id
node.attr.rack_id: rack1

五、安全配置

5.1 启用X-Pack

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

5.2 设置用户权限

# 生成密码
bin/elasticsearch-setup-passwords auto

# 创建只读用户
bin/elasticsearch-users useradd viewer -p password -r viewer_role

六、常见问题解决

  1. 启动报错:max virtual memory areas vm.max_map_count too low

    sysctl -w vm.max_map_count=262144
    
  2. 节点无法加入集群

    • 检查防火墙规则
    • 验证discovery.seed_hosts配置
  3. 磁盘空间不足

    PUT _cluster/settings
    {
     "persistent": {
       "cluster.routing.allocation.disk.threshold_enabled": false
     }
    }
    

七、性能优化建议

  1. JVM调参 config/jvm.options

    -Xms16g
    -Xmx16g  # 不超过物理内存50%
    
  2. 索引优化

    PUT my_index/_settings
    {
     "index" : {
       "number_of_replicas" : 1,
       "refresh_interval" : "30s"
     }
    }
    
  3. 冷热数据分离

    node.attr.temperature: hot
    

注意事项: - 生产环境务必启用认证 - 定期备份快照到S3/HDFS - 使用Monitoring API监控集群状态 - 版本升级前充分测试

通过以上步骤,您已经完成Elasticsearch从单节点到集群的完整部署。建议结合Kibana进行可视化管理和日志分析。 “`

注:本文实际约2650字(含代码和配置示例),根据具体Markdown渲染器可能略有差异。如需调整字数,可增减配置示例或优化建议部分的内容。

推荐阅读:
  1. PHP的安装教程
  2. ElasticSearch的完整安装教程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

es

上一篇:redis分布式锁的用法

下一篇:JavaScript中递归函数解“汉诺塔”算法的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》