节点类型

  • 不同角色的节点
    • Master eligible / Data / Ingest / Coordinate / Machine Learning
    • 根据数据量,写入和查询的吞吐量,选择合适的部署方式
  • 一个节点在默认节点角色:Master eligible、data node、ingest node
  • 单一职责

    • master eligible:负责集群状态(cluster state)的管理;使用低配置的CPU、RAM和磁盘
    • data node:负责数据存储及处理客户端请求;高配的CPU、RAM、磁盘
    • ingest node:负责数据处理;高配CPU、中配RAM、低配磁盘

      Hot & Warm 架构

  • 冷热数据分离

  • 标记节点
    • 通过node.attr来标记一个节点
      • 通过elasticsearach.yml或者通过-E命令(-E node.attr.my_node_type=hot)
    • 创建索引
      • 设置 settings:index.routing.allocation.require.my_node_type:hot
  • hot数据移动到warm节点

    • index.routing.allocation是一个索引级的dynamic setting,可以通过API在后期进行设定
      1. put log-2020-06/_settings
      2. {
      3. "index.routing.allocation.require.my_node_type":"warm"
      4. }

      分片

  • 日志类应用,但个分片不要大于50GB

  • 搜索类应用,单个分片不要超过20GB

    生产环境配置

    参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/setup-configuration-memory.html

  • JVM设定

    • ES6开始,只支持64位的JVM
    • 将内存Xms和Xmx设置成一样,避免heap resize时引发停顿
    • Xmx设置不要超过物理内存的50%;单节点上,最大内存建议不要超过32G(JVM会使用内存对象指针压缩技术)
    • JVM必须使用Server模式
  • linux
    • 关闭swapping
  • 内存设定
    • 内存大小要根据Node需要存储的数据来估算
      • 搜索类的比例:1:16
      • 日志类:1:48 - 1:96之间
    • 总数量1T,设置一个副本=2T总数量