etcd 3.15 三节点集群管理指南

server/2025/3/1 18:43:47/

本文档旨在提供 etcd 3.15 版本的三节点集群管理指南,涵盖节点的新增、删除、状态检查、数据库备份和恢复等操作。


1. 环境准备

1.1 系统要求

  • 操作系统:Linux(推荐 Ubuntu 18.04 或 CentOS 7)

  • 内存:至少 2GB

  • 磁盘:至少 10GB 可用空间

  • 网络:节点之间能够互相通信

1.2 软件要求

  • etcd 3.15 版本

  • curl 或 etcdctl 工具

1.3 节点信息

假设我们有三台服务器,IP 地址分别为:

  • Node1: 192.168.1.101

  • Node2: 192.168.1.102

  • Node3: 192.168.1.103


2. 安装 etcd

在所有节点上安装 etcd 3.15 版本。

# 下载 etcd
wget https://github.com/etcd-io/etcd/releases/download/v3.15.0/etcd-v3.15.0-linux-amd64.tar.gz
# 解压
tar -xvf etcd-v3.15.0-linux-amd64.tar.gz
# 移动到 /usr/local/bin
sudo mv etcd-v3.15.0-linux-amd64/etcd* /usr/local/bin/
# 验证安装
etcd --version

3. 配置三节点集群

3.1 启动 etcd 集群

在每个节点上启动 etcd,使用以下命令:

Node1 (192.168.1.101)
etcd --name node1 \
--data-dir /var/lib/etcd \
--initial-advertise-peer-urls http://192.168.1.101:2380 \
--listen-peer-urls http://192.168.1.101:2380 \
--listen-client-urls http://192.168.1.101:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://192.168.1.101:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster node1=http://192.168.1.101:2380,node2=http://192.168.1.102:2380,node3=http://192.168.1.103:2380 \
--initial-cluster-state new
Node2 (192.168.1.102)
etcd --name node2 \
--data-dir /var/lib/etcd \
--initial-advertise-peer-urls http://192.168.1.102:2380 \
--listen-peer-urls http://192.168.1.102:2380 \
--listen-client-urls http://192.168.1.102:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://192.168.1.102:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster node1=http://192.168.1.101:2380,node2=http://192.168.1.102:2380,node3=http://192.168.1.103:2380 \
--initial-cluster-state new
Node3 (192.168.1.103)
etcd --name node3 \
--data-dir /var/lib/etcd \
--initial-advertise-peer-urls http://192.168.1.103:2380 \
--listen-peer-urls http://192.168.1.103:2380 \
--listen-client-urls http://192.168.1.103:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://192.168.1.103:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster node1=http://192.168.1.101:2380,node2=http://192.168.1.102:2380,node3=http://192.168.1.103:2380 \
--initial-cluster-state new

3.2 验证集群状态

使用 etcdctl 检查集群状态:

etcdctl --endpoints=http://192.168.1.101:2379,http://192.168.1.102:2379,http://192.168.1.103:2379 endpoint status

输出应显示三个节点的健康状态。

