服务器etcd教程:零基础单节点部署与日常维护实操

etcd 是一个分布式键值存储,Kubernetes 等系统用它保存集群状态数据。
这篇服务器 etcd 教程针对最常见的单节点场景,带你在 Linux 服务器上从零完成安装、配置、启动和验证,每一步都给出可执行的命令和预期结果。

准备条件与下载安装

开始前确认服务器满足以下条件:

  • 操作系统建议使用主流 Linux 发行版(如 Ubuntu、Debian、CentOS 或 Rocky Linux),本文命令以通用方式给出。
  • 具有 root 权限或可使用 sudo。
  • 服务器时间已同步,否则集群通信可能异常。可用 date 检查,必要时启用 NTP 或 chrony。
  • 放行 etcd 默认使用的端口:2379(客户端通信)和 2380(节点间通信)。

先在 etcd 官方 GitHub Releases 页面 确认当前稳定版本号,再用 wget 下载对应架构的压缩包。
以下载 linux-amd64 为例:

cd /tmp
wget https://github.com/etcd-io/etcd/releases/download/v3.5.15/etcd-v3.5.15-linux-amd64.tar.gz
tar -xzf etcd-v3.5.15-linux-amd64.tar.gz

解压后进入目录,把 etcd 和 etcdctl 两个可执行文件复制到系统路径:

cd etcd-v3.5.15-linux-amd64
sudo cp etcd etcdctl /usr/local/bin/
etcd --version

最后一条命令能输出版本号,说明安装成功。
如果提示找不到命令,检查 /usr/local/bin 是否在 PATH 中。

编写配置文件并交给 systemd 托管

etcd 支持命令行参数启动,但生产环境更推荐用配置文件,便于维护。
创建目录和配置文件:

sudo mkdir -p /etc/etcd /var/lib/etcd
sudo tee /etc/etcd/etcd.conf <<'EOF'
name: 'default'
data-dir: '/var/lib/etcd'
listen-client-urls: 'http://0.0.0.0:2379'
advertise-client-urls: 'http://127.0.0.1:2379'
listen-peer-urls: 'http://0.0.0.0:2380'
initial-advertise-peer-urls: 'http://127.0.0.1:2380'
initial-cluster: 'default=http://127.0.0.1:2380'
initial-cluster-token: 'etcd-cluster-1'
initial-cluster-state: 'new'
EOF

几个关键项说明:data-dir 是数据存放目录,务必单独规划并定期备份;initial-cluster-state 为 new 表示首次初始化,重新初始化前要清空数据目录。

接着创建 systemd 服务文件:

sudo tee /etc/systemd/system/etcd.service <<'EOF'
[Unit]
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd --config-file=/etc/etcd/etcd.conf
Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

加载并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable --now etcd
sudo systemctl status etcd

状态显示 active (running) 即表示启动成功。

用 etcdctl 验证读写与健康状态

服务起来后不要急着接入业务,先用官方客户端确认读写正常。
设置 API 版本环境变量:

export ETCDCTL_API=3
etcdctl --endpoints=http://127.0.0.1:2379 endpoint health

预期输出类似 http://127.0.0.1:2379 is healthy。
然后做一次读写测试:

etcdctl --endpoints=http://127.0.0.1:2379 put foo bar
etcdctl --endpoints=http://127.0.0.1:2379 get foo

put 返回 OK,get foo 返回 bar,说明键值存储工作正常。
如果本机正常但远程连不上,重点检查防火墙和 listen-client-urls 是否绑定了 0.0.0.0。

容易踩坑的地方

  • 数据目录权限:/var/lib/etcd 必须对运行 etcd 的用户可写,否则启动时会报权限拒绝。可用 ls -ld /var/lib/etcd 确认。
  • 重复初始化:把 initial-cluster-state 从 new 改成 existing 前,要确保集群成员信息一致,随意改动可能导致启动失败。
  • 端口被占用:启动失败时用 ss -lntp | grep 2379 查看端口占用,避免和其他服务冲突。
  • 直接删除数据目录:/var/lib/etcd 存的是全部键值数据,删除等于清库,操作前务必先备份。
  • 时间不同步:多节点环境下时间偏差过大会影响选举和通信,单节点也应保持时间同步。

日常维护与效果复查

上线后建议养成固定检查习惯:

  • 用 systemctl status etcd 查看服务运行状态。
  • 用 etcdctl endpoint health 和 etcdctl endpoint status 检查健康与成员状态。
  • 定期备份数据目录,命令示例:sudo tar -czf etcd-backup-$(date +%F).tar.gz /var/lib/etcd。
  • 关注磁盘空间,etcd 对磁盘延迟较敏感,空间不足会直接影响写入。

完成以上步骤后,你的服务器已经具备一个可用的单节点 etcd 服务。
后续如果需要高可用,再在此基础上扩展为多节点集群,并补充 TLS 证书配置。

常见疑问

etcd 启动后立刻退出怎么办?
先看 journalctl -u etcd -n 50 的日志,多数情况是数据目录权限、端口占用或配置文件语法问题。

远程客户端连接超时怎么排查?
确认 listen-client-urls 绑定了 0.0.0.0,并检查服务器防火墙或安全组是否放行 2379 端口。

单节点能直接用于生产吗?
单节点没有冗余,服务器宕机即服务中断。对可用性有要求时,应部署三节点及以上集群。

分享到:
上一篇
服务器 DB2 教程:从零完成安装、建库与远程连接
下一篇
服务器Nacos教程:Linux 单机部署与生产避坑
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意