ElasticSearch高可用集群原理及搭建

本文介绍了ElasticSearch为何及如何实现集群,通过分片和副本机制解决高并发问题,提升系统容错性和查询效率。详细讲解了集群核心原理,包括分片存储、副本分配策略以及数据路由算法,并提供了具体的集群搭建步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ElasticSearch为什么要实现集群

在单台ElasticSearch服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。
我们可以采用ElasticSearch集群,将单个索引的分片到多个不同分布式物理机器上存储,从而实现高可用、
容错性等。ElasticSearch会自动选举实现主备服务器。

ElasticSearch如何解决高并发

ElasticSearch是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用分片机制、集群发现、分片负载
均衡请求路由。
Shards分片:代表索引分片,ElasticSearch可以把一个完整的索引分成多个分片,这样的好处是可以把一个
大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引
创建后不能更改。
Replicas分片:代表索引副本,ElasticSearch可以设置多个索引的副本,副本的作用一是提高系统的容错性,
当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高ElasticSearch的查询效率,ElasticSearch
会自动对搜索请求进行负载均衡。

ElasticSearch集群核心原理分析

1、每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储,每个分片都会分布式
部署在多个不同的节点上,该分片成为primary shards主分片。
      查看索引分片信息http://192.168.86.130:9200/mytest/_settings
      注意:索引的主分片数量定义好后,不能修改
2、每一个主分片为了实现高可用,都会有自己对应的备份分片,主分片对应的备份分片不能存放同一台服务器上。
      这就说明单台ElasticSearch服务器上是没有备份分片的。

document routing(数据路由)

当客户端发起创建document的时候,ElasticSearch需要确定这个document放在该索引哪个shard上。这个过
程就是数据路由。
路由算法:分片位置shard=hash(routing) % number_of_primary_shards
如果number_of_primary_shards在查询的时候取余发生变化,则无法获取到该数据。即:在查询的时候,底层
根据文档id%主分片数量获取分片位置

ElasticSearch集群搭建

第一步 准备三台服务器
服务器名称	        IP地址
 node-1	        192.168.86.130
 node-2	        192.168.86.131
 node-3	        192.168.86.132
第二步 服务器集群配置
在/opt/application/es6.7.0下执行cd config命令后,再执行vi elasticsearch.yml命令,然后修改:
1、cluster.name: myes      ###保证三台服务器节点集群名称相同
2、node.name: node-1      ###每个节点名称不一样,其他两台为node-2,node-3
3、network.host: 192.168.86.130   ###实际服务器的ip地址
4、discovery.zen.ping.unicast.hosts: ["192.168.86.130", "192.168.86.131","192.168.86.132"]   ###多个服务集群ip
5、discovery.zen.minimum_master_nodes:1
6、关闭防火墙 systemctl stop firewalld.service

三台服务器都做同样的配置步骤,只有2和3不一样,其他一模一样。

注意

如果另两台服务器是克隆第一台服务器所得,那么data文件会导致数据不同步,报错误为:
failed to send join request to master ,因为克隆导致data文件也克隆啦,直接清除每台服务器data文件。即:在/opt/application/es6.7.0/data目录下执行rm -rf nodes,然后再重新启动每一台服务器。

验证集群效果

在浏览器中输入:http://192.168.86.130/_cat/nodes?pretty

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值