首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Elasticsearch(ES)角色介绍与集群部署

Elasticsearch(ES)角色介绍与集群部署

作者头像
运维小路
发布2025-08-04 09:53:51
发布2025-08-04 09:53:51
29700
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS

Elasticsearch ES (本章节)

由于我们后面的要讲解的概念需要在集群环境里面更容易体现,所以我们这里先部署集群。

环境规划

IP

角色

192.168.31.171

master,data,Ingest

192.168.31.172

master,data,Ingest

192.168.31.173

master,data,Ingest

master:管理集群状态(索引元数据、分片分配、节点加入/离开)。不存储数据,不处理用户请求。

data:存储索引数据,执行数据的增删改查、搜索、聚合等操作。消耗大量CPU、内存、磁盘IO

Ingest:接收客户端请求,将请求路由到正确的数据节点,聚合结果返回给客户端。分担数据节点的负载,尤其在复杂搜索/聚合时。

环境配置

我们在上个小节里面没有配置的,部署集群就需要配置。这里需要用root来实现。

代码语言:javascript
代码运行次数:0
运行
复制
# 1. 永久修改文件描述符限制
echo "elasticsearch - nofile 65535" >> /etc/security/limits.conf
echo "root soft nofile 65535" >> /etc/security/limits.conf
echo "root hard nofile 65535" >> /etc/security/limits.conf
# 2. 永久修改虚拟内存映射数
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
# 3. 立即应用新配置
sysctl -p
ulimit -n 65535
# 4. 为 Elasticsearch 用户添加额外权限(解决 memlock 问题)
echo "elasticsearch - memlock unlimited" >> /etc/security/limits.conf

基础准备

同单机没有区别。

代码语言:javascript
代码运行次数:0
运行
复制
yum -y install java-1.8.0-openjdk
代码语言:javascript
代码运行次数:0
运行
复制
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.29-linux-x86_64.tar.gz
代码语言:javascript
代码运行次数:0
运行
复制
#root用户操作
useradd es
mv elasticsearch-7.17.29-linux-x86_64.tar.gz /home/es/
chown es.es /home/es/elasticsearch-7.17.29-linux-x86_64.tar.gz 
su es
#es用户操作
cd ~
tar xvf elasticsearch-7.17.29-linux-x86_64.tar.gz
cd elasticsearch-7.17.29

配置文件

其他节点替换对应的node.name和network.host,当然这里仅仅指定了很少的配置,时间这里可以指定很多配置的。

代码语言:javascript
代码运行次数:0
运行
复制
# ===== 核心配置 =====
cluster.name: three-node-cluster
node.name: node-171
node.roles: [master, data]
path.data: /home/es/data

# ===== 网络配置 =====
network.host: 192.168.31.171
http.port: 9200
transport.port: 9300

# ===== 集群发现 =====
discovery.seed_hosts:
  - "192.168.31.171:9300"
  - "192.168.31.172:9300"
  - "192.168.31.173:9300"

# ===== 首次启动配置(集群形成后注释) =====
cluster.initial_master_nodes:
  - "node-171"
  - "node-172"
  - "node-173"
代码语言:javascript
代码运行次数:0
运行
复制
#启动
./bin/elasticsearch -d

检查集群状态

状态是green就代表集群状态是ok的。

代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost ~]# curl -XGET 'http://192.168.31.171:9200/_cluster/health?pretty'
{
  "cluster_name" : "three-node-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 3,
  "active_shards" : 6,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

查看节点

这里会显示3个节点的一些统计信息。

代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost ~]# curl -XGET 'http://192.168.31.171:9200/_cat/nodes?v'
ip             heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.31.172           13          97   3    0.01    0.15     0.15 dm        *      node-172
192.168.31.171           15          88   2    0.22    0.18     0.14 dm        -      node-171
192.168.31.173            5          95   4    0.01    0.14     0.13 dm        -      node-173
[root@localhost ~]# 

到这里我们的集群版本就算部署完成。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档