自动化部署elasticsearch三节点集群

什么是Elasticsearch?

Elasticsearch 是一个开源的分布式搜索和分析引擎,构建在 Apache Lucene 的基础上。它提供了一个分布式多租户的全文搜索引擎,具有实时分析功能。Elasticsearch 最初是用于构建全文搜索引擎,但它的功能已经扩展到包括日志分析、应用程序性能监控、地理信息系统等领域。

以下是 Elasticsearch 的一些主要特点和用途:

  1. 全文搜索:Elasticsearch 提供强大的全文搜索功能,可以快速搜索大量文档并返回相关性高的结果。

  2. 分布式:Elasticsearch 是一个分布式系统,可以水平扩展到数百台服务器,处理大规模的数据集。

  3. 实时性:Elasticsearch 提供实时搜索和分析功能,可以在数据被索引之后立即可用。

  4. 多功能:除了全文搜索之外,Elasticsearch 还提供了聚合、过滤、地理位置搜索、自定义标记、实时分析等功能。

  5. 可扩展性:Elasticsearch 可以通过插件扩展功能,满足不同场景的需求。

  6. 易用性:Elasticsearch 提供了简单的 RESTful API,易于集成到各种应用程序中,并提供了丰富的客户端库。

  7. 日志分析:Elasticsearch 通常与 Logstash 和 Kibana(称为 ELK 栈)一起使用,用于实时日志分析和可视化。

  8. 应用程序性能监控:Elasticsearch 还可以用于监控应用程序性能,收集和分析指标数据

Elasticsearch的应用场景?

Elasticsearch 的应用场景非常广泛,以下是一些常见的应用场景:

  1. 全文搜索引擎:Elasticsearch 提供了强大的全文搜索功能,可以用于构建各种类型的搜索引擎,包括网站搜索、文档搜索、产品搜索等。

  2. 日志和事件分析:Elasticsearch 可以用于实时收集、存储和分析大量的日志和事件数据。它与 Logstash 和 Kibana 一起组成 ELK 栈,用于实时日志分析和可视化。

  3. 指标和性能监控:Elasticsearch 可以用于收集和分析应用程序和系统的性能指标,帮助开发人员和运维团队监控应用程序的健康状况,并快速定位问题。

  4. 内容推荐:基于用户行为和内容特征,Elasticsearch 可以用于实现个性化的内容推荐系统,提供用户喜好的文章、产品或媒体。

  5. 电商搜索和推荐:在电商网站中,Elasticsearch 可以用于实现快速、准确的产品搜索,以及基于用户行为的个性化推荐。

Elasticsearch 的架构设计主要涉及以下几个方面:

1. 分布式架构

Elasticsearch 是一个分布式系统,可以水平扩展到多个节点,处理大规模的数据集。它将索引分成多个分片(shard),每个分片可以分布在集群中的不同节点上,从而实现数据的分布式存储和处理。此外,Elasticsearch 还支持副本(replica),用于提高数据的可靠性和可用性。

2. 节点角色

在 Elasticsearch 集群中,每个节点可以担任不同的角色:

  • 主节点(Master Node):负责集群的管理和协调,包括创建和删除索引、分配分片、故障检测和节点加入/退出等操作。

  • 数据节点(Data Node):存储数据的节点,负责索引和搜索数据。每个数据节点都保存部分数据分片,并处理搜索请求和索引请求。

  • 协调节点(Coordinating Node):处理客户端请求的节点,负责路由请求到适当的数据节点,并将结果汇总返回给客户端。

3. 索引和分片

数据在 Elasticsearch 中存储在索引(Index)中,每个索引可以分成多个分片。索引是逻辑上的数据集合,分片是数据的物理存储单元。分片可以水平扩展到多个节点上,实现数据的分布式存储和并行处理。

4. 倒排索引

Elasticsearch 使用倒排索引(Inverted Index)来加速搜索操作。倒排索引是一种数据结构,可以快速地找到包含特定词条的文档。对于每个词条,倒排索引会记录该词条出现在哪些文档中,以及在文档中的位置信息。

5. RESTful API

Elasticsearch 提供了基于 HTTP 的 RESTful API,使用户可以使用简单的 HTTP 请求与 Elasticsearch 进行交互。通过 RESTful API,用户可以执行索引、搜索、聚合、删除等操作,以及管理集群和节点。

6. 插件机制

Elasticsearch 提供了丰富的插件机制,允许用户扩展和定制其功能。用户可以编写自定义插件,添加新的功能或改进现有功能,例如添加新的分析器、查询语法、存储后端等。

自动化部署

部署之前准备必要的jdk,安装包已经打包好了再网盘里面

复制代码
复制代码
链接:https://pan.baidu.com/s/1Kfntr0B-vJNIs25ZgqwCdA
复制代码
提取码:4fsf

到服务器进行解压

