es 的设计隐藏了分布式本身的复杂性。
es 用于构建高可用和可扩展的系统。扩展的方式可以是购买更好的服务器(纵向扩展)或者购买更多的服务器(横向扩展)。
纵向扩展具有局限性,真正的扩展应该是横向的,它通过增加节点来增加均摊负载和增加可靠性。
集群健康
在 es 集群中可以监控很多信息,但是只有一个是最重要的:集群健康(cluster health)。集群健康有三种状态:green,yellow,red。
curl -X GET "192.168.0.202:9200/_cluster/health" -H 'Content-Type: application/json'
在当前集群上运行以上命令:
{
"cluster_name": "es_test",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 62,
"active_shards": 62,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 57,
"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": 52.10084033613446
}
status 使我们最感兴趣的字段:
status 字段提供一个综合的指标来表示集群的服务状况,三种颜色各自的含义:
颜色 | 意义 |
---|---|
green | 所有主要分片和复制分片都可用 |
yellow | 所有主要分片可用,但是不是所有复制分片都可用 |
red | 不是所有的主要分片都可用 |