4.4 KiB
4.4 KiB
etcd
本服务部署 etcd,这是一个分布式、可靠的键值存储,用于分布式系统的最关键数据。
服务
etcd: etcd 键值存储服务。
环境变量
| 变量名 | 描述 | 默认值 |
|---|---|---|
| ETCD_VERSION | etcd 镜像版本 | v3.6.0 |
| ETCD_CLIENT_PORT_OVERRIDE | 客户端连接的主机端口映射(2379) | 2379 |
| ETCD_PEER_PORT_OVERRIDE | 对等连接的主机端口映射(2380) | 2380 |
| ETCD_NAME | 此 etcd 成员的人类可读名称 | etcd-node |
| ETCD_INITIAL_CLUSTER | 初始集群配置 | etcd-node=http://localhost:2380 |
| ETCD_INITIAL_CLUSTER_STATE | 初始集群状态('new' 或 'existing') | new |
| ETCD_INITIAL_CLUSTER_TOKEN | 用于引导的初始集群令牌 | etcd-cluster |
| ETCD_AUTO_COMPACTION_RETENTION | 自动压缩保留时间(小时) | 1 |
| ETCD_QUOTA_BACKEND_BYTES | 存储大小限制(字节) | 2147483648 (2GB) |
| ETCD_HEARTBEAT_INTERVAL | 心跳间隔(毫秒) | 100 |
| ETCD_ELECTION_TIMEOUT | 选举超时(毫秒) | 1000 |
| ETCD_ENABLE_V2 | 启用 etcd v2 API | false |
请根据您的使用情况修改 .env 文件。
数据卷
etcd_data: 用于持久存储 etcd 数据的数据卷。
网络端口
2379: 客户端通信端口2380: 对等通信端口(用于集群)
单节点设置
默认配置将 etcd 作为单节点运行,适用于开发和测试。
集群设置
要设置多节点 etcd 集群,您需要:
- 在您的 compose 文件中定义多个 etcd 服务
- 正确配置
ETCD_INITIAL_CLUSTER变量 - 为每个节点设置唯一名称
3 节点集群示例:
services:
etcd1:
# ... 基础配置
environment:
- ETCD_NAME=etcd1
- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380
etcd2:
# ... 基础配置
environment:
- ETCD_NAME=etcd2
- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380
etcd3:
# ... 基础配置
environment:
- ETCD_NAME=etcd3
- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380
客户端访问
使用 etcdctl
使用 etcdctl 客户端连接到 etcd:
# 设置端点
export ETCDCTL_ENDPOINTS=http://localhost:2379
# 放置键值对
etcdctl put mykey myvalue
# 获取值
etcdctl get mykey
# 列出所有键
etcdctl get --prefix ""
使用 HTTP API
etcd 提供 RESTful HTTP API:
# 放置键值对
curl -X PUT http://localhost:2379/v3/kv/put \
-H 'Content-Type: application/json' \
-d '{"key":"bXlrZXk=","value":"bXl2YWx1ZQ=="}'
# 获取值
curl -X POST http://localhost:2379/v3/kv/range \
-H 'Content-Type: application/json' \
-d '{"key":"bXlrZXk="}'
性能调优
- 根据您的存储需求调整
ETCD_QUOTA_BACKEND_BYTES - 根据您的网络延迟调整
ETCD_HEARTBEAT_INTERVAL和ETCD_ELECTION_TIMEOUT - 配置
ETCD_AUTO_COMPACTION_RETENTION来管理数据大小
安全注意事项
- 默认配置仅适用于开发/测试
- 对于生产环境,启用 TLS 加密和身份验证
- 考虑网络安全和防火墙规则
- 建议定期备份
监控
etcd 在 http://localhost:2379/metrics 以 Prometheus 格式公开指标。
许可证
etcd 采用 Apache 2.0 许可证。