您当前的位置: 首页 >  java持续实践

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

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

文章目录

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

单节点集群的概念

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

演示分片与副本

默认情况下, 索引的分片是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 , 终于成功

关注
打赏
查看更多评论

java持续实践

暂无认证

  • 4浏览

    0关注

    583博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录