手把手安装etcd配置中心
1 简介
针对 etcd 在 Ubuntu 24.04(或一般说 “Ubuntu 24”)上安装与基本配置服务的完整示例步骤。我们可以根据需要做进一步的 HA 集群、TLS 加密、安全认证等扩展。

2 安装步骤:环境准备
假设操作系统是 Ubuntu 24.04 或相近版本。 需要以 root 或具备 sudo 权限的用户操作。
更新系统软件包列表:
sudo apt update
sudo apt upgrade -y
安装常用工具(如果还没装的话):
sudo apt install -y wget curl tar vim
(可选)设置主机名 / 网络 /防火墙,根据实际环境调整。确保端口 2379(客户端通信)和 2380(集群内部通信)对你的环境是可用/允许的。根据官方仓库,这两个是 etcd 的默认通信端口。
- 下载安装最新稳定版本
官方推荐使用预编译二进制包安装,因为操作系统仓库里的版本可能偏旧。
查找最新发布版本号(例如 v3.6.x 或 v3.5.x 系列)
ETCD_RELEASE=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest | grep tag_name | cut -d '"' -f 4)
echo "Latest etcd version: $ETCD_RELEASE"
(也可以在 https://github.com/etcd-io/etcd/releases手动查找)
下载对应 Linux amd64 的压缩包。假设版本为 ${ETCD_RELEASE}:
wget https://github.com/etcd-io/etcd/releases/download/${ETCD_RELEASE}/etcd-${ETCD_RELEASE}-linux-amd64.tar.gz
解压并移动二进制程序到系统可执行路径:
tar -xvzf etcd-${ETCD_RELEASE}-linux-amd64.tar.gz
cd etcd-${ETCD_RELEASE}-linux-amd64
sudo mv etcd etcdctl /usr/local/bin/
检查版本是否正确安装:
etcd --version
etcdctl version
应该输出类似 “Version: 3.x.y” 的版本信息。
可选:你也可以通过 apt 安装 etcd-server(或 etcd 包)但可能不是最新版本。
3 创建运行用户、目录与权限
为了安全及归属管理,推荐为 etcd 创建专用用户,并设置数据目录。示例:
sudo useradd -r -s /sbin/nologin etcd
sudo mkdir -p /etc/etcd /var/lib/etcd
sudo chown -R etcd:etcd /etc/etcd /var/lib/etcd
sudo chmod 700 /var/lib/etcd
这样 etcd 服务运行时使用的是专用用户,数据目录权限合适。
- 创建 systemd 服务文件
我们以单节点(或者未来扩展集群用)为例。假设节点名为 default 或者你自定义。
使用编辑器创建 /etc/systemd/system/etcd.service,内容参考如下:
[Unit]
Description=etcd key-value store
Documentation=https://etcd.io/docs/
After=network.target
[Service]
User=etcd
Type=notify
ExecStart=/usr/local/bin/etcd \
--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-01 \
--initial-cluster-state new
Restart=on-failure
LimitNOFILE=40000
[Install]
WantedBy=multi-user.target
说明:
–name 指定成员名称。
–data-dir 指定数据目录。
–listen-client-urls 客户端(应用等)访问的地址。
–advertise-client-urls 广播给外部客户端使用的地址。
–listen-peer-urls 和 --initial-advertise-peer-urls 用于集群成员之间通信。
–initial-cluster 若为单节点,则只有一个成员;若为多节点,则列出所有成员。
–initial-cluster-state new 表示新建集群。若为加入已有集群则为 existing。
LimitNOFILE=40000 是推荐用于 etcd 提高打开文件数的限制。
如果你安装的是 apt 包的方式,配置可能在 /etc/default/etcd 或 /etc/etcd/etcd.conf。例如:
在 /etc/default/etcd:
ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
4 启动与验证服务
重新加载 systemd 配置:
sudo systemctl daemon-reload
启动并设置开机启动:
sudo systemctl enable etcd
sudo systemctl start etcd
检查服务状态:
sudo systemctl status etcd
查看日志(如果有问题):
sudo journalctl -u etcd -f
使用 etcdctl 测试基本功能:
/usr/local/bin/etcdctl put hello "Ubuntu 24.04"
/usr/local/bin/etcdctl get hello
应该返回 “hello” → “Ubuntu 24.04”。若失败,检查 client 地址、认证、版本等。
- 基本配置说明 &建议
默认端口:2379(客户端访问),2380(节点对节点通信)
若部署多节点集群:每个节点需要 --initial-cluster 中列出所有节点及其 peer URLs。启动时只用 --initial-cluster-state new(首次建),以后加入新成员时用 existing。
数据目录 (–data-dir) 需要专用,不与别服务混用。
建议将监听地址设为 0.0.0.0 或特定网卡地址,具体视网络安全要求决定。例子中用了 0.0.0.0。
广播给客户端与其它 peer 的 URL 要使用可被其它节点访问的 IP/域名,不应用 localhost(除非只有本地节点)。
权限与用户:建议使用专用系统用户运行服务,降低权限。
系统资源:打开文件数(NOFILE)建议提升。
安全建议:在生产环境建议启用 TLS/证书、访问认证、数据备份、监控 etcd 节点健康/扩容机制。
操作系统包的版本可能太旧,官方文档推荐预编译二进制包。
5 小结
通过以上步骤,我们可以在 Ubuntu 24.04 上快速安装并运行一个单节点 etcd 服务。若你未来打算扩展为多节点集群、有高可用要求或要启用 TLS/认证,建议参考官方文档和生产最佳实践。
install_etcd_bash
#!/usr/bin/env bash
# =========================================
# 自动安装与配置 etcd(Ubuntu 24.04)
# 作者: ChatGPT
# 日期: $(date +%Y-%m-%d)
# 功能: 安装最新稳定版 etcd 并配置 systemd 服务
# =========================================
set -e
ETCD_USER="etcd"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_CONF_DIR="/etc/etcd"
SYSTEMD_FILE="/etc/systemd/system/etcd.service"
echo "=== [1/8] 更新系统并安装依赖包 ==="
sudo apt update -y
sudo apt install -y wget curl tar vim
echo "=== [2/8] 获取最新稳定版本号 ==="
ETCD_VERSION=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest | grep tag_name | cut -d '"' -f 4)
if [ -z "$ETCD_VERSION" ]; then
echo "❌ 无法获取 etcd 最新版本号,请检查网络。"
exit 1
fi
echo "✅ 最新 etcd 版本: $ETCD_VERSION"
echo "=== [3/8] 下载并安装 etcd 二进制包 ==="
wget -q https://github.com/etcd-io/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz
tar -xzf etcd-${ETCD_VERSION}-linux-amd64.tar.gz
cd etcd-${ETCD_VERSION}-linux-amd64
sudo mv etcd etcdctl /usr/local/bin/
cd ..
rm -rf etcd-${ETCD_VERSION}-linux-amd64*
echo "✅ etcd 已安装完成:$(etcd --version | head -n 1)"
echo "=== [4/8] 创建 etcd 用户与目录 ==="
sudo useradd -r -s /sbin/nologin $ETCD_USER || true
sudo mkdir -p $ETCD_DATA_DIR $ETCD_CONF_DIR
sudo chown -R $ETCD_USER:$ETCD_USER $ETCD_DATA_DIR $ETCD_CONF_DIR
sudo chmod 700 $ETCD_DATA_DIR
echo "=== [5/8] 生成 systemd 服务文件 ==="
sudo bash -c "cat > $SYSTEMD_FILE" <<EOF
[Unit]
Description=etcd key-value store
Documentation=https://etcd.io/docs/
After=network.target
[Service]
User=$ETCD_USER
Type=notify
ExecStart=/usr/local/bin/etcd \\
--name default \\
--data-dir $ETCD_DATA_DIR \\
--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-01 \\
--initial-cluster-state new
Restart=on-failure
LimitNOFILE=40000
[Install]
WantedBy=multi-user.target
EOF
echo "✅ systemd 配置文件已生成:$SYSTEMD_FILE"
echo "=== [6/8] 启动并设置开机自启 ==="
sudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl start etcd
echo "=== [7/8] 检查服务状态 ==="
sudo systemctl status etcd --no-pager
echo "=== [8/8] 验证 etcd 功能 ==="
sleep 3
/usr/local/bin/etcdctl put hello "Ubuntu 24.04 Installed"
/usr/local/bin/etcdctl get hello
echo ""
echo "✅ etcd 安装与配置成功!"
echo "🔹 服务文件: $SYSTEMD_FILE"
echo "🔹 数据目录: $ETCD_DATA_DIR"
echo "🔹 客户端端口: 2379"
echo "🔹 日志查看: sudo journalctl -u etcd -f"
echo ""
echo "完成时间: $(date)"
参考:
官方安装说明
https://etcd.io/docs/v3.5/install
- 点赞
- 收藏
- 关注作者
评论(0)