• ElasticSearch笔记(四)--集群搭建


    概念

    ES集群特点:
    高可用:
    什么是高可用?CAP 定理是分布式系统的基础,也是分布式系统的 3 个指标:

    Consistency(一致性)
    Availability(可用性)
    Partition tolerance(分区容错性)

    那高可用(High Availability)是什么?高可用,简称 HA,是系统一种特征或者指标,通常是指,提供一定性能上的服务运行时间,高于平均正常时间段。反之,消除系统服务不可用的时间。
    衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。
    Elasticsearch 在高可用性上,体现如下两点:

    服务可用性:允许部分节点停止服务,整体服务没有影响
    数据可用性:允许部分节点丢失,最终不会丢失数据

    可扩展:
    Elasticsearch 可以横向扩展至数百(甚至数千)的服务器节点,同时可以处理PB级数据。Elasticsearch 为了可扩展性而生,由小规模集群增长为大规模集群的过程几乎完全自动化。

    Elasticsearch 分布式特性
    上面通过可扩展性,可以看出 Elasticsearch 分布式的好处明显:

    存储可以水平扩容,水平空间换时间
    部分节点停止服务,整个集群服务不受影响,照样正常提供服务

    Elasticsearch 在后台自动完成了分布式相关工作,如下:

    自动分配文档到不同分片或者多节点上
    均衡分配分片到集群节点上,index 和 search 操作时进行负载均衡
    复制每个分片,支持数据冗余,防止硬件故障数据丢失
    集群扩容时,无缝整合新节点,并且重新分配分片

    Elasticsearch 集群知识点如下:

    不同集群通过名字区分,默认集群名称为 “elasticsearch”
    集群名 cluster.name ,可以通过配置文件修改或者命令行 -E cluster.name=user-es-cluster 进行设置
    一个集群由多个节点组成

    es集群:由若干节点组成,cluster.name相同

    master节点:集群中的一个节点会被选为master节点,它将负责管理集群范畴的变更,例如创建或删除索引,添加节点到集群或从集群删除节点。master节点无需参与文档层面的变更和搜索,这意味着仅有一个master节点并不会因流量增长而成为瓶颈。任意一个节点都可以成为master节点。

    data节点:持有数据和倒排索引。默认情况下,每个节点都可以通过设定配置文件elasticsearch.yml中的node.data属性为 true(默认)成为数据节点。如果需要一个专门的主节点,应将其node.data属性设置为false。

    Client节点:如果将node.master属性和node.data属性都设置为false,那么该节点就是一个客户端节点,扮演一个负载均衡的角色,将到来的请求路由到集群中的各个节点。

    分片:
    (1)单个节点由于物理机硬件限制,存储的文档是有限的,如果一个索引包含海量文档,则不能在单个节点存储。ES提供分 片机制,同一个索引可以存储在不同分片(数据容器)中,这些分片又可以存储在集群中不同节点上
    (2)分片分为 主分片(primary shard) 以及从分片(replica shard)
    (3)主分片与从分片关系:从分片只是主分片的一个副本,它用于提供数据的冗余副本
    (4)从分片应用:在硬件故障时提供数据保护,同时服务于搜索和检索这种只读请求
    (5)是否可变:索引中的主分片的数量在索引创建后就固定下来了,但是从分片的数量可以随时改变
    (6)索引默认创建的分片:默认设置5个主分片和一组从分片(即每个主分片有一个从分片对应),但是从分片没有被启用(主从分片在同一个节点上没有意义),因此集群健康值显示为黄色(yellow)。

    1、修改配置文件支持集群

    节点1

    vi elasticsearch.yml
    
    cluster.name: elasticsearch
    node.name: node-1
    network.host: 0.0.0.0
    http.port: 9200
    node.max_local_storage_nodes: 2
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    discovery.zen.ping.unicast.hosts: ["172.28.2.1:9300", "172.28.2.2:9300"]
    node.master: true 
    node.data: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    节点2

    vi elasticsearch.yml
    
    cluster.name: elasticsearch # 集群的名字
    node.name: node-2 # 节点名字
    network.host: 0.0.0.0
    http.port: 9200 #设置对外服务的http端口,默认为9200。kibana则通过该端口与es交互
    node.max_local_storage_nodes: 2
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    discovery.zen.ping.unicast.hosts: ["172.28.2.1:9300", "172.28.2.2:9300"]
    node.master: true #是否有资格作为master节点
    node.data: true #是否作为数据接口
    
    #是否作为预处理节点
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    2、检测集群安装情况
    curl -L 'http://172.28.2.1:9200/_cat/nodes?pretty'
    
    
    • 1
    • 2

    在这里插入图片描述

    3、查询健康状态和索引库清单
    curl -L 'http://172.28.2.1:9200/_cluster/health?level=indices'
    
    curl -L 'http://172.28.2.1:9200/_cluster/health?level=indices&pretty'
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    4、检测集群健康状态
    curl -L '172.28.2.1:9200/_cluster/health?pretty'
    
    • 1

    在这里插入图片描述

    5、kibana配置文件修改后报错:child “elasticsearch” fails because [“hosts” is not allowed]

    由于想配置kibana支持集群,所以在配置文件中增加了elasticsearch.hosts节点。查阅资料后,貌似是不支持集群的。修改配置文件kibana.yml中的
    elasticsearch.hosts: [“http://172.28.2.1:9200”] 改为
    elasticsearch.url:“http://172.28.2.1:9200”

    参考链接:
    http://t.zoukankan.com/lgjava-p-12213048.html
    https://www.elastic.co/guide/cn/elasticsearch/guide/current/_cluster_health.html
    https://blog.51cto.com/michaelkang/2061712

  • 相关阅读:
    【JavaSE】初识数据类型
    josef约瑟 时间继电器 ST3PA-A AC220V 带插座PF085A
    阿里巴巴Java面试题、笔试题(含答案)
    DL-24C/2A电流继电器
    【吴恩达机器学习笔记】十一、聚类
    Vue-i18n在Routerd动态路由下实现国际化
    编程扎记01
    08 | XenCentrer的安装及使用
    【面试题】前端人70%以上 不了解的promise/async await
    测评 | 你是社恐吗?
  • 原文地址:https://blog.csdn.net/qq_26993175/article/details/125891077