温馨提示×

温馨提示×

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

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

如何实现Elasticsearch环境搭建

发布时间:2021-12-10 18:02:40 来源:亿速云 阅读:288 作者:柒染 栏目:大数据
# 如何实现Elasticsearch环境搭建 ## 一、Elasticsearch简介 Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,由Shay Banon于2010年创建。作为ELK技术栈的核心组件,它具有以下特性: - **近实时搜索**:数据索引后1秒内可检索 - **分布式架构**:支持水平扩展和高可用 - **RESTful API**:通过HTTP接口进行操作 - **多租户支持**:通过索引机制实现数据隔离 - **丰富的查询DSL**:支持全文检索、结构化查询等 ## 二、环境准备 ### 1. 硬件要求 | 资源类型 | 生产环境建议 | 测试环境最低 | |----------|--------------|--------------| | CPU | 8核+ | 2核 | | 内存 | 16GB+ | 4GB | | 存储 | SSD/NVMe | 普通硬盘 | ### 2. 软件要求 - **操作系统**:Linux/Windows/macOS(推荐Linux) - **Java环境**:JDK 8或11(LTS版本) - **版本选择**:建议使用最新稳定版(本文以8.x为例) ## 三、单节点安装部署 ### 1. 安装Java环境 ```bash # Ubuntu/Debian sudo apt update sudo apt install openjdk-11-jdk # 验证安装 java -version 

2. 下载并安装Elasticsearch

# 下载安装包(以Linux为例) wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.1-linux-x86_64.tar.gz # 解压安装 tar -xzf elasticsearch-8.4.1-linux-x86_64.tar.gz cd elasticsearch-8.4.1/ 

3. 基础配置

修改config/elasticsearch.yml

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

4. 启动服务

# 前台启动(测试用) ./bin/elasticsearch # 后台启动 ./bin/elasticsearch -d -p pid 

5. 验证安装

curl -X GET "localhost:9200/" 

预期返回:

{ "name" : "node-1", "cluster_name" : "my-es-cluster", "version" : { "number" : "8.4.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "2bd229c8e56650b42e40992322a76e7914258f0c", "build_date" : "2022-09-23T17:33:31.471153Z", "build_snapshot" : false, "lucene_version" : "9.3.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" } 

四、集群化部署

1. 多节点配置

修改config/elasticsearch.yml

# 节点1配置 cluster.name: my-es-cluster node.name: node-1 network.host: 192.168.1.101 discovery.seed_hosts: ["192.168.1.101", "192.168.1.102"] cluster.initial_master_nodes: ["node-1", "node-2"] # 节点2配置 cluster.name: my-es-cluster node.name: node-2 network.host: 192.168.1.102 discovery.seed_hosts: ["192.168.1.101", "192.168.1.102"] cluster.initial_master_nodes: ["node-1", "node-2"] 

2. 节点角色规划

节点类型 配置参数 推荐数量
Master-eligible node.master: true 3(奇数)
Data node.data: true 按需扩展
Ingest node.ingest: true 2+
Coordinating node.master/data/ingest: false 2+

3. 跨机房部署建议

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

五、安全配置

1. 启用安全功能

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

2. 生成证书

./bin/elasticsearch-certutil ca ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 

3. 设置密码

./bin/elasticsearch-setup-passwords auto 

六、性能调优

1. JVM配置

修改config/jvm.options

-Xms4g -Xmx4g # 不超过物理内存50% 

2. 操作系统优化

# 增加文件描述符限制 ulimit -n 65535 # 禁用swap sudo swapoff -a 

3. 索引优化参数

PUT my_index { "settings": { "number_of_shards": 3, "number_of_replicas": 1, "refresh_interval": "30s" } } 

七、常见问题解决

1. 启动报错排查

  • max file descriptors:修改/etc/security/limits.conf
  • max virtual memory:执行sysctl -w vm.max_map_count=262144
  • JDK版本不兼容:使用jdk-11或更高LTS版本

2. 性能问题处理

  • 高CPU使用率:检查慢查询,优化DSL
  • 内存不足:调整JVM堆大小,减少fielddata使用
  • 磁盘IO瓶颈:使用SSD,增加refresh间隔

八、监控与维护

1. 健康状态检查

GET _cluster/health GET _nodes/stats 

2. 常用维护命令

# 索引管理 DELETE old_index PUT _template/my_template # 节点下线 PUT _cluster/settings { "transient": { "cluster.routing.allocation.exclude._ip": "192.168.1.101" } } 

九、升级策略

  1. 滚动升级(推荐):

    • 逐个节点停止服务 → 升级 → 重新加入集群
    • 确保集群状态保持green/yellow
  2. 完整集群重启

    • 适用于大版本升级(如7.x→8.x)
    • 需要关闭所有节点后统一升级

十、总结

通过本文的详细步骤,您应该已经完成: - 单节点Elasticsearch的安装与验证 - 生产级集群的规划与部署 - 基础安全配置与性能调优 - 常见问题的处理方案

建议后续结合Kibana进行可视化管理和Logstash实现数据管道,构建完整的ELK技术栈。

注意事项: 1. 生产环境务必启用认证和HTTPS 2. 定期备份快照到对象存储 3. 监控集群健康状态和资源使用情况 “`

这篇技术文档共计约2100字,采用Markdown格式编写,包含: - 多级标题结构 - 代码块和配置示例 - 表格对比数据 - 实操命令和API调用 - 注意事项和最佳实践提示

向AI问一下细节

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

AI