编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

ES集群的高可用架构:副本机制(es集群分片和副本)

wxchong 2024-11-07 13:08:47 开源技术 53 ℃ 0 评论

一、节点类型

master节点

  1. 索引的创建或删除
  2. 跟踪哪些节点是集群的一部分
  3. 决定把那些分片分配给相关的节点

data节点(数据节点)

  1. 存储索引数据
  2. 对文档进行增删改查,聚合操作

client节点(客户端节点/路由节点)

  1. 处理路由请求
  2. 处理搜索
  3. 分发索引

部落节点

  1. 部落节点可以跨越多个集群,它可以接收每个集群的状态,然后合并成一个全局集群的状态,它可以读写所有节点上的数据

Ingest节点(提取节点)

  1. Ingest节点和集群中的其他节点一样,但是它能够创建多个处理器管道,用以修改传入文档。类似 最常用的Logstash过滤器已被实现为处理器。
  2. Ingest节点 可用于执行常见的数据转换和丰富。 处理器配置为形成管道。 在写入时,Ingest Node有20个内置处理器,例如grok,date,gsub,小写/大写,删除和重命名
  3. 在批量请求或索引操作之前,Ingest节点拦截请求,并对文档进行处理。


ES集群的元数据

集群节点、索引、索引的映射和配置、索引的分片和节点的对应关系、shard的in-sync副本集合;


ES的写入和读取的简单流程

document都有一个id,要不然是你分配的,要不然他内置自动分配的,一般来说都是你自己分配的,可以是订单id,用户id,在随机选择一个协调节点,协调节点拥有集群里所有的元数据,在能根据id哈希路由到其中一个shard上面进行写入;

搜索时根据id路由至shard,在可以从主shard或者副本shard去读取,一般会去现在副本shard,因为主shard一般要承载大量写请求;

如果写入或者读取的时候主分片有问题,会通知master将副本分片提升成主分片,再选择一个其他节点重新分配一个副本节点,如果是副本分片有问题则直接分配一个副本分片进行同步;

查询ES某个索引分片信息

http://xx.xx.xx.xx:9200/索引名称/_search_shards
{
    "nodes": {
        "Q6i1duFYQLmJFIu812DQjQ": {
            "name": "node1",
            "ephemeral_id": "Zaxg4gF1QweERCnY63t1fA",
            "transport_address": "172.26.0.4:9300",
            "attributes": {
                "ml.machine_memory": "5312626688",
                "ml.max_open_jobs": "20",
                "xpack.installed": "true",
                "ml.enabled": "true"
            }
        },
        "eGOZucwVSqSlivu7U4M15A": {
            "name": "node2",
            "ephemeral_id": "s6BOw2weR_CWJqIB9t8nxg",
            "transport_address": "172.26.0.3:9302",
            "attributes": {
                "ml.machine_memory": "5312626688",
                "ml.max_open_jobs": "20",
                "xpack.installed": "true",
                "ml.enabled": "true"
            }
        }
    },
    "indices": {
        "elk-nginx-20191029": {}
    },
    "shards": [
        [
            {
                "state": "STARTED",  //分片状态
                "primary": true,  //是否是主分片
                "node": "Q6i1duFYQLmJFIu812DQjQ",  //所在elasticsearch节点
                "relocating_node": null,
                "shard": 0,  //分片号
                "index": "elk-nginx-20191029",  //索引名字
                "allocation_id": {
                    "id": "hVy0KVIbSdSC7aitI453_A"
                }
            },
            {
                "state": "undefined",
                "primary": false,
                "node": "eGOZucwVSqSlivu7U4M15A",
                "relocating_node": null,
                "shard": 0,
                "index": "elk-nginx-20191029",
                "allocation_id": {
                    "id": "1LEnZTSMQLmLC8-FXUMW4g"
                }
            }
        ],
        [
            {
                "state": "STARTED",
                "primary": true,
                "node": "eGOZucwVSqSlivu7U4M15A",
                "relocating_node": null,
                "shard": 1,
                "index": "elk-nginx-20191029",
                "allocation_id": {
                    "id": "pieh1viPT56eXlkZ7Ki4xg"
                }
            },
            {
                "state": "STARTED",
                "primary": false,
                "node": "Q6i1duFYQLmJFIu812DQjQ",
                "relocating_node": null,
                "shard": 1,
                "index": "elk-nginx-20191029",
                "allocation_id": {
                    "id": "0jTTLcL5T0in8_IHDSl4Yw"
                }
            }
        ],
        [
            {
                "state": "STARTED",
                "primary": true,
                "node": "Q6i1duFYQLmJFIu812DQjQ",
                "relocating_node": null,
                "shard": 2,
                "index": "elk-nginx-20191029",
                "allocation_id": {
                    "id": "OpQ5KMPQQRKPN3IoGfjaaQ"
                }
            },
            {
                "state": "STARTED",
                "primary": false,
                "node": "eGOZucwVSqSlivu7U4M15A",
                "relocating_node": null,
                "shard": 2,
                "index": "elk-nginx-20191029",
                "allocation_id": {
                    "id": "qNkggEgoRsSHsli4pgeoXw"
                }
            }
        ],
        [
            {
                "state": "STARTED",
                "primary": false,
                "node": "Q6i1duFYQLmJFIu812DQjQ",
                "relocating_node": null,
                "shard": 3,
                "index": "elk-nginx-20191029",
                "allocation_id": {
                    "id": "ag9IdGs6QrO4489j4eY1Vg"
                }
            },
            {
                "state": "STARTED",
                "primary": true,
                "node": "eGOZucwVSqSlivu7U4M15A",
                "relocating_node": null,
                "shard": 3,
                "index": "elk-nginx-20191029",
                "allocation_id": {
                    "id": "wnZSVqEkSgK3AC0Y6dVwfQ"
                }
            }
        ],
        [
            {
                "state": "STARTED",
                "primary": false,
                "node": "eGOZucwVSqSlivu7U4M15A",
                "relocating_node": null,
                "shard": 4,
                "index": "elk-nginx-20191029",
                "allocation_id": {
                    "id": "nCJp71GST96W5kK-JQK6mw"
                }
            },
            {
                "state": "STARTED",          //分片状态
                "primary": true,                  //是否是主分片
                "node": "Q6i1duFYQLmJFIu812DQjQ",          //所在elasticsearch节点
                "relocating_node": null,
                "shard": 4,                                                //分片号
                "index": "elk-nginx-20191029",                 //索引名字
                "allocation_id": {
                    "id": "rjY1Y3S7So-jZMhq6YmJ3w"
                }
            }
        ]
    ]
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表