6-elasticsearch节点添加及集群重启步骤

1、节点添加:
启动es实例就是新增了一个节点,es集群就是一组拥有相同集群名称(cluster.name)的节点;当节点加入或离开集群时,集群会自动识别并在可用节点之间分配数据;
若启动单实例的es,则集群中仅有一个节点,所有主分片都驻留在单节点上,无法分配副本分片,因此集群状态为yellow;该集群可完全正常工作,但是若发生故障则存在数据丢失的风险;

向集群中增加节点将提升集群整体的容量及可用性,默认情况下,一个节点既可以是数据节点,也可以通过选举成为主节点(控制整个集群);当然也可以配置一些特殊节点(Ingest节点),可以拦截请求,在请求之前或之后做一些操作;

当集群中节点数足够多的时候,集群会自动分配副本分片;当所有的主分片和副本分片均处于活跃状态,集群状态将变成green;

本地环境中可以在单台机器上启动多个节点来观察es集群多节点的表现,启动步骤:
1)、准备一个新的es实例;
2)、在elasticsearch.yml文件中指定参数cluster.name一致并指定discovery.seed_host(节点可以发现集群中其他节点);
3)、启动实例,节点将自动发现集群并加入;

2、集群重启
1)、禁止分片的分配
节点关闭时,es分配进程将等待index.unassigned.node_left.delayed_timeout(默认1分钟),然后将该节点分片数据复制到集群中其它节点上,这会涉及大量的I/O操作;由于该节点关闭之后很快会重启,所以这些I/O操作是不需要的,可以通过一下配置来避免主分片数据的迁移:

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "primaries"
  }
}

2)、停止数据的索引并同步刷新
执行同步刷新可加快分片数据的恢复

POST _flush/synced

执行同步刷新时需确保没有失败,尽管http请求本身返回200状态,但响应体中列出了因为索引挂起而失败的同步刷新操作;若失败可重新发送请求;
3)、临时停止与机器学习任务相关的作业以及数据推送的任务(如果存在)
4)、停止所有的节点
5)、执行任何需要的更改
6)、重启节点
如果指定了主节点,优先启动这些节点让其形成一个集群,然后再继续启动数据节点,这些可以通过查看日志来检查进度;
只要有足够的可选举节点相互发现,最终将会形成一个集群并选举一个主机,可以通过_cat请求查看集群情况:

GET _cat/health
GET _cat/nodes

7)、等待所有节点都加入集群并且集群状态为yellow
当节点加入集群时将开始恢复本地存储的所有主分片;若_cat/health请求结果状态为red,则表明并非所有的主分片都已分配;
一旦节点恢复了其本地分片,集群状态将成为yellow,表明所有主分片均已恢复,但是副本分片还未全部分配;这是在预料之中的,因为还没有重新启用分配的配置;等到集群状态转变成yellow时才开始副本分片的恢复;
8)、重启集群分片分配
当所有节点均加入到集群并且节点的主分片恢复,重新将参数cluster.routing.allocation.enable置成默认值;

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}

重启分片分配,集群开始在数据节点上进行副本分片的分配;从这里开始集群的索引和搜索都被认为是安全的,若是等到主分片及副本分片全部分配并且节点状态为green时,集群状态恢复将更快;使用_cat查看集群状态:

GET _cat/health
GET _cat/nodes

3、集群回滚的策略同重启类似

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值