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 单节点安装流程总览
下图展示了从下载二进制包到系统服务注册的完整链路,以及各步骤的关键产物。
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 进行基准测试,记录基线延迟和吞吐量,便于后续与三节点集群对比。