不灭的焱

革命尚未成功,同志仍须努力 下载Go 下载Java

作者:AlbertWen  添加时间:2025-09-01 11:55:56  修改时间:2026-02-04 01:06:10  分类:02.Go语言编程  编辑

etcd官网:https://etcd.io/

1.Etcd介绍

1.1 介绍

Etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。

1.2 Etcd特点

Etcd具有以下特点:

  • 完全复制:集群中的每个节点都可以使用完整的存档。
  • 高可用性:Etcd可用于避免硬件的单点故障或网络问题。
  • 一致性:每次读取都会返回跨多主机的最新写入。
  • 简单:包括一个定义良好、面向用户的API(gRPC)。
  • 安全:实现了带有可选的客户端证书身份验证的自动化TLS。
  • 快速:每秒10000次写入的基准速度。
  • 可靠:使用Raft算法实现了强一致、高可用的服务存储目录。

2.Etcd单机安装

2.1 开放端口

开放每台机器上的2379、2380端口的命令:

firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent

重启防火墙:

firewall-cmd --reload

查看开放的端口:

firewall-cmd --list-port

2.2 安装包及安装教程

安装包下载地址:https://github.com/etcd-io/etcd/tags ,如:etcd-v3.6.7-linux-amd64.tar.gz

选择最新版本,同时里面还有Linux、macOS (Darwin)、Docker这三种安装方式的步骤以及安装包。

步骤1:手动下载etcd二进制包

存放位置:/data/tmp/etcd-v3.6.7-linux-amd64.tar.gz

步骤2:创建 Etcd 安装目录

mkdir -p /data/server/etcd/{bin,data,conf,log}

步骤3:解压并移动二进制文件到安装目录

cd /data/tmp/
tar -xzvf ./etcd-v3.6.7-linux-amd64.tar.gz
mv ./etcd-v3.6.7-linux-amd64/etcd* /data/server/etcd/bin/

步骤3:添加环境变量

export PATH=/data/server/etcd/bin:$PATH
echo 'export PATH=/data/server/etcd/bin:$PATH' >> /etc/profile
source /etc/profile

步骤4:验证二进制文件是否可用

# etcd --version
etcd Version: 3.6.7
Git SHA: e838ef1
Go Version: go1.24.11
Go OS/Arch: linux/amd64
# etcdctl version
etcdctl version: 3.6.7
API version: 3.6
# etcdutl version
etcdutl version: 3.6.7
API version: 3.6

2.3 配置 Etcd 服务(systemd 管理)

为了方便启停和开机自启,将 Etcd 配置为 systemd 服务:

步骤1:创建 Etcd 配置文件

vim /data/server/etcd/conf/etcd.conf

写入以下配置(单机版核心配置,注释已说明):

# Etcd 节点名称(单机可自定义)
ETCD_NAME="etcd-node-1"
# 数据存储目录
ETCD_DATA_DIR="/data/server/etcd/data"
# 日志文件路径
ETCD_LOG_FILE="/data/server/etcd/log/etcd.log"

# 监听客户端请求的地址(0.0.0.0 允许所有IP访问)
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
# 允许远程访问,对外暴露的客户端访问地址(替换为你的服务器IP,如 192.168.1.100)
ETCD_ADVERTISE_CLIENT_URLS="http://你的服务器IP:2379"
# 集群节点间通信地址,单机模式无需配置集群相关,关闭 peer 监听(避免端口占用)
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"

# 开启自动压缩(可选,优化存储)
ETCD_AUTO_COMPACTION_MODE="periodic"
ETCD_AUTO_COMPACTION_RETENTION="1h"

步骤2:创建 systemd 服务文件

vim /etc/systemd/system/etcd.service

写入以下内容:

[Unit]
Description=Etcd Server
After=network.target
Documentation=https://etcd.io/docs/

[Service]
Type=notify
EnvironmentFile=/data/server/etcd/conf/etcd.conf
ExecStart=/data/server/etcd/bin/etcd
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

2.4 启动并验证 Etcd

# 1. 重新加载 systemd 配置
systemctl daemon-reload

# 2. 启动 Etcd 服务
systemctl start etcd

# 3. 设置开机自启
systemctl enable etcd

# 4. 查看服务状态(正常应为 active (running))
systemctl status etcd

# 5. 验证 Etcd 功能(写入/读取数据测试)
# 设置键值对
etcdctl put testkey "hello etcd"
# 获取键值对
etcdctl get testkey

# 6. 查看 Etcd 集群状态(单机版显示 1 个节点)
etcdctl endpoint health
etcdctl member list

2.5 常见问题处理

  • 启动失败:查看日志 /data/server/etcd/log/etcd.log,常见原因:
    • 端口 2379/2380 被占用:netstat -tulnp | grep 2379 查看占用进程,kill 后重启。
    • 目录权限问题:执行 chmod -R 755 /data/server/etcd/ 赋予权限。
  • etcdctl 命令报错:确保环境变量已生效(source /etc/profile),或直接使用绝对路径 /data/server/etcd/bin/etcdctl