3.3 使用服务方式进行创建

 创建 etcd.service 服务托管于 systemd

 vim /usr/lib/systemd/system/etcd.service

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target[Service]
Type=notify
# 指定环境变量所在 
EnvironmentFile=-/etc/etcd/config
ExecStart=/usr/local/bin/etcd \
--name=${ETCD_NAME} \
--data-dir=${ETCD_DATA_DIR} \
--listen-peer-urls=${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls=${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster-state=new 
Restart=on-failure
LimitNOFILE=65536[Install]
WantedBy=multi-user.target

创建 etcd 配置文件
mkdir /etc/etcd 
vim /etc/etcd/config 

#[Member]
##节点名字,每个节点都进行修改
ETCD_NAME="etcd01" 
#数据目录
ETCD_DATA_DIR="/hskj/etcd/"
#当前节点的ip地址,每个节点都进行修改
ETCD_LISTEN_PEER_URLS="http://192.168.1.101:2380" 
ETCD_LISTEN_CLIENT_URLS="http://192.168.1.101:2379"#[Clustering]
#每个节点都要修改
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.101:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.101:2379"
#集群所有的节点的ip地址
ETCD_INITIAL_CLUSTER="etcd01=http://192.168.1.101:2380,etcd02=http://192.168.1.102:2380,etcd03=http://192.168.1.103:2380" 
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
#新增加的节点需要将参数变为existing
ETCD_INITIAL_CLUSTER_STATE="new"

启动 etcd

systemctl deamon-reload
systemctl enable etcd
systemctl start etcd

4. 节点管理

4.1 新增节点

假设要新增一个节点 Node4 (192.168.1.104)。

4.1.1 启动新节点

在 Node4 上启动 etcd

etcd --name node4 \
--data-dir /var/lib/etcd \
--initial-advertise-peer-urls http://192.168.1.104:2380 \
--listen-peer-urls http://192.168.1.104:2380 \
--listen-client-urls http://192.168.1.104:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://192.168.1.104:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster node1=http://192.168.1.101:2380,node2=http://192.168.1.102:2380,node3=http://192.168.1.103:2380,node4=http://192.168.1.104:2380 \
--initial-cluster-state existing
4.1.2 更新集群配置

在现有集群的任一节点上,使用 etcdctl 更新集群配置:

etcdctl member add node4 --peer-urls=http://192.168.1.104:2380

4.2 删除节点

假设要删除 Node3 (192.168.1.103)。

4.2.1 获取节点 ID

首先获取 Node3 的成员 ID:

etcdctl member list
4.2.2 删除节点

使用 etcdctl 删除节点:

etcdctl member remove <node3-member-id>

5. 状态检查

5.1 检查集群健康状态

etcdctl --endpoints=http://192.168.1.101:2379,http://192.168.1.102:2379,http://192.168.1.103:2379 endpoint health

5.2 检查集群成员列表

etcdctl member list

6. 数据库备份与恢复

6.1 备份数据库

使用 etcdctl 备份数据库

etcdctl --endpoints=http://192.168.1.101:2379 snapshot save /path/to/backup.db

6.2 恢复数据库

停止所有 etcd 服务,然后使用备份文件恢复数据库

etcdctl snapshot restore /path/to/backup.db \
--name node1 \
--data-dir /var/lib/etcd \
--initial-advertise-peer-urls http://192.168.1.101:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster node1=http://192.168.1.101:2380,node2=http://192.168.1.102:2380,node3=http://192.168.1.103:2380 \
--initial-cluster-state new

恢复后,重新启动 etcd 服务。


7. 总结

本文档提供了 etcd 3.15 版本的三节点集群管理指南,涵盖了节点的新增、删除、状态检查、数据库备份和恢复等操作。通过遵循这些步骤,您可以有效地管理和维护 etcd 集群。


http://www.ppmy.cn/server/171604.html

相关文章

Spring Boot 中如何正确地在异步线程中使用 HttpServletRequest

Spring Boot 中如何正确地在异步线程中使用 HttpServletRequest 前言一、问题的来源&#xff1a;为什么异步线程中无法访问 HttpServletRequest&#xff1f;1. 请求上下文与线程绑定2. 异步线程访问请求对象时的常见问题 二、Tomcat 的 request 复用机制及其影响1. Tomcat 请求…

Golang快速上手02/Golang基础

4.控制语句 4.1条件控制语句 4.1.1if-elseif-else 与clang不同&#xff0c;if不需要加() if <condition1> {<block1> } else if <condition2> {<block2> } else {<block0> }示例 a : 10 if a > 5 {fmt.Println("a > 5") } els…

Selenium 不同语言绑定版本的官方操作文档获取途径(科学上网)

Selenium 不同语言绑定版本的官方操作文档获取途径 Selenium 是一个强大的自动化测试工具&#xff0c;支持多种编程语言绑定。以下为你详细介绍不同语言绑定版本的官方操作文档获取途径。 一、Python 语言绑定 1.1 官方文档 地址&#xff1a;Selenium Python 官方文档内容概…

【JSON2WEB】15 银河麒麟操作系统下部署JSON2WEB

【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

数据库基础一(初步了解数据库)

数据库基础概念 数据库访问方式 为什么要学习数据库? 90%以上的软件都需要操作数据,比如游戏、社交、新闻、商城、财务等 什么是数据库? 数据库专业的来说,其实就是一种电子的仓库,是专门储存数据和管理数据的一种处所,用户可以对数据库中的数据进行新增、更新或者删…

记一次命令行启动springboot项目的问题 java -jar的问题

错误的写法 java -jar ruoyi-admin.jar -Dloader.path.\lib 正确的写法 java -Dloader.path./lib -jar ruoyi-admin.jar 或者 java -jar -Dloader.path./lib ruoyi-admin.jar -Dloader.path必须卸载 -jar ruoyi-admin.jar之前&#xff0c;其实我试过了-Dloader.path命令只要…

验证码识别:一文掌握手机验证码的自动化处理

文章目录 一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取验证码1.5 通过邮件接收验证码二、解析和提取验证码2.1 正则表达式提取2.2 JSON解析三、自动化输入验证码3.1 使用Selenium自动化Web应用3.2 使用Appium自…

FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台

文章目录 前言一、生态系统1. 金融AI代理&#xff08;Financial AI Agents&#xff09;2. 金融大型语言模型&#xff08;Financial LLMs&#xff09;3. LLMOps4. 数据操作&#xff08;DataOps&#xff09;5. 多源LLM基础模型&#xff08;Multi-Source LLM Foundation Models&am…