3亿数据ES集群评估配置 es集群性能
转载
- ES为什么要实现集群
在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。
我们可以采用ES集群,将单个索引的分片到多个不同分布式物理机器上存储,从而可以实现高可用、容错性等 - ES是如何解决高并发 ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用 分片机制、集群发现、分片负载均衡请求路由。
Shards 分片:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
Replicas分片:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。 - ES集群核心原理分析:
每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储,每个分片都会分布式部署在多个不同的节点上进行部署,该分片成为primary shards 主分片。
查看索引分片信息http://192.168.127.132:9200/basic/_settings 注意:索引的主分片数量定义好后,不能被修改(待会讲)
每一个主分片为了实现高可用,都会有自己对应的备分分片,主分片对应的备分片不能存放同一台服务器上,主分片可以和其他备分片存放在同一个node节点上。
- http://192.168.127.132:9200/basic/_settings 结果
{"basic":{"settings":{"index":{"creation_date":"1567934971740","number_of_shards":"5","number_of_replicas":"1","uuid":"uwxVEjp0QoaOQAh4BFpYJw","version":{"created":"6040399"},"provided_name":"basic"}}}}
- "number_of_shards":"5" 主分片5个
"number_of_replicas":"1" 副分片1个
- ElasticSearch集群环境搭建
准备3台服务器192.168.2.108、192.168.2.111、192.168.2.112
- 修改3台服务器配置如下
cd /usr/local/elasticsearch6.4/config
vi elasticsearch.yml
########################修改配置如下#################
cluster.name: mytest ###三台服务器节点集群名称相同
node.name: node-1 #### 每个节点名称不一样 其他两台为node-2 ,node-3
network.host: 192.168.2.108 #### 当前部署的服务器ip地址
discovery.zen.ping.unicast.hosts: ["192.168.2.108", "192.168.2.111","192.168.2.112"] ###多个服务集群ip
discovery.zen.minimum_master_nodes: 1 ###最小节点3台都设为1
- 启动elasticSearch
注意: 我的3台服务器是克隆过来的,/usr/local/elasticsearch6.4/data的文件也被克隆过来了,这样会导致数据不同步,一定要先删除3台服务器data目录下的nodes文件或者克隆前先删除: rm -rf nodes
// 切换非root用户启动
su xiaobo
// 启动
./elasticsearch
- 测试
访问: http://192.168.2.108:9200/_cat/nodes?pretty - *号表示为master节点
在127节点添加数据
在133节点查询数据
停掉133节点测试
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。