4. 单节点 etcd 安装:下载、解压与系统服务配置

单节点 etcd 是压测沙盘的起点,也是理解集群配置的基础。本节将带领你完成从二进制包下载到系统服务注册的全流程,确保 etcd 与 etcdctl 命令可用,并实现开机自启。

4.1 下载 etcd 二进制包

etcd 官方提供预编译的二进制包,支持 Linux、macOS 和 Windows。推荐从 GitHub Releases 页面获取稳定版本。以下以 v3.5.15(最新 LTS 版本)为例,在 Linux amd64 环境下操作。

版本选择建议:生产环境优先使用 v3.5.x 系列,该分支包含关键稳定性修复和性能优化。压测环境建议与目标生产版本保持一致。
# 下载 etcd v3.5.15 Linux amd64 二进制包
wget https://github.com/etcd-io/etcd/releases/download/v3.5.15/etcd-v3.5.15-linux-amd64.tar.gz

# 校验 SHA256 完整性(可选但推荐)
sha256sum etcd-v3.5.15-linux-amd64.tar.gz
组件 说明 用途
etcd 服务端二进制 启动 etcd 节点,处理客户端请求
etcdctl 命令行客户端 与 etcd 交互,执行键值操作、健康检查
etcdutl 运维工具 快照管理、数据迁移、碎片整理

4.2 解压与安装

将下载的压缩包解压至 /opt/etcd 目录,并将二进制文件软链接到系统 PATH 中,便于全局调用。

# 创建安装目录
sudo mkdir -p /opt/etcd

# 解压到目标目录
sudo tar -xzf etcd-v3.5.15-linux-amd64.tar.gz -C /opt/etcd --strip-components=1

# 创建软链接到 /usr/local/bin
sudo ln -sf /opt/etcd/etcd /usr/local/bin/etcd
sudo ln -sf /opt/etcd/etcdctl /usr/local/bin/etcdctl
sudo ln -sf /opt/etcd/etcdutl /usr/local/bin/etcdutl

# 验证安装路径
which etcd && which etcdctl
目录规划建议:将 etcd 数据目录独立设置为 /var/lib/etcd,配置文件放置于 /etc/etcd/,便于后续管理和备份。

4.3 验证 etcd 与 etcdctl 命令可用性

启动一个临时 etcd 实例,验证核心命令是否正常工作。这是排查安装问题的最直接方法。

# 启动临时 etcd 实例(监听 2379 客户端端口,2380 对等端口)
etcd --data-dir=/tmp/etcd-data --listen-client-urls=http://0.0.0.0:2379 --advertise-client-urls=http://127.0.0.1:2379 &

# 等待几秒后检查进程
sleep 3
ps aux | grep etcd | grep -v grep

# 使用 etcdctl 检查集群健康状态
etcdctl --endpoints=http://127.0.0.1:2379 endpoint health

# 执行基本键值操作
etcdctl put /test/key1 "hello etcd"
etcdctl get /test/key1

# 停止临时实例
kill %1

预期输出示例:

127.0.0.1:2379 is healthy: successfully committed proposal: took = 1.234ms
OK
hello etcd
常见问题:若 etcdctl endpoint health 返回 unhealthy,请检查防火墙是否放行 2379 端口,或 etcd 进程是否因端口冲突而启动失败。

4.4 设置系统服务

将 etcd 注册为 systemd 服务,实现开机自启和标准化管理。创建服务单元文件,并配置数据目录、日志和启动参数。

# 创建 etcd 系统用户(以非 root 身份运行)
sudo useradd --system --no-create-home --shell /sbin/nologin etcd

# 创建数据目录并设置权限
sudo mkdir -p /var/lib/etcd
sudo chown -R etcd:etcd /var/lib/etcd

# 创建配置文件目录
sudo mkdir -p /etc/etcd

创建 systemd 服务文件 /etc/systemd/system/etcd.service:

[Unit]
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd
After=network.target

[Service]
Type=notify
User=etcd
Group=etcd
ExecStart=/usr/local/bin/etcd \
  --name=etcd-single \
  --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=etcd-single=http://127.0.0.1:2380 \
  --initial-cluster-=etcd-cluster-1 \
  --initial-cluster-state=new \
  --log-outputs=stderr
Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启动 etcd 服务
sudo systemctl start etcd

# 设置开机自启
sudo systemctl enable etcd

# 检查服务状态
sudo systemctl status etcd
参数说明:--initial-cluster-state=new 表示首次启动新集群;若重启已存在的节点,应改为 existing。Type=notify 让 systemd 等待 etcd 就绪信号后再标记服务为已启动。

4.5 单节点安装流程总览

下图展示了从下载二进制包到系统服务注册的完整链路,以及各步骤的关键产物。

单节点 etcd 安装流程 1. 下载二进制包 GitHub Releases 2. 解压与安装 /opt/etcd + 软链接 3. 命令验证 etcd + etcdctl 4. 设置 systemd 服务 /etc/systemd/system/etcd.service 5. 启动服务 & 设置开机自启 systemctl start && systemctl enable ✅ 单节点 etcd 就绪,监听 127.0.0.1:2379

4.6 安装后检查清单

完成安装后,建议逐项确认以下要点,确保环境符合压测要求:

  • 进程状态:systemctl status etcd 显示 active (running),无报错日志。
  • 端口监听:ss -tlnp | grep etcd 确认 2379(客户端)和 2380(对等)端口已监听。
  • 健康检查:etcdctl endpoint health --cluster 返回 healthy。
  • 版本确认:etcd --version 和 etcdctl version 输出与下载版本一致。
  • 数据目录:/var/lib/etcd 目录已创建且属主为 etcd 用户。
  • 开机自启:systemctl is-enabled etcd 返回 enabled。
压测前置条件:单节点安装完成后,建议先执行 etcdctl check perf 进行基准测试,记录基线延迟和吞吐量,便于后续与三节点集群对比。