ElasticSearch集群

ES集群

1.为什么需要集群

1)单点故障
2)高并发
3)海量数据

2.ES集群相关概念

ES 的1个集群中放多个节点,放多个shard(shard又分成主的shard和从shard)
ES cluster(1)—Node()-Shard()

ES节点类型Node有三种节点:
master Node:主节点,维护集群信息 索引库操作
data node:数据节点, 文档crud
client node:只负责处理用户请求

1、默认情况下,每个节点都有成为主节点的资格,也会存储数据,还会处理客户端的请求。- 在生产环境下,如果不修改ElasticSearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题
2、在一个生产集群中我们可以对这些节点的职责进行划分。建议集群中设置3台以上的节点作为master节点【node.master: true node.data: false】,这些节点只负责成为主节点,维护整个集群的状态。
3、再根据数据量设置一批data节点【node.master: false node.data: true】,这些节点只负责存储数据,后期提供建立索引和查询索引的服务,这样的话如果用户请求比较频繁,这些节点的压力也会比较大。
4、在集群中建议再设置一批client节点【node.master: false node.data: false】,这些节点只负责处理用户请求,实现请求转发,负载均衡等功能。

3.集群理解

3.1、shard&replica机制再次梳理以及单node环境中创建index图解①图解单node环境下创建index是什么样子的

(1)单node环境下,创建一个index,有3个primary shard,3个replica shard
(2)集群status是yellow
(3)这个时候,只会将3个primary shard分配到仅有的一个node上去,另外3个replica shard是无法分配的
(4)集群可以正常工作,但是一旦出现节点宕机,数据全部丢失,而且集群不可用,无法承接任何请求
在这里插入图片描述

3.2、图解2个node环境下replica shard是如何分配的

(1)replica shard分配:3个primary shard,3个replica shard,2 node
(2)primary —> replica同步
(3)读请求:primary/replica

在这里插入图片描述

3.3、图解横向扩容过程,如何超出扩容极限,以及如何提升容错性

(1)primary&replica自动负载均衡,6个shard,3 primary,3 replica
(2)每个node有更少的shard,IO/CPU/Memory资源给每个shard分配更多,每个shard性能更好
(3)扩容的极限,6个shard(3 primary,3 replica),最多扩容到6台机器,每个shard可以占用单台服务器的所有资源,性能最好
(4)超出扩容极限,动态修改replica数量,9个shard(3primary,6 replica),扩容到9台机器,比3台机器时,拥有3倍的读吞吐量
(5)3台机器下,9个shard(3 primary,6 replica),资源更少,但是容错性更好,最多容纳2台机器宕机;
(6)这里的这些知识点,你综合起来看,就是说,一方面告诉你扩容的原理,怎么扩容,怎么提升系统整体吞吐量;另一方面要考虑到系统的容错性,怎么保证提高容错性,让尽可能多的服务器宕机,保证数据不丢失。

在这里插入图片描述

3.4、图解Elasticsearch容错机制:master选举,replica容错,数据恢复

(1)6 shard,3 node
(2)master node宕机,自动master选举,red
(3)replica容错:新master将replica提升为primary shard,yellow
(4)重启宕机node,master copy replica到该node,使用原有的shard并同步宕机后的修改,green
在这里插入图片描述

4.搭建

4.1、环境准备

真实环境 – 虚拟 3 台电脑centos

NodeNameWeb端口,客户端端口
node-1 --es1172.168.1.1:9200 172.168.1.1:9300
node-2 --es2172.168.1.2:9200 172.168.1.2:9300
node-3 --es3172.168.1.3:9200 172.168.1.3:9300

模拟环境

NodeNameWeb端口,客户端端口
node-1127.0.0.1:9201 127.0.0.1:9301
node-2127.0.0.1:9202 127.0.0.1:9302
node-3127.0.0.1:9203 127.0.0.1:9303

使用新解压的es服务,开启跨域
步骤:
(1)拷贝三份ES服务
(2)修改每个内存配置1g
(3)修改三个节点配置

4.2、修改三个节点配置

配置参数详解:
cluster.name
集群名,自定义集群名,默认为elasticsearch,建议修改,因为低版本多播模式下同一网段下相同集群名会自动加入同一集群,如生产环境这样易造成数据运维紊乱。
node.name
节点名,同一集群下要求每个节点的节点名不一致,起到区分节点和辨认节点作用
node.master
是否为主节点,选项为true或false,当为true时在集群启动时该节点为主节点,在宕机或任务挂掉之后会选举新的主节点,恢复后该节点依然为主节点
node.data
是否处理数据,选项为true或false。负责数据的相关操作
http.port
对外访问的端口号,默认为9200,所以外界访问该节点一般为http://ip:9200/
transport.tcp.port
集群间通信的端口号,默认为9300
[“192.168.1.101”,“192.168.1.102”]
discovery.zen.minimum_master_nodes
最少的主节点个数,为了防止脑裂,最好设置为(总结点数/2 + 1)个

在这里插入图片描述

4.3、启动并测试

分别启动,创建索引,创建类型,插入文档
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值