复制代码
tar -zxvf elaticsearch.tar.gz
复制代码
将下载下来的传到要部署的节点执行
复制代码
bash -x deploy_elaticsearch.sh ip1 ip2 ip3 1

其中脚本内容如下所示

#!/bin/bash

创建esadmin用户,并设置密码

useradd esadmin && echo "esadmin:Ebupt#202401f" | chpasswd

创建安装目录并解压Elasticsearch

mkdir -p /opt/elasticsearch/

tar -zxvf elasticsearch-7.15.1-linux-x86_64.tar.gz -C /opt/elasticsearch/

创建Elasticsearch数据、日志和仓库目录

mkdir -p /opt/elasticsearch/elasticsearch-7.15.1/es/{data,logs,repo}

备份旧的配置文件并写入新的配置文件

mv /opt/elasticsearch/elasticsearch-7.15.1/config/elasticsearch.yml /opt/elasticsearch/elasticsearch-7.15.1/config/elasticsearch.yml.bak

cat <<EOF | sudo tee /opt/elasticsearch/elasticsearch-7.15.1/config/elasticsearch.yml > /dev/null

集群和节点配置

cluster.name: es-cluster

node.name: node-$4

node.master: true

node.data: true

node.ingest: true

网络和发现配置

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["$1", "$2", "$3"]

cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

discovery.zen.fd.ping_interval: 30s

discovery.zen.fd.ping_timeout: 120s

discovery.zen.fd.ping_retries: 6

JVM调优

#bootstrap.memory_lock: true

#indices.memory.index_buffer_size: 50%

索引和搜索配置

#index.number_of_shards: 5

#index.number_of_replicas: 1

#indices.queries.cache.size: 20%

磁盘和文件系统配置

path.data: /opt/elasticsearch/elasticsearch-7.15.1/es/data

path.logs: /opt/elasticsearch/elasticsearch-7.15.1/es/logs

path.repo: /opt/elasticsearch/elasticsearch-7.15.1/es/repo

监控和性能调优

xpack.monitoring.enabled: true

thread_pool.search.size: 50

search.max_buckets: 10000

HTTP跨域设置

http.cors.enabled: true

http.cors.allow-origin: "*"

EOF

设置Java参数

echo "-Xms3g" >> /opt/elasticsearch/elasticsearch-7.15.1/config/jvm.options

echo "-Xmx3g" >> /opt/elasticsearch/elasticsearch-7.15.1/config/jvm.options

内核优化

echo "esadmin soft nofile 65536" >> /etc/security/limits.conf

echo "esadmin hard nofile 131072c" >> /etc/security/limits.conf

echo "esadmin soft nproc 4096" >> /etc/security/limits.conf

echo "esadmin hard nproc 4096" >> /etc/security/limits.conf

echo "elasticsearch soft memlock unlimited" >> /etc/security/limits.conf

echo "elasticsearch hard memlock unlimited" >> /etc/security/limits.conf

查看当前ulimit配置

ulimit -a

#内核优化2

echo "vm.max_map_count=655360" >> /etc/sysctl.conf && sysctl -p

#修改目录权限

chmod -R esadmin /opt/elasticsearch

#添加es_java_home

cat << EOF | sudo tee -a /etc/profile

export ES_JAVA_HOME=/opt/elasticsearch/elasticsearch-7.15.1/jdk

EOF

source /etc/profile

使用esadmin用户启动Elasticsearch

su - esadmin -c "/opt/elasticsearch/elasticsearch-7.15.1/bin/elasticsearch -d"

相关推荐
bubble小拾4 小时前
ElasticSearch高级功能详解与读写性能调优
大数据·elasticsearch·搜索引擎
不能放弃治疗5 小时前
重生之我们在ES顶端相遇第 18 章 - Script 使用(进阶)
elasticsearch
hengzhepa5 小时前
ElasticSearch备考 -- Search across cluster
学习·elasticsearch·搜索引擎·全文检索·es
Elastic 中国社区官方博客7 小时前
Elasticsearch:使用 LLM 实现传统搜索自动化
大数据·人工智能·elasticsearch·搜索引擎·ai·自动化·全文检索
慕雪华年8 小时前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
Elastic 中国社区官方博客10 小时前
使用 Vertex AI Gemini 模型和 Elasticsearch Playground 快速创建 RAG 应用程序
大数据·人工智能·elasticsearch·搜索引擎·全文检索
alfiy11 小时前
Elasticsearch学习笔记(四) Elasticsearch集群安全配置一
笔记·学习·elasticsearch
alfiy12 小时前
Elasticsearch学习笔记(五)Elastic stack安全配置二
笔记·学习·elasticsearch
丶21361 天前
【大数据】Elasticsearch 实战应用总结
大数据·elasticsearch·搜索引擎
闲人编程1 天前
elasticsearch实战应用
大数据·python·elasticsearch·实战应用