ETCD节点故障恢复
我在微服务组里面主要负责配置中心的构建,我们的配置中心使用到了ETCD。在我们的内网环境中搭建了三个节点的ETCD,不过这三个节点的ETCD都搭建在同一台机器上。后来机器资源不够了系统直接kill了ETCD,导致内网的ETCD三个节点全部挂掉了。刚开始想逐个启动就完事了,但是按照之前的data-dir启动之后发现三个节点握手存在问题,原因是三个节点缓存数据的data目录里面都有节点以及数据信息,导致握手不成功。网上查了一些资料后发现这应该算是一次故障的恢复,解决方案是先以挂掉之前的一个节点为基础启动只有一个节点的集群,然后往这个集群中添加新节点等待数据同步。事实上,ETCD分开部署挂半数以下还是可以正常访问的,这次全挂了相当于从备份数据中恢复。
下面是执行恢复的具体命令:
etcd --data-dir=data.etcd2 --name machine-2 --initial-advertise-peer-urls http://127.0.0.1:12380 --listen-peer-urls http://127.0.0.1:12380 --advertise-client-urls http://10.1.45.52:12379 --listen-client-urls http://10.1.41.52:12379,http://127.0.0.1:2379 --initial-cluster machine-2=http://127.0.0.1:12380 --initial-cluster-token token-token --initial-cluster-state new --force-new-cluster >> /var/log/etcd/machine-2 2>&1 &
rm -rf data.etcd3
etcdctl member list
etcdctl member add machine-3 http://127.0.0.1:22380
etcd --data-dir=data.etcd3 --name machine-3 --initial-advertise-peer-urls http://127.0.0.1:22380 --listen-peer-urls http://127.0.0.1:22380 --advertise-client-urls http://10.1.41.52:22379 --listen-client-urls http://10.1.41.52:22379 --initial-cluster machine-2=http://127.0.0.1:12380,machine-3=http://127.0.0.1:22380 --initial-cluster-state existing --initial-cluster-token token-token >> /var/log/etcd/machine-3 2>&1 &
rm -rf data.etcd1
etcdctl member list
etcdctl member add machine-1 http://127.0.0.1:2380
etcd --data-dir=data.etcd1 --name machine-1 --initial-advertise-peer-urls http://127.0.0.1:2380 --listen-peer-urls http://127.0.0.1:2380 --advertise-client-urls http://10.1.41.52:2379 --listen-client-urls http://10.1.41.52:2379 --initial-cluster machine-2=http://127.0.0.1:12380,machine-3=http://127.0.0.1:22380,machine-1=http://127.0.0.1:2380 --initial-cluster-state existing --initial-cluster-token token-token >> /var/log/etcd/machine-1 2>&1 &
总计部署了三个节点,节点缓存数据的目录分别是data.etcd1、data.etcd2、data.etcd3。我是删除 data.etcd1、data.etcd3目录保留data.etcd2目录,然后用data.etcd2为基础进行恢复的。
当时着急恢复就没有记录报错信息,先记录一下我恢复一下现场把详细的报错信息补充上
ETCD节点故障恢复的更多相关文章
- etcd节点扩容至两个节点
本篇已经安装了单个etcd,然后进行扩容etcd节点至2个,安装单节点请参照:https://www.cnblogs.com/effortsing/p/10295261.html 实验架构 test1 ...
- k8s二进制部署 - etcd节点安装
下载etcd [root@hdss7-12 ~]# useradd -s /sbin/nologin -M etcd [root@hdss7-12 ~]# cd /opt/src/ [root@hds ...
- Mongodb集群节点故障恢复场景分析
http://blog.csdn.net/zhangzhaokun/article/details/6299527 一个适当配置的Mongodb分片集群是没有单点故障. 本文描述了分片集群中存在的几种 ...
- Mongodb集群节点故障恢复场景分析(转)
一个适当配置的Mongodb分片集群是没有单点故障.本文描述了分片集群中存在的几种不同的潜在的节点故障场景,以及Mongodb对这些节点故障是怎么处理的.1.Mongos节点宕机一个Mongos进程应 ...
- vertica单节点故障恢复 Startup Failed, ASR Required
测试环境的vertica是单节点的,无法做到故障自动恢复,需要手工处理.案例如下: 发现5433端口连接不上,vertica挂了,手工运行admintools,重新启动vertica,仍然失败,提示: ...
- 使用Docker方式创建3节点的Etcd集群
一.简要说明 二.运行容器 三.验证集群 四.运行截图 五.参考链接 一.简要说明 参考etcd官网文档, 在node1.node2.node3三个节点上,分别运行etcd容器,创建etcd集 ...
- 001.etcd简介及单节点使用
一 etcd简介 1.1 概述 etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key- ...
- ETCD 添加节点报错 tocommit(2314438) is out of range [lastIndex(0)]. Was the raft log corrupted, truncated, or lost?
生产环境中一台ETCD节点宕机之后,添加新的节点的时候出现以下错误, tocommit(2314438) is out of range [lastIndex(0)]. Was the raft lo ...
- 高可用etcd集群(三节点) + ssl双向认证
# etcd下载地址 https://github.com/etcd-io/etcd/tags wget https://github.com/etcd-io/etcd/releases/downlo ...
随机推荐
- 基于 HTML5 WebGL 的垃圾分类系统
前言 垃圾分类,一般是指按一定规定或标准将垃圾分类储存.分类投放和分类搬运,从而转变成公共资源的一系列活动的总称.分类的目的是提高垃圾的资源价值和经济价值,力争物尽其用.垃圾在分类储存阶段属于公众的私 ...
- 【博客美化】添加github图标
<a href="https://github.com/cai3231" target="_blank"> <img style=" ...
- spring源码分析系列4:ApplicationContext研究
ApplicationContext接口 首先看一下一个最基本的上下文应该是什么样子 ApplicationContext接口的注释里写的很清楚: 一个基本applicationContext应该提供 ...
- (7)Cmake的使用简介
CMake是一个跨平台的安装(编译)工具,是一个比Make更高级的的编译配置工具,可以根据不同平台.不同编译器,通过编写CmakeLists,可以控制生成的Makefile,从而控制编译过程. ...
- 智慧金融时代,大数据和AI如何为业务赋能
前言:宜信技术人物专访是宜信技术学院推出的系列性专题,我们邀请软件研发行业的优秀技术人,分享自己在软件研发领域的实践经验和前瞻性观点. 第一期专访我们邀请到宜信科技中心AI中台负责人王东老师,从大数据 ...
- ACM-图论-同余最短路
https://www.cnblogs.com/31415926535x/p/11692422.html 一种没见过的处理模型,,记录一下,,主要是用来处理一个多元一次方程的解的数量的问题,,数据量小 ...
- Java中Integer与int对比的一些坑
Integer与int类型的关系 Integer是int的包装类,int的默认值是0,而Integer的默认值是null(我们经常在代码中使用的Integer.valueOf() 和xx.intVal ...
- JAVA阻塞(IO)和非阻塞(NIO)
查看这篇文章,了解更多关于Java的阻塞和非阻塞替代创建套接字的信息. 套接字使用TCP / IP传输协议,是两台主机之间的最后一块网络通信. 您通常不必处理它们,因为它们之上构建了协议,如HTTP或 ...
- 禅道部署(基于Linux)
部署步骤: 1. 查看Linux服务器是32位还是64位的 #getconf LONG_BIT 2. 禅道开源版安装包下载 下载站点1:#wget http://sourceforge.net/ ...
- Qt5教程: (2) 信号与槽
1. 新建工程 新建一个"Qt Widgets Application"工程 2. 添加按钮 一个Qt工程会有很多个控件, 如果把逻辑代码都写在main函数里, main函数会非常 ...