linux 下载并安装 etcd 二进制文件
安装脚本
vim install.etcd.sh
vim 0.utils.sh
部署 system unit 服务文件
vim /etc/systemd/system/etcd.service
systemctl daemon-reload
配置并启用 etcd 集群
- 通过 etcd 试验场可视化生成配置
vim /etc/etcd/etcd.config.yml
- 自行修改 tls 和 Clustering 中的对应数据
- client-cert-auth: true 时客户端需要有对应 CA 签名的 client.crt, client.key 才能通信
systemctl enable --now etcd
TLS 相关
客户端证书必须包含 clientAuth
golang的crypto/tls包在使用证书公钥之前会检查其密钥用法。要使用证书公钥进行客户端身份验证,我们需要在创建证书公钥时将clientAuth添加到Extended Key Usage中
测试证书
curl --cacert $ETCDCTL_CACERT https://127.0.0.1:2379/version- 不验证客户端证书
curl --cacert $ETCDCTL_CACERT --cert $ETCDCTL_CERT --key $ETCDCTL_KEY \ https://127.0.0.1:2379/version- 不验证客户端证书
openssl s_client -connect 127.0.0.1:2379 -cert $ETCDCTL_CERT -key $ETCDCTL_KEY -CAfile $ETCDCTL_CACERT -tls1_2
etcd 网关在 etcd.example.com 提供负载均衡
etcd gateway start --trusted-ca-file $ETCDCTL_CACERT --listen-addr 0.0.0.0:2379 --endpoints=etcd-s1.example.com:2379,etcd-s2.example.com:2379,etcd-s3.example.com:2379- CA 文件仅作客户端验证
- 端点不添加 https 协议, 因为不作 TLS 终止
etcd 命令行客户端 etcdctl
设置 etcd 集群环境变量
- 可以设置在 ~/.bashrc, ~/.zshrc 等文件中加载
- API 版本
ETCDCTL_API, 3.4 之前的版本需要设置 export ETCDCTL_API=3
- 指定集群
ETCDCTL_ENDPOINTS export ETCDCTL_ENDPOINTS="https://etcd-s1.example.com:2379,https://etcd-s2.example.com:2379,https://etcd-s3.example.com:2379"- etcd 集群的访问地址,自行修改
- TLS 认证
ETCDCTL_CACERT,ETCDCTL_CERT,ETCDCTL_KEY export ETCDCTL_CACERT="/path/to/ca.crt" export ETCDCTL_CERT="/path/to/client.crt" export ETCDCTL_KEY="/path/to/client.key"- 需要注意 CA 证书是否正常可读
etcdctl 常用指令
增删改查
- put [options] <key> <value>
etcdctl put foo /"Hello World!/"etcdctl put web1 value1etcdctl put web2 value2- lease 附加到密钥的租约 ID(十六进制)
- prev-kv 返回修改之前的前一个键值对
- ignore-value 使用当前值更新键
- ignore-lease 使用当前租约更新密钥
可用选项
- GET [options] <key> [range_end]
etcdctl --write-out="json" get fooetcdctl get --from-key foo1etcdctl get --from-key ''- 获取所有
- DEL [options] <key> [range_end]
etcdctl del fooetcdctl del --prev-kv keyetcdctl del --from-key aetcdctl del --prefix zoo
终端管理
etcdctl -w table endpoint status-w json以 json 格式输出
etcdctl endpoint health
集群成员管理
etcdctl member list
etcdctl member add <memberName> [options]
etcdctl member update <memberID> [options]
etcdctl member remove <memberID>
基于角色的认证管理
etcdctl auth status
etcdctl user list
etcdctl role list
etcdctl role add root
etcdctl user add root
etcdctl user passwd root
etcdctl user grant-role root root
etcdctl user get root
etcd GUI 客户端 etcd-workbench
- Author:白鸟3
- URL:https://blog.kun2peng.top/datasci/etcd_kvstore
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
