您当前的位置: 首页 > 

java持续实践

暂无认证

  • 2浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

es 7.x 单节点集群&故障转移

java持续实践 发布时间:2022-01-23 18:56:36 ,浏览量:2

文章目录
      • 单节点集群的概念
      • 演示分片与副本
      • 故障转移
        • 第一个报错
        • 第二个错误
        • 第三个错误

单节点集群的概念

整个集群中, 只有一个节点, 就叫做单节点集群.

演示分片与副本

默认情况下, 索引的分片是1, 副本是1.

分配3个主分片和一个副本. 即这 三个分片, 都有一个副本 , 那么就会有6个分片.

由于linux的es集群不能只启动一个节点. 因此需要使用windows的es集群. windows的es集群操作如下, 先只启动一个节点 https://javaweixin6.blog.csdn.net/article/details/122652436

创建索引 执行put请求 http://localhost:1001/users 请求体设置分片数据如下

{
    "settings" : {
        "number_of_shards" : 3,
        "number_of_replicas" : 1
   } 
}

执行get查询请求, 可以看到 分片的数量是3, 副本是1个. 在这里插入图片描述 集群现在的状态是拥有一个索引的单节点集群, 所有的3个主分片, 都被分配在node-1中.

浏览器安装elasticsearch-head插件来进行查看. 在这里插入图片描述 在这里插入图片描述 输入es的地址, 即可查看es的索引信息. 在这里插入图片描述 可以看到集群健康值是yellow, 代表主分片是正常的, 副本是不正常的. 因为现在只有一个节点,没有其他节点能分配副本数据

故障转移

当集群只有一个节点在运行时, 意味着会有单点故障的问题. 没有冗余的数据. 只要再启动一个节点, 可以防止数据丢失. 启动的第二个节点, cluster.name的名称要与第一个节点一致. 就会自动加入到集群中去.

如果启动了第二个节点, 集群会拥有两个节点的集群, 所有主分片和副分片都已经被分配.

第一个报错

此时启动第二个节点报错: 在这里插入图片描述 大致意思是之前加入过一个集群, 但是现在找不到之前的集群了. 原因是因为我删除过node1的data目录的数据, 解决办法是把node2和3也删除一下数据, 让其加入新的集群.

第二个错误

启动了第二个节点后, 副本还是没有分配. 显示如下, 经排查原因是我没有和视频中使用的es版本一致. 我使用的是7.16.2的版本 , 此版本会有一些内置的索引等原因导致users索引分配副本失败.

第三个错误

使用了7.8.0版本的es后, 集群的健康状态还是yellow . 并且日志显示如下 low disk watermark [85%] exceeded on/replicas will not be assigned to this node 我d盘分配的375gb, 也就是说 至少得剩余56.25gb才行, 现在只有44.7gb, 就导致es副本分配失败. 在这里插入图片描述 说明是磁盘超过85%的使用, 就不会再分配副本. 之后查阅此文章 https://blog.csdn.net/weixin_41058733/article/details/116900914 在yml中增加此配置 cluster.routing.allocation.disk.threshold_enabled: false 之后 再启动es , 终于成功 在这里插入图片描述

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.5116s