1.集群的健康状况
(1).简介
可以通过API查看集群的健康状况,健康状态只是表明主分片的分配情况,并不代表集群服务的状态,elasticsearch的集群健康状态包括如下三种状态。

  • green:健康状态,指所有主副分片都正常分配
  • yellow:指所有主分片都可以正常分配,但有副本分片未正常分配
  • red:有主分片未正常分配

(2).query

GET _cluster/health
{
"cluster_name" : "sampleCluster",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 19,
"active_shards" : 19,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 15,
"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" : 55.88235294117647
}

2.集群的故障转移
(1).问题
搭建一个拥有三个节点(node1、node2和node3)的集群,每个节点都含有1个主分片和1个副本,其中node1为P0和R1,node2为P1和R2,node3为P2和R0,如果node1所在机器宕机导致服务终止,此时集群会如何处理?

(2).解决方案
首先,node2和node3发现node1无法响应一段时间后会发起master选举,比如这里选择node2为master节点,此时由于主分片P0下线,集群状态变为red。
然后,node2发现主分片P0未分配,将R0提升为主分片,此时由于所有主分片都正常分配,仅副分片未分配,因此集群状态变为yellow。
最后,node2为P0和P1产生新的副本,集群状态变为绿色。