《泛智能开启下一代云时代》白皮书来了!点击下载 了解详情
写点什么

ETCD 集群的常见问题处理

  • 2019-11-15
  • 本文字数:1857 字

    阅读完需:约 6 分钟

ETCD集群的常见问题处理

ETCD 是一个高可用的分布式 Key/Value 存储系统。它使用 Raft 算法,通过选举来保持集群内各节点状态的一致性。虽然 ETCD 具有高可用的特点,但是也无法避免多个节点宕机,甚至全部宕机的情况发生。如何快速的恢复集群,就变得格外重要。本文将介绍在日常工作中,遇到的 ETCD 集群常见问题的处理方法。

ETCD 常见问题

由于 ETCD 集群需要选举产生 leader,所以集群节点数目需要为奇数来保证正常进行选举。而集群节点的数量并不是越多越好,过多的节点会导致集群同步的时间变长,使得 leader 写入的效率降低。我们线上的 ETCD 集群由三个节点组成(即宕机一台,集群可正常工作),并开启了认证。以下是日常运维工作中,遇到问题的处理过程。

1 集群一个节点宕机的恢复步骤

一个节点宕机,并不会影响整个集群的正常工作。此时可通过以下几步恢复集群:

1)在正常节点上查看集群状态并摘除异常节点

etcdctl endpoint status


2)摘除异常节点

etcdctl member remove $ID

3)重新部署服务后,将节点重新加入集群

  • 由于 ETCD 集群证书依赖于服务器 IP,为避免重新制作证书,需要保持节点 IP 不变。在部署好节点上服务后,先不要启动。

  • 将节点重新加入集群

  • etcdctl member add $name --peer-urls=https://x.x.x.x:2380

  • 此时查看集群状态,新加入的节点状态为 unstarted

  • 删除新增成员的旧数据目录,更改相关配置

  • 需将原 etcd 服务的旧数据目录删除,否则 etcd 会无法正常启动。新增节点是加入已有集群,所以需要修改配置 ETCD_INITIAL_CLUSTER_STATE=“existing”

  • 启动服务 检测集群是否正常

  • systemctl start etcd


使用 etcdctl endpoint status 命令查看集群状态,若三台都正常,集群恢复。

2 集群超过半数节点宕机的恢复步骤

此时集群处于无法正常工作的状态,需要尽快恢复。若机器宕机重启,IP 保持不变,则证书无需重新生成;若 IP 更换,则还需重新生成证书。集群恢复需要使用 ETCD 的备份数据(使用 etcdctl snapshot save 命令备份),或者从 ETCD 数据目录复制 snap/db 文件。以下是恢复步骤:

1)将备份数据恢复至集群

  • 集群部署完成后,先不启动 ETCD 服务,并将原有 ETCD 数据目录删除

  • 依次在三台节点上执行恢复数据的命令

  • etcdctl --name=x.x.x.x-name-3 --endpoints=“https://x.x.x.x:2379” --cert=/var/lib/etcd/cert/etcd-client.pem --key=/var/lib/etcd/cert/etcd-client-key.pem --cacert=/var/lib/etcd/cert/ca.pem --initial-cluster-token=xxxxxxxxxx --initial-advertise-peer-urls=https://x.x.x.x:2380 --initial-cluster=x.x.x.x-name-1=https://x.x.x.x:2380,x.x.x.x-name-2=https://x.x.x.x:2380,x.x.x.x-name-3=https://x.x.x.x:2380 --data-dir=/var/lib/etcd/data.etcd/ snapshot restore snapshot.db

  • 更改数据目录的权限

  • chown -R etcd:etcd data.etcd/

2)启动 ETCD 服务,检查集群状态

  • systemctl start etcd

  • etcdctl member list 查看节点状态

3 database space exceeded 报错恢复步骤

从报错的字面意思来看,是超出数据库空间导致。执行 etcdctl endpoint status,查看集群此时各节点的状态,发现 DB SIZE 为 2.1GB。ETCD官方文档说明提到 ETCD 默认的存储大小是 2GB。超出后,集群无法进行写入。以下为恢复步骤:

1)备份数据

使用 snapshot save 命令备份集群数据

2)获取 reversion

etcdctl --write-out=“json” --cacert /var/lib/etcd/cert/ca.pem --key /var/lib/etcd/cert/etcd-client-key.pem --cert /var/lib/etcd/cert/etcd-client.pem --endpoints=’...:2379’ endpoint status |grep -o ‘“revision”:[0-9]*’

