一. 引言:
elasticsearch(简称 es)是一款基于 Lucene 的分布式开源搜索引擎,专注于实时全文检索、数据分析与存储,广泛应用于日志分析、电商搜索、监控告警等场景。以下将详细介绍其基础概念与集群部署流程。
二.基础概念:
理解 ES 的核心概念是使用和部署集群的前提,这些概念与传统数据库有一定类比性,但也有其独特性:
1. Document(文档):ES 中最小的数据单元,是一组键值对(类似 JSON 对象),用于存储具体的业务数据(如一条日志、一个商品信息)。采用 JSON 格式存储,结构灵活;每个文档有唯一的 _id
(可手动指定或自动生成),用于唯一标识文档;文档属于某个索引,并被分配到集群的某个分片中。
2. Index(索引):文档的集合(类似关系型数据库中的 “表”),用于存储具有相似结构的文档(如 “商品索引”“用户索引”)。索引名称必须小写,且不能包含特殊字符;索引在创建时可定义映射(Mapping),指定字段类型(文本、数字、日期等)及分析器。
3. shard(分片):索引的最小存储和处理单元,是 Lucene 的实例(一个独立的搜索引擎)。由于单节点存储和处理能力有限,ES 将索引数据拆分到多个分片,实现分布式存储和并行查询。分片分为主分片和副本分片。
4. Node(节点):运行 ES 进程的单个服务器(物理机 / 虚拟机 / 容器),是集群的基本组成单元(也可以单实例多节点,但生产环境不建议这么干)。 节点类型分为:
a). 主节点:负责集群元数据管理(如索引创建、分片分配),维护集群状态(集群名称、节点列表、分片分布等)。
b). 数据节点: 负责数据的存储(分片)、索引和查询,是集群的 “工作节点”。
c). 协调(投票)节点: 接收客户端请求,分发任务到其他节点,汇总结果返回。默认所有节点都是协调节点,可通过 node.master: false
和 node.data: false
配置为专用协调节点;
5. cluster(集群):由多个节点组成的集合,节点通过相同的 cluster.name
加入集群.
三. 集群部署:
集群模式建议为3个节点。具体部署如下:
1. 环境准备:
#系统
linux 、 禁用 swap(ES 性能依赖内存,swap 会导致性能下降);
#硬件
每个节点至少 2 核 CPU、4GB 内存(生产环境建议 8 核 16GB+);
磁盘:SSD(提升 IO 性能),预留足够空间(根据数据量估算);
2. 用户配置: es 不允许 root 用户启动,需创建专用用户:
mkdir -p /data/elasticsearch
groupadd elasticsearch
useradd -g elasticsearch elasticsearch
chown -R elasticsearch:elasticsearch /data/elasticsearch -R
3. 下载安装包,部署:
su - elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.0.3-linux-aarch64.tar.gz
tar fxvz elasticsearch-9.0.3-linux-aarch64.tar.gz
vim /etc/sysctl.conf
vm.max_map_count=262144 #不修改会启动失败
sysctl -p
4. 生成证书:
bin/elasticsearch-certutil ca
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
mkdir config/certs
cp elastic-*.p12 config/certs/
#需要将生成的证书copy到集群的所有节点。
5. 修改配置文件:
cluster.name: test
node.name: node3
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
network.host: 10.0.73.255
http.port: 9200
discovery.seed_hosts: ["10.0.36.165:9300", "10.0.101.73:9300","10.0.73.255:9300"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
xpack.security.enabled: true
xpack.security.http.ssl:
enabled: false
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/elastic-certificates.p12
truststore.path: certs/elastic-certificates.p12
#其他节点,参考同配置
6. 配置用户密码:
bin/elasticsearch-reset-password -u elastic
This tool will reset the password of the [elastic] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y
Password for the [elastic] user successfully reset.
New value: PBW0*Yk1sdgsdgsdgTuS

-------------------------------------------------------------------------------------
深耕运维行业多年,擅长运维体系建设,方案落地。欢迎交流!
V: ywjw996
《 运维经纬 》