ElasticSearch集群缩容

ElasticSearch版本:6.4.2

缩容场景:

公司多个ES集群,占用资源,考虑释放多台服务器。

问题调研:

集群脑裂,集群同时出现多台master节点,导致数据彼此不同步,处理起来会非常麻烦。
ES官方推荐集群最少三台节点构成。那么我考虑将公司的数据集群缩容成两台,两个节点构成的集群能否避免脑裂问题呢?
两个节点构成的集群有哪些风险和优势呢?

问题剖析:

master选举

discovery.zen.minimum_master_nodes参数设置,对master选举至关重要,表示必需有多少台节点参与选举,master选举才能正常进行。参数设置算法是:master候选资格节点数量 / 2 + 1。

三台节点集群master选举和高可用

拿三台节点的集群来说,discovery.zen.minimum_master_nodes = 3/2+1=2,表示最少保证有两台节点参与选举,master选举就能进行。也就是说,保证了每次选举只会产生一个master,不会脑裂;同时,只有保证有两台正常运行,集群仍是可用的,体现微观高可用(毕竟只是三台的初等集群场景)。

综上,三台及以上节点构成的集群,master选举和高可用都可以保证的。

两台节点集群master选举和高可用

拿2台节点的集群来说,discovery.zen.minimum_master_nodes = 2/2+1=2。同样也是2,也就是说,保证两台节点都正常的话,也能进行master选举,且能保证只产生一个master,也不会脑裂;但只要有一台异常,选举就不能进行,集群就不可用。

综上,两台节点构成的集群,master选举正常,不会脑裂,但不能保证高可用。该方案适用于学习或测试环境,资源有限的情况下,也不失为一种集群方案。

实施步骤:

基于kibana完成集群缩容,步骤如下:

  1. 查看集群节点情况,确认要剔除的节点。
    GET /_cat/nodes?v

  2. 通过kibana-》Monitoring-》Nodes,查看被剔除节点占用内存情况,和保留节点的可用内存情况,保证剔除节点后,内存充足。

  3. 执行剔除节点,这将导致Elasticsearch将该节点上的分片分配给其余节点,重点是操作期间,保证ES集群正常可用。重新分配所有分片后,可以关闭被剔除节点。
    PUT _cluster/settings
    {
    “transient”: {
    “cluster.routing.allocation.exclude._ip”: “10.xxx.xxx.xxx”
    }
    }

  4. 通过kibana-》Monitoring-》Nodes,监控分片重新分配情况,直至剔除节点的分片数为0,执行如下命令,查看如果没有节点relocating,则剔除节点已经被安全剔除,可以考虑关闭节点
    GET /_cluster/health?pretty

  5. 关闭节点服务

  6. 置空剔除节点列表
    PUT _cluster/settings
    {
    “transient”: {
    “cluster.routing.allocation.exclude._ip”: null
    }
    }

至此,ElasticSearch集群缩容完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一种开源的分布式搜索和分析引擎,它可以用于快速搜索、分析和存储大量的数据。Elasticsearch集群是由多个节点组成的,每个节点都可以存储和处理数据。以下是关于Elasticsearch集群的一些介绍和演示: 1. 集群原理: Elasticsearch内置了一个名为ZenDiscovery的模块,用于节点发现和选主等功能。这意味着在启动Elasticsearch节点时,它们会自动加入集群,并通过选举机制选择一个主节点来协调集群操作。这使得构建和管理Elasticsearch集群变得非常简单,不需要额外的配置和第三方组件。 2. 单节点演示: 单节点是最简单的Elasticsearch集群配置,它只包含一个节点。以下是一个示例演示如何启动一个单节点的Elasticsearch集群: ```shell # 启动Elasticsearch节点 ./bin/elasticsearch ``` 在启动节点后,您可以使用Elasticsearch的REST API进行索引、搜索和其他操作。 3. 多节点演示: 多节点是更常见的Elasticsearch集群配置,它包含多个节点,可以提供更高的可用性和性能。以下是一个示例演示如何启动一个多节点的Elasticsearch集群: ```shell # 启动第一个节点 ./bin/elasticsearch # 启动其他节点,并指定第一个节点的地址 ./bin/elasticsearch -Ecluster.initial_master_nodes=node1 ``` 在启动所有节点后,它们会自动加入集群,并通过选举机制选择一个主节点来协调集群操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值