1.一个空的集群
如果启动单个Elasticsearch实例,没有数据和索引。那么集群就是如下形式:
Node 节点,就是一个运行的Elasticsearch实例。一个集群Cluster包含一个或者多个具有相同cluster.name的节点。cluster.name在elasticsearch.yml中指定。一个集群中的节点共同分担整个集群的数据和压力。当向集群中增加或者删除节点时,集群自身会从新均匀地分布数据到其他节点上。
集群中的Master节点时通过选举产生的,Master节点会负责整个集群层面的变更,例如创建或者删除一个索引,或者增加或删除一个节点。Master节点并不会涉及到文档层面的变更或者查询,这就意味着当流量增长时如果在集群中只有一个Master节点并不会成为瓶颈。任何节点都可以成为Master节点。
用户可以和集群中任何一个节点通信,包括Master节点。每个节点都知道每个文档存放在哪里并且会将我们的查询请求直接转发到存储所要数据的节点上。然后那个节点会将响应直接返回给客户端。所有这些都是通过Elasticsearch自身来管理的。
2.集群健康状况
curl http://127.0.0.1:9200/_cluster/health?pretty
{ "cluster_name" : "xxxxx_prod_elasticsearch", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 0, "active_shards" : 0, "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 }
最重要的就是status字段,表示整个集群的监控状况
green 表示所有的primary和repica分片活动状态。
yellow 表示所有的primary分片处于活动状态,但是不是所有的replica分片是活动的
red 不是所有的primary分片都是活动的
3.增加一个索引
为了向Elasticsearch中添加数据,我们需要一个索引,就是一个存放数据的地方。实际上,一个索引就仅是一个指向一个或者多个物理分片的逻辑上的域名空间而已。
一个分片只是索引中的所有的数据的一个切片,它是一个低级的工作单元。文档是存放并索引在分片中的,但是应用程序不直接和分片通信,而是通过索引来通信。
一个分片要么是一个primary分片或者一个replica分片。索引中的每条文档都归属于单个primary分片。所以,primary分片的数量决定了索引可以存储的最大数据容量。
replica分片仅仅是primary分片的一个拷贝,是为了为数据提供冗余,防止在硬件出故障的时候数据丢失。并且提供查询文档或者获取文档的功能。
现在创建一个叫做blogs的索引
curl -XPUT http://127.0.0.1:9200/blogs
curl -XGET http://127.0.0.1:9200/blogs?pretty=true
{ "blogs" : { "aliases" : { }, "mappings" : { }, "settings" : { "index" : { "creation_date" : "1461250293462", "number_of_shards" : "5", "number_of_replicas" : "1", "uuid" : "fIdjCvoXTQy9eMaKmIrnrQ", "version" : { "created" : "2030199" } } }, "warmers" : { } } }
默认情况下,新创建的索引会被分配5个primary分片,每个primary分片被分配1个replica分片。
然后再查看集群的状态
curl -XGET http://127.0.0.1:9200/_cluster/health?pretty
{ "cluster_name" : "xxxx_prod_elasticsearch", "status" : "yellow", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 5, "active_shards" : 5, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 5, "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" : 50.0 }
可以看到status是yellow状态,unassigned_shards是5
集群健康状态是yellow表示所有的primary分片都是活动的,可以向外提供任何的请求,但是不是所有的replica分片是活动的。
4.增加备用节点
只运行单个节点意味着存在单点故障的问题,没有冗余功能。可以通过增加备用节点来保护我们的数据。
参考文档:
https://www.elastic.co/guide/en/elasticsearch/guide/current/distributed-cluster.html
本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1766432
原文地址:http://john88wang.blog.51cto.com/2165294/1766432