elasticsearch7.17.9两节点集群改为单节点

2024-01-04 13:28

本文主要是介绍elasticsearch7.17.9两节点集群改为单节点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求

将数据从node-23-1节点中迁移到node-83-1节点。但是现在node-83-1并没有加入到集群中,因此首先将node-83-1加入到node-23-1的集群

解决方案

使用ES版本为7.17.9,最开始设置集群为一个节点,node-23-1的配置如下

cluster.name: my-application
node.name: node-23-1
path.data: /mnt/sdb/app/elasticsearch-7.17.9-23-1/data
path.logs: /mnt/sdb/app/elasticsearch-7.17.9-23-1/logs
network.host: 0.0.0.0
ingest.geoip.downloader.enabled: false
http.port: 9200
cluster.initial_master_nodes: ["node-23-1", "node-83-1"]
search.max_open_scroll_context: 1024

node-83-1节点加入集群
node-83-1的配置如下:

cluster.name: my-application
node.name: node-83-1
path.data: /home/iie4bu/app/elasticsearch-7.17.9/data/ 
path.logs: /home/iie4bu/app/elasticsearch-7.17.9/logs/ 
ingest.geoip.downloader.enabled: false
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.26.120.23:9300","10.26.120.83:9300"]
cluster.initial_master_nodes: ["node-23-1","node-83-1"]
search.max_open_scroll_context: 1024
indices.query.bool.max_clause_count: 10240

由于node-23-1中存在数据,因此要将node-83-1节点加入到集群中,需要设置discovery.seed_hosts

加入集群后,自动平衡数据,当集群状态变为green后,就可以将node-23-1踢出集群。

将node-23-1踢出集群

node-23-1踢出集群后,报错信息如下:

master not discovered or elected yet, an election requires at least X nodes with ids from [XXXXX]

它其实是说未能选举出一个主节点。

解决办法参考:https://www.cnblogs.com/shanfeng1000/p/14691301.html

如果ES集群是第一次启动,那么需要 cluster.initial_master_nodes 配置指定一个master类型的节点列表来进行选举一个主节点。另外,已经加入集群的节点信息保存在data目录下,以供下次启动使用,这样也就是说cluster.initial_master_nodes就不在起作用了。

每个ES集群都维护一个选举配置集合(Voting Configurations),这个选举集合由可以选举为主节点的master类型节点组成。它除了提供选举功能,还决定者集群的状态,当选举配置集合中超过一半的节点存活时,集群才提供服务(也就是过半原则,通常集群解决脑裂问题都是采用这种方式)

我们可以通过ES提供的API接口来查看选举配置集合中有哪些节点:

curl -X GET "http://localhost:9200/_cluster/state?filter_path=metadata.cluster_coordination.last_committed_config&pretty"

ES官方在删除节点建议中大致说了3点重要信息:

1、一次性删除节点不要太多,比如我们原来集群选举有7个master类型的节点,如果要缩减到只有3个节点的集群,如果直接关掉4个节点,会发现集群挂了,因为不满足过半原则,同时抛出警告:master not discovered or elected yet。
2、建议一个个的删除节点,然后留给集群足够的时间,让它自动调整Voting Configurations中的配置
3、如果只剩下最后两个节点了,那么都不能删除,如果要删除,就要配置Voting configuration exclusions来实现

事实上,ES有个cluster.auto_shrink_voting_configuration配置,默认是true,表示当节点挂掉之后是否调整Voting Configurations,也就是说自动将挂掉的节点从Voting Configurations中剔除,这样也会影响过半原则的判定,比如本来Voting Configurations中有5个节点,它最多可容忍2个节点丢失,如果停了2个节点,那么等ES自动调整Voting Configurations后,集群中还有3个节点,这也就是说还能容忍一个节点丢失,所以我们可以一台一台的停止一些节点,让ES自动从Voting Configurations中剔除掉停止了的节点(切记不要一次停止过多节点,否则可能在Voting Configurations自动调整前而导致不满足过半原则而导致集群停止服务),但是需要注意的是,它旨在master节点大于等于3时有效,也就是说Voting Configurations中至少会保存3个master类型的节点信息。

可能这与上面的描述有点差入,自动调整只能将Voting Configurations中的节点减少到3个,但是当Voting Configurations中有3个master类型节点时,虽然Voting Configurations不会再自动减少节点数,当有一个节点挂掉时,集群还是可以提供服务的,因为它满足过半原则,所以可能作者认为2个和3个节点是一样的吧。

换句话说,对于只有2个或者3个节点的集群,我们就要结合Voting configuration exclusions还实现了。

具体实现

现在要将现在两个节点的集群降为单节点集群,如果我们直接关闭node-23-1个节点,那么集群因为不满足过半原则而无法提供服务。

Voting configuration exclusions是一个类似于Voting configuration的集合,只是处于这个排除列表中的节点不会被选举,,等同于从选举集合中删除了(链接):

# 查看排除列表curl -X GET "http://localhost:9200/_cluster/state?filter_path=metadata.cluster_coordination.voting_config_exclusions&pretty"# 添加排除,也就是从配置集合中删除,可以使用节点Id(node_ids)或者节点名称(node_names)来排除,如果执行失败,加上参数 wait_for_removal=false 试试curl -X POST "http://localhost:9200/_cluster/voting_config_exclusions?node_names=<node_names>"curl -X POST "http://localhost:9200/_cluster/voting_config_exclusions?node_ids=<node_ids>"# 清空排除列表curl -X DELETE "http://localhost:9200/_cluster/voting_config_exclusions"

如果执行结果返回:timed out waiting for removal of nodes; if nodes should not be removed, set waitForRemoval to false

可以在执行时在url中添加参数 wait_for_removal=false

上面我这里将node-23-1加入到排除列表之后,node-83-1就会被选举为主节点,这个时候就可以将node-23-1停掉,而后node-83-1还是正常提供服务的

注:操作完成之后,记得清空Voting configuration exclusions

这篇关于elasticsearch7.17.9两节点集群改为单节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569467

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能