LinuxC++——etcd分布式键值存储系统入门
etcd框架
- etcd下载与安装
- 🔍 了解 etcd
- 📥 在 Ubuntu 上下载与安装 etcd
- 从预编译二进制包安装
- 通过包管理器安装
- 从源码编译安装
- 🚀 运行 etcd
- 使用 etcdctl 进行基本操作
- 基础操作
- 集群管理
- 版本控制与历史
- ⚙️ 生产环境注意事项
etcd下载与安装
在Linux Ubuntu中,etcd是一个高可用、强一致性的分布式键值存储系统 ,它常被用作服务发现、配置共享和协调分布式服务的核心组件。
🔍 了解 etcd
etcd 使用 Raft 一致性算法来确保数据的可靠性与一致性。它的特点包括:
简单
:提供了清晰的HTTP API进行交互。
安全
:支持SSL证书验证。
快速
:官方基准测试显示,单实例支持每秒高达约16,000次写操作和约12,000次先写后读操作。
可靠
:基于Raft算法实现分布式系统数据的可用性和一致性。
etcd 在微服务和容器编排领域应用广泛,Kubernetes 就使用 etcd 作为其存储后端,用于存储所有集群数据。
📥 在 Ubuntu 上下载与安装 etcd
在 Ubuntu 上安装 etcd,主要有以下几种方式:
从预编译二进制包安装
这是最常见和直接的方法。
下载
:访问 etcd 的 GitHub 发布页面,获取最新稳定版本的压缩包。例如,下载版本 3.5.4 的命令如下:
wget https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-linux-amd64.tar.gz
安装与配置
:
# 解压下载的压缩包
tar -zxvf etcd-v3.5.4-linux-amd64.tar.gz
# 进入解压后的目录
cd etcd-v3.5.4-linux-amd64
# 为 etcd 和 etcdctl 添加可执行权限
sudo chmod +x etcd etcdctl
# 将可执行文件移动到系统路径,以便在任意位置运行
sudo mv etcd etcdctl /usr/local/bin/
验证安装
:运行 etcd --version 来检查安装是否成功。
通过包管理器安装
你也可以通过 Ubuntu 的包管理器安装,但仓库中的版本可能不是最新的。命令如下:
sudo apt update
sudo apt install etcd-server etcd-client
安装后,etcd 服务通常会自动启动,你可以使用 sudo systemctl status etcd 来查看服务状态。
从源码编译安装
如果你想尝试最新特性或进行开发,可以从源码编译安装。这需要你的系统已安装 Go 语言环境(etcd 使用 Go 编写)。具体步骤请参考 etcd 官方文档。
🚀 运行 etcd
启动 etcd 服务
完成安装后,你可以在终端直接启动 etcd 服务,或者设置开机自动启动:
sudo systemctl start etcd
#开机启动
sudo systemctl enable etcd
服务启动后,默认会在 2379 端口监听客户端请求,并在 2380 端口处理集群中节点间的通讯。
使用 etcdctl 进行基本操作
基础操作
-
设置键值对
etcdctl put <key> <value> # 示例:存储一个名为 "name" 的键,值为 "etcd" etcdctl put name "etcd"
-
获取键值
# 获取单个键 etcdctl get <key> # 示例:获取 "name" 的值 etcdctl get name# 获取键的详细信息(包括版本、创建时间等) etcdctl get <key> -w json # 或 -w fields# 范围查询(匹配前缀) etcdctl get <prefix> --prefix # 示例:获取所有以 "user_" 开头的键 etcdctl get user_ --prefix
-
删除键
# 删除单个键 etcdctl del <key> # 示例:删除 "name" etcdctl del name# 删除前缀匹配的键 etcdctl del <prefix> --prefix
集群管理
-
查看集群成员
etcdctl member list
-
添加集群成员
etcdctl member add <成员名> --peer-urls=<成员的P2P通信地址> # 示例 etcdctl member add etcd2 --peer-urls=http://192.168.1.2:2380
-
移除集群成员
etcdctl member remove <成员ID> # 成员ID可通过 member list 获取
-
查看集群健康状态
etcdctl endpoint health
-
查看集群状态
etcdctl endpoint status -w table # 表格形式展示
版本控制与历史
-
查看键的历史版本
etcdctl get <key> --rev=<版本号> # 示例:查看 "name" 在版本 3 时的值 etcdctl get name --rev=3
-
获取键的所有历史版本
etcdctl history <key>
⚙️ 生产环境注意事项
对于生产环境,单节点部署通常不够,建议部署多节点的 etcd 集群以实现高可用。
数据持久化
:确保 etcd 的数据目录存储在持久化存储上,并考虑定期备份快照。
安全配置
:为集群通信和客户端连接配置 TLS 加密和认证。
性能调优
:根据工作负载调整心跳间隔、选举超时等参数。