etcd官网:https://etcd.io/
1.Etcd介绍
1.1 介绍
Etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。
1.2 Etcd特点
Etcd具有以下特点:
- 完全复制:集群中的每个节点都可以使用完整的存档。
- 高可用性:Etcd可用于避免硬件的单点故障或网络问题。
- 一致性:每次读取都会返回跨多主机的最新写入。
- 简单:包括一个定义良好、面向用户的API(gRPC)。
- 安全:实现了带有可选的客户端证书身份验证的自动化TLS。
- 快速:每秒10000次写入的基准速度。
- 可靠:使用Raft算法实现了强一致、高可用的服务存储目录。
2.Etcd单机安装
2.1 开放端口
开放每台机器上的2379、2380端口的命令:
firewall-cmd --zone=public --add-port=2379/tcp --permanent firewall-cmd --zone=public --add-port=2380/tcp --permanent
重启防火墙:
firewall-cmd --reload
查看开放的端口:
firewall-cmd --list-port
2.2 安装包及安装教程
安装包下载地址:https://github.com/etcd-io/etcd/tags ,如:etcd-v3.6.7-linux-amd64.tar.gz
选择最新版本,同时里面还有Linux、macOS (Darwin)、Docker这三种安装方式的步骤以及安装包。

步骤1:手动下载etcd二进制包
存放位置:/data/tmp/etcd-v3.6.7-linux-amd64.tar.gz
步骤2:创建 Etcd 安装目录
mkdir -p /data/server/etcd/{bin,data,conf,log}
步骤3:解压并移动二进制文件到安装目录
cd /data/tmp/ tar -xzvf ./etcd-v3.6.7-linux-amd64.tar.gz mv ./etcd-v3.6.7-linux-amd64/etcd* /data/server/etcd/bin/
步骤3:添加环境变量
export PATH=/data/server/etcd/bin:$PATH echo 'export PATH=/data/server/etcd/bin:$PATH' >> /etc/profile source /etc/profile
步骤4:验证二进制文件是否可用
# etcd --version etcd Version: 3.6.7 Git SHA: e838ef1 Go Version: go1.24.11 Go OS/Arch: linux/amd64
# etcdctl version etcdctl version: 3.6.7 API version: 3.6
# etcdutl version etcdutl version: 3.6.7 API version: 3.6
2.3 配置 Etcd 服务(systemd 管理)
为了方便启停和开机自启,将 Etcd 配置为 systemd 服务:
步骤1:创建 Etcd 配置文件
vim /data/server/etcd/conf/etcd.conf
写入以下配置(单机版核心配置,注释已说明):
# Etcd 节点名称(单机可自定义) ETCD_NAME="etcd-node-1" # 数据存储目录 ETCD_DATA_DIR="/data/server/etcd/data" # 日志文件路径 ETCD_LOG_FILE="/data/server/etcd/log/etcd.log" # 监听客户端请求的地址(0.0.0.0 允许所有IP访问) ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" # 允许远程访问,对外暴露的客户端访问地址(替换为你的服务器IP,如 192.168.1.100) ETCD_ADVERTISE_CLIENT_URLS="http://你的服务器IP:2379" # 集群节点间通信地址,单机模式无需配置集群相关,关闭 peer 监听(避免端口占用) ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380" # 开启自动压缩(可选,优化存储) ETCD_AUTO_COMPACTION_MODE="periodic" ETCD_AUTO_COMPACTION_RETENTION="1h"
步骤2:创建 systemd 服务文件
vim /etc/systemd/system/etcd.service
写入以下内容:
[Unit] Description=Etcd Server After=network.target Documentation=https://etcd.io/docs/ [Service] Type=notify EnvironmentFile=/data/server/etcd/conf/etcd.conf ExecStart=/data/server/etcd/bin/etcd Restart=on-failure RestartSec=5 LimitNOFILE=65535 [Install] WantedBy=multi-user.target
2.4 启动并验证 Etcd
# 1. 重新加载 systemd 配置 systemctl daemon-reload # 2. 启动 Etcd 服务 systemctl start etcd # 3. 设置开机自启 systemctl enable etcd # 4. 查看服务状态(正常应为 active (running)) systemctl status etcd # 5. 验证 Etcd 功能(写入/读取数据测试) # 设置键值对 etcdctl put testkey "hello etcd" # 获取键值对 etcdctl get testkey # 6. 查看 Etcd 集群状态(单机版显示 1 个节点) etcdctl endpoint health etcdctl member list
2.5 常见问题处理
- 启动失败:查看日志
/data/server/etcd/log/etcd.log,常见原因:- 端口 2379/2380 被占用:
netstat -tulnp | grep 2379查看占用进程,kill 后重启。 - 目录权限问题:执行
chmod -R 755 /data/server/etcd/赋予权限。
- 端口 2379/2380 被占用:
- etcdctl 命令报错:确保环境变量已生效(
source /etc/profile),或直接使用绝对路径/data/server/etcd/bin/etcdctl。