KING 博主等级

一帆风顺 ⛵️⛵️⛵️

安装etcd配置中心

钟晓川
2026-01-20 / 0 点赞 / 19 阅读

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

简介

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

安装步骤:环境准备

假设操作系统是 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 包)但可能不是最新版本。

创建运行用户、目录与权限

为了安全及归属管理,推荐为 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"

启动与验证服务

重新加载 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 节点健康/扩容机制。
    操作系统包的版本可能太旧,官方文档推荐预编译二进制包。

小结

通过以上步骤,我们可以在 Ubuntu 24.04 上快速安装并运行一个单节点 etcd 服务。若你未来打算扩展为多节点集群、有高可用要求或要启用 TLS/认证,建议参考官方文档和生产最佳实践。

#!/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