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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系列十、Spring Cloud Gateway

一、Spring Cloud Gateway 1.1、概述 Spring Cloud全家桶中有个很重要的组件就是网关&#xff0c;在1.x版本中采用的是Zuul网关&#xff0c;但是在2.x版本中&#xff0c;由于Zuul的升级一直跳票&#xff0c;Spring Cloud最后自己研发了一个网关替代Zuul&#xff0c;即&#xf…

ASP.NET Core基础之图片文件(一)-WebApi图片文件上传到文件夹

阅读本文你的收获&#xff1a; 了解WebApi项目保存上传图片的三种方式学习在WebApi项目中如何上传图片到指定文件夹中 在ASP.NET Core基础之图片文件(一)-WebApi访问静态图片文章中&#xff0c;学习了如何获取WebApi中的静态图片&#xff0c;本文继续分享如何上传图片。 那么…

如果你希望在过滤操作之后清空endorsementIds1集合,你可以使用clear()方法。以下是修改后的代码:

如果你希望在过滤操作之后清空endorsementIds1集合&#xff0c;你可以使用clear()方法。以下是修改后的代码&#xff1a; import java.util.List; import java.util.Set; import java.util.HashSet; // ... 其他代码 ... // 将endorsementIds1转换为Set以提高性能 Set…

详谈电商网站建设的四大流程!

在21世纪的互联网时代&#xff0c;电商网站的建设是每个企业发展不可缺少的一次机遇。企业商城网站建设成功也许会获得更大的了利润&#xff1b;如果网站建设不成功&#xff0c;那么也会带来一定的损失。所以建设电商网站不是那么一件简单的事情。那么电商网站制作流程是怎样的…

算法训练营Day33

#Java #贪心 开源学习资料 Feeling and experiences&#xff1a; 单调递增的数字&#xff1a;力扣题目链接 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&am…

C++_find 统计一个单词 在一段文中出现的次数

注解: 使用y.find(x, n)从位置n开始在字符串y中查找子串x首次出现的位置。如果找到了子串x&#xff0c;则find()函数会返回该子串在y中的起始索引&#xff08;位置&#xff09;&#xff0c;否则返回-1&#xff08;或npos&#xff09;表示未找到。当find()函数返回非-1值时&…

我开发了一个聚合网盘资源搜索引擎-支持阿里云盘与夸克网盘资源

还在为找不到电子书资源而发愁&#xff1f;还在愁没有高清影视剧观看&#xff1f; 来试试我开发的云盘资源搜索引擎吧&#xff01; 公众号回复关键词: 搜索 ! 就可以获取到网站网址。 这里还有资源分享微信群&#xff0c;不定期分享资源。 关于界面 怎么使用这个引擎&#x…

ubuntu远程桌面连接之novnc

一、前言 该操作是为了实现vnc桌面连接为url连接方式&#xff0c;且在浏览器中可以对ubuntu进行操作。在使用novnc进行操作前&#xff0c;需要先安装vnc才可。ubuntu下如何安装vnc&#xff0c;可看博主前面写的一篇文&#xff0c;ubuntu远程桌面连接之vnc-CSDN博客&#xff0c;…

[雷池WAF]长亭雷池WAF配置基于健康监测的负载均衡,实现故障自动切换上游服务器

为了进一步加强内网安全&#xff0c;在原有硬WAF的基础上&#xff0c;又在内网使用的社区版的雷池WAF&#xff0c;作为应用上层的软WAF。从而实现多WAF防护的架构。 经过进一步了解&#xff0c;发现雷池WAF的上游转发代理是基于Tengine的&#xff0c;所以萌生出了一个想法&…

低代码平台在自动驾驶系统开发中的应用

自动驾驶技术的发展正在为交通领域带来革命性的变化。其中关键的一环是自动驾驶系统的开发&#xff0c;该过程通常需要大量的编程工作和复杂的算法。然而&#xff0c;随着低代码技术的崛起&#xff0c;开发者能够大幅简化自动驾驶系统的开发过程&#xff0c;为了降低开发难度和…

如何在gitlub上拉取新的文件到ideacopy with ssh 和 copy with http的区别

1、登录gitlb并输入账号密码 2、选中要pull的分支&#xff0c;点击copy 并选择 copy with ssh或者copy with http &#xff08;两者区别会在下面进行阐述&#xff09;点击复制地址 3、打开idea File —New —Project from Version Controller 4、在URL出复制刚才粘贴的地址…

算法与数据结构之链表<一>(Java)

目录 1、链表的定义 2、链表的特点 3、为何要使用链表 4、数组与链表的区别 5、链表的增删查 5.1、在头部插入链表 5.2、在中间插入链表 5.3、删除头节点 5.4、删除中间节点 5.5、查询某个值 6、链表的应用 6.1 如何设计一个LRU缓存算法&#xff1f; 6.2 约瑟夫问题 1、链表的定…

计算机毕业设计-----SSM自习室图书馆座位预约管理系统

项目介绍 一款由jspssmmysql实现的图书馆预约占座管理系统&#xff0c;前端采用的是当下最流行的easyui框架&#xff0c;后台用的ssm&#xff08;spring、springMVC、mybaits&#xff09;框架.添加学生和教师时会自动在用户表中注册&#xff0c;定时任务会定时生成座位信息&am…

马蹄集oj赛(双周赛第十八次)

目录 幸运的3 打靶 照亮街道 九次九日九重色 寻找串 竹鼠的白色季节 捉迷藏 好的三连 三角数 买马 可怜的小码哥 花园浇水 高次方程 幸运的3 难度:黄金时间限制: 1秒四占用内存:128M 你有 n 个数&#xff0c;可以将它们两两匹配(即将两数首尾相连)&#xff0c;每个…

YOLOv8融合改进 更换检测头为Detect_DyHead同时添加C2f-EMSC和C2f-EMSCP模块

一、Detect_DyHead检测头和C2f-EMSC&#xff0c;C2f-EMSCP模块 详细介绍和代码在往期的博客里&#xff1a; Detect_DyHead&#xff1a; &#xff08;YOLOv8改进检测头Detect为Detect_Dyhead-CSDN博客&#xff09; C2f-EMSC和C2f-EMSCP&#xff1a; &#xff08;YOLOv8改进…

VUE+Springboot实现生成二维码及二维码下载功能

一、Springboot相关 1、pom依赖引入 <!-- 生成二维码 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version></dependency><dependency><groupId>c…

leetcode2487.从链表中移除节点

文章目录 题目思路复杂度Code 题目 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1&#xff1a; 输入&#xff1a;head [5,2,13,3,8] 输出&#xff1a;[13,8] 解释&#xff1a;需要移除的节点是 5 &#xff0…

【C程序设计】C作用域

任何一种编程中&#xff0c;作用域是程序中定义的变量所存在的区域&#xff0c;超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量&#xff1a; 在函数或块内部的局部变量在所有函数外部的全局变量在形式参数的函数参数定义中 让我们来看看什么是局部变量、全局变…

云盘扩容、云盘缩容

天翼云文档地址&#xff1a;https://www.ctyun.cn/document/10027696/10169558 1、输入 growpart命令&#xff0c;检查此云主机是否已安装growpart扩容工具。若出现图中回显信息&#xff0c;则说明已经安装&#xff0c;无需手动安装。 注意 若没有图示信息&#xff0c;请执行…

《PySpark大数据分析实战》-24.数据可视化图表介绍

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…