[关闭]
@runzhliu 2018-01-29T13:56:57.000000Z 字数 2348 阅读 725

Elasticsearch 集群管理

elasticsearch cluster


参考资料
《Elasticsearch 技术解析与实战》


1 集群节点监控

1.1 集群健康值

查看集群健康 API 的简单情况。

  1. curl -XGET http://10.25.145.119:8581/_cluster/health?pretty

返回结果:

  1. {
  2. "cluster_name" : "dxy-es",
  3. "status" : "green",
  4. "timed_out" : false,
  5. "number_of_nodes" : 8,
  6. "number_of_data_nodes" : 3,
  7. "active_primary_shards" : 1,
  8. "active_shards" : 1,
  9. "relocating_shards" : 0,
  10. "initializing_shards" : 0,
  11. "unassigned_shards" : 0,
  12. "delayed_unassigned_shards" : 0,
  13. "number_of_pending_tasks" : 0,
  14. "number_of_in_flight_fetch" : 0,
  15. "task_max_waiting_in_queue_millis" : 0,
  16. "active_shards_percent_as_number" : 100.0
  17. }

查看指定索引的健康情况:

  1. curl -XGET http://10.25.145.119:8581/_cluster/health/pi_document_content_v2?pretty

返回结果:

  1. {
  2. "cluster_name" : "dxy-es",
  3. "status" : "green",
  4. "timed_out" : false,
  5. "number_of_nodes" : 8,
  6. "number_of_data_nodes" : 3,
  7. "active_primary_shards" : 1,
  8. "active_shards" : 1,
  9. "relocating_shards" : 0,
  10. "initializing_shards" : 0,
  11. "unassigned_shards" : 0,
  12. "delayed_unassigned_shards" : 0,
  13. "number_of_pending_tasks" : 0,
  14. "number_of_in_flight_fetch" : 0,
  15. "task_max_waiting_in_queue_millis" : 0,
  16. "active_shards_percent_as_number" : 100.0
  17. }

1.2 集群状态

可以查看整个集群的综合状态信息。

  1. curl -XGET http://10.25.145.119:8581/_cluster/state?pretty

1.3 集群统计

注意跟上述 API 有所区别,集群统计信息可以通过 API_cluster/stats,返回两个最基本的信息,一个是索引信息,比如分片的数量、存储大小、内存使用等。另一个是集群节点的信息,比如节点数量、角色、操作系统、JVM 版本、内存使用率、CPU、和插件的安装信息。

  1. curl -XGET http://10.25.145.119:8581/_cluster/stats?pretty

1.4 节点信息

集群节点信息接口用于搜索一个或多个集群节点信息。

  1. curl -XGET http://10.25.145.119:8581/_nodes?pretty

2 集群分片迁移

在 ES 中可以通过集群路由 API_cluster/reroute 来对集群中的分片进行曹组 ,例如可以在集群中把一个分片从一个节点迁移到另一个节点,把未分配的分片可以分配到一个特定的节点上等。

3 集群节点配置

启动 ES 实例,就会启动至少一个节点,相同集群名的多个节点的连接就组成一个集群,在默认情况下,集群中的每个节点都可以处理 HTTP 请求和集群节点的数据传输。集群中所有的节点都知道集群中其他所有的节点,可以把客户端请求转发到适当的节点。节点分为以下类型:

1. 主节点 master:在上一个节点上当 node.master 设置为 true 的时候,他有资格被选作为主节点,控制整个集群。
2. 数据节点 data:在一个节点 node.data 设置为 true 的时候,该节点保存数据和执行数据相关操作,如增删改查、搜索或聚合。
3. 客户端节点:当一个节点的 node.master 和 node.data 都设置为 false 的时候,既不是主节点也不能称为客户端节点。
4. 部落节点:当一个节点配置 tribe.* 的时候,它是一个特殊的客户端,可以连接多个集群,在所有连接的集群上执行搜索和其他操作。

3.1 主节点

主节点的主要职责是和集群操作相关的内容,如创建和删除索引,跟踪那些节点是集群的一部分,并决定哪些分片分配给相关节点。稳定的主节点对集群的健康是非常重要的。

索引数据和搜索查询等操作会占用大量 CPU、内存、IO 资源,为确保一个集群的稳定,分离主节点和数据节点是比价好的一个选择。

3.2 数据节点

数据节点主要是存储索引数据的节点,主要对文档进行增删改查、聚合操作等。数据节点对 CPU、内存、IO 要求比较高,在优化的时候需要监控数据节点的状态。

4 节点发现

在 ES 中,节点之间可以进行相互发现,并把相同集群名称的节点统一成一个集群。

4.1 主节点选举

在集群中系统会自动通过 ping 来进行选举主节点或者加入主节点,这些都是自动完成的。

4.2 故障检测

有两种方式进行故障检测,第一个是由主节点到其他节点的验证,证明它们还活着。另一种是每个节点 ping 主节点验证,当主节点有故障的时候会启动选举过程。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注