3)compact

etcdctl --cacert /var/lib/etcd/cert/ca.pem --key /var/lib/etcd/cert/etcd-client-key.pem --cert /var/lib/etcd/cert/etcd-client.pem --endpoints=’...:2379’ compact $revision

4)defrag

etcdctl --cacert /var/lib/etcd/cert/ca.pem --key /var/lib/etcd/cert/etcd-client-key.pem --cert /var/lib/etcd/cert/etcd-client.pem --endpoints=’...:2379’ defrag

5)删除报警(必需删除,否则集群仍然无法使用)

etcdctl --write-out=“table” --cacert /var/lib/etcd/cert/ca.pem --key /var/lib/etcd/cert/etcd-client-key.pem --cert /var/lib/etcd/cert/etcd-client.pem --endpoints=’...:2379 alarm disarm


以上就是对 ETCD 集群日常维护的总结,为了使服务更加稳定的运行,建议定时备份和压缩数据,并增加集群监控(与 Prometheus 配合使用)。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/IANaqD6k3IQQJNX1tjgVag


2019-11-15 15:314241

评论

发布
暂无评论
发现更多内容

小间距LED显示屏的技术分析

Dylan

LED显示屏

首批!博云信创云管理平台入选“金融信创解决方案”名单

BoCloud博云

云原生 cmp 云管理平台 云管理

文件管理-Linux系统VIM编辑

Albert Edison

centos 服务器 linux 文件权限控制 vim教程 7月月更

沉浸式体验 罗技推出Zone Vibe 125无线耳机

Geek_2d6073

牛客基础语法必刷100题之基本类型2

京与旧铺

7月月更

K8S探索之Service+Flannel本机及跨主机网络访问原理详解

网络 Kubernetes 集群 7月月更

你的私钥,你的币:Qredo 的灾难恢复

威廉META

Java—Spring

武师叔

7月月更

HTTP 认证

急需上岸的小谢

7月月更

Kubernetes资源编排系列之一: Pod YAML篇

阿里云大数据AI技术

运维

元宇宙主导的一个新时代正在到来

智捷云

元宇宙 智捷云 区块链技术开发 智捷云区块链BaaS平台

直播回顾|当我们说微服务上容器时,我们在说什么?

BoCloud博云

云原生 容器云 应用

欢迎走进"云原生专场",总有一款活动适合你 | 人人都可以参与开源

OpenAnolis小助手

开源 开发者 龙蜥社区 开发者激励 人人都可以参与

等保测评报告编号组成部分有哪些?代表什么意思?

行云管家

等保 等级保护 等保测评 等保2.0

从Starfish OS持续对SFO的通缩消耗,长远看SFO的价值

小哈区块

都已经2022了,不会还有人觉得String不可变是因为 final 吧

了不起的程序猿

string Java’ java 编程

面向开发者的HarmonyOS 3.0 Beta发布

HarmonyOS开发者

HarmonyOS

Spring Cloud源码分析之Eureka篇第五章:更新服务列表

程序员欣宸

Java SpringCloud Eureka 7月月更

第四期SFO销毁,Starfish OS如何对SFO价值赋能?

西柚子

基于http-flv的抖音直播端到端延迟优化实践

字节跳动视频云技术团队

直播 端到端 直播低延迟 直播解决方案 http-flv

百度工程师教你玩转设计模式(观察者模式)

百度Geek说

设计模式 观察者模式

2022年1-6月墨天轮最受欢迎的25篇原创技术文章

墨天轮

MySQL 数据库 oracle postgresql 国产数据库

2022年云管理软件用哪个好?贵吗?功能有哪些?

行云管家

云计算 企业上云 云管理平台 云管理

2022年新型显示OLED行业发展洞察

易观分析

OLED

GPU管线概述

Finovy Cloud

gpu GPU服务器

性能提升8450%,Linux内核函数获大幅改进!

冉然学Java

MySQL Linux 编程 java 14 程序员进阶

5G NR SIB1介绍

柒号华仔

5G 7月月更

Python 入门指南之模块

海拥(haiyong.site)

7月月更

实战模拟│单点登录 SSO 的实现

经验分享 SSO 单点登录 7月月更

架构与算法创新,让分布式存储焕然一新!

Geek_2d6073

找论文参考:机器视觉会议和期刊

AIWeker

人工智能 7月月更

  • 扫码添加小助手
    领取最新资料包
ETCD集群的常见问题处理_文化 & 方法_李肖肖_InfoQ精选文章