ETCD安装部署与etcdctl常用命令
- 单机部署
- 集群部署
- 静态配置
- 服务发现
- etcd自发现模式
- DNS自发现模式
- etcdctl常用命令
- key的常规操作
- key的历史与watch
- watch
- 压缩
- 租约
- etcd常用配置参数
- member相关参数
- cluster相关参数
- proxy相关参数
- 安全相关参数
- 日志相关参数
- 不安全相关参数
- 统计相关参数
- 认证相关参数
单机部署
以3.5.1为例:https://github.com/etcd-io/etcd/releases/tag/v3.5.1
虚机部署
ETCD_VER=v3.5.1
# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
/tmp/etcd-download-test/etcd --version
/tmp/etcd-download-test/etcdctl version
/tmp/etcd-download-test/etcdutl version
检查etcdserver版本
# start a local etcd server
/tmp/etcd-download-test/etcd
# write,read to etcd
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
docker部署
rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
docker rmi gcr.io/etcd-development/etcd:v3.5.1 || true && \
docker run \
-p 2379:2379 \
-p 2380:2380 \
--mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
--name etcd-gcr-v3.5.1 \
gcr.io/etcd-development/etcd:v3.5.1 \
/usr/local/bin/etcd \
--name s1 \
--data-dir /etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--initial-cluster s1=http://0.0.0.0:2380 \
--initial-cluster-token tkn \
--initial-cluster-state new \
--log-level info \
--logger zap \
--log-outputs stderr
docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcd --version"
docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl version"
docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl get foo"
docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdutl version"
集群部署
多节点集群化部署,启动方式包含静态配置和服务发现,
静态配置
适用于线下环境,由于etcd集群中各member需要互相感知对方,因此在启动时会对集群有一定要求,包含:
- 集群节点个数已知
- 集群各节点的地址已知
集群各节点的地址信息通过etcd启动时通过“–initial-cluster”来设置,此参数指定的URL就是集群各个节点的advertise-peer-urls,需要与“–initial-advertise-peer-urls”配置值匹配,多个节点用逗号隔开。
etcd server在“–listen-client-urls”指定监听客户端请求,而“–advertise-client-urls”指定该成员的客户端URL则会向集群的其他成员发布(etcd server之间是可以重定向请求的,比如:Follower节点可以将客户端的写请求重定向给Leader节点)
注意:如果要使用etcd的proxy特性,慎用http://localhost:2379作为“–advertise-client-urls”参数,这将导致死循环,因为etcd proxy将会优先把请求重定向给自己,知道本节点的内存,文件描述符等资源被耗尽为止。
三个节点启动方式案例如下:
节点1:10.1.1.10
etcd --name infra0 --initial-advertise-peer-urls http://10.1.1.10:2380 \
--listen-peer-urls http://10.1.1.10:2380 \
--listen-client-urls http://10.1.1.10:2379,http://127.0.0.1:2379\
--advertise-client-urls http://10.1.1.10:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster infra0=http://10.1.1.10:2380,infra1=http://10.1.1.11:2379,infra2=http://10.1.1.12:2379\
--initial-cluster-state new
节点2:10.1.1.11
etcd --name infra1 --initial-advertise-peer-urls http://10.1.1.11:2380 \
--listen-peer-urls http://10.1.1.11:2380 \
--listen-client-urls http://10.1.1.11:2379,http://127.0.0.1:2379\
--advertise-client-urls http://10.1.1.11:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster infra0=http://10.1.1.10:2380,infra1=http://10.1.1.11:2379,infra2=http://10.1.1.12:2379\
--initial-cluster-state new
节点3:10.1.1.12
etcd --name infra2 --initial-advertise-peer-urls http://10.1.1.12:2380 \
--listen-peer-urls http://10.1.1.12:2380 \
--listen-client-urls http://10.1.1.12:2379,http://127.0.0.1:2379\
--advertise-client-urls http://10.1.1.12:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster infra0=http://10.1.1.10:2380,infra1=http://10.1.1.11:2379,infra2=http://10.1.1.12:2379\
--initial-cluster-state new
集群启动后,“–initial-cluster”参数的更新会被忽略,如果真要修改集群配置,就要用到运行时重配置特性。
错误案例
etcd --name infra1 --initial-advertise-peer-urls http://10.1.1.11:2380 \
--listen-peer-urls http://10.1.1.11:2380 \
--listen-client-urls http://10.1.1.11:2379,http://127.0.0.1:2379\
--advertise-client-urls http://10.1.1.11:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster infra0=http://10.1.1.10:2380 \
--initial-cluster-state new
错误原因:infra1没有包含在枚举的node列表中
etcd --name infra1 --initial-advertise-peer-urls http://127.0.0.1:2380 \
--listen-peer-urls http://10.1.1.11:2380 \
--listen-client-urls http://10.1.1.11:2379,http://127.0.0.1:2379\
--advertise-client-urls http://10.1.1.11:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster infra0=http://10.1.1.10:2380,infra1=http://10.1.1.11:2379,infra2=http://10.1.1.12:2379\
--initial-cluster-state new
错误原因:节点infra0映射的地址是127.0.0.1:2380,与初始化集群member列表中的http://10.1.1.11:2380不匹配
etcd --name infra3 --initial-advertise-peer-urls http://10.1.1.13:2380 \
--listen-peer-urls http://10.1.1.13:2380 \
--listen-client-urls http://10.1.1.13:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.1.1.13:2379 \
--initial-cluster infra0=http://10.1.1.10:2380,infra1=http://10.1.1.11:2379,infra2=http://10.1.1.13:2379\
--initial-cluster-state new
错误原因:该节点配置参数与洁群的其他member不同,且试图加入到集群中。etcd抛出一个集群ID不匹配的错误退出
服务发现
etcd服务自发现即为使用一个现有的etcd集群来启动另一个新的etcd集群,自发现包含两种模式:
- etcd自发现模式
- DNS自发现模式
etcd自发现模式
设置服务发现URL,如下例如:https://myetcd.local/v2/keys/discovery/6csfdfsdfdsfdsfswerewrwerwer,通过discovery参数来启动etcd,新的etcd实例就会自动使用https://myetcd.local的/v2/keys/discovery/6csfdfsdfdsfdsfswerewrwerwer目录进行etcd的启动注册。具体如下:
节点1:10.1.1.10
etcd --name infra0 --initial-advertise-peer-urls http://10.1.1.10:2380 \
--listen-peer-urls http://10.1.1.10:2380 \
--listen-client-urls http://10.1.1.10:2379,http://127.0.0.1:2379\
--advertise-client-urls http://10.1.1.10:2379 \
--discovery https://myetcd.local/v2/keys/discovery/6csfdfsdfdsfdsfswerewrwerwere \
--initial-cluster-state new
节点2:10.1.1.11
etcd --name infra1 --initial-advertise-peer-urls http://10.1.1.11:2380 \
--listen-peer-urls http://10.1.1.11:2380 \
--listen-client-urls http://10.1.1.11:2379,http://127.0.0.1:2379\
--advertise-client-urls http://10.1.1.11:2379 \
--discovery https://myetcd.local/v2/keys/discovery/6csfdfsdfdsfdsfswerewrwerwere \
--initial-cluster-state new
节点3:10.1.1.12
etcd --name infra2 --initial-advertise-peer-urls http://10.1.1.12:2380 \
--listen-peer-urls http://10.1.1.12:2380 \
--listen-client-urls http://10.1.1.12:2379,http://127.0.0.1:2379\
--advertise-client-urls http://10.1.1.12:2379 \
--discovery https://myetcd.local/v2/keys/discovery/6csfdfsdfdsfdsfswerewrwerwere \
--initial-cluster-state new
这样新启动的etcd member都会通过现有的etcd进行自动注册,一旦所有的member都注册完成,就组成了一个集群。如果没有现成的etcd集群可用,可以使用公网上的etcd(etcd官网提供了一个可以公网访问的etcd存储地址:https://discovery.etcd.io,可免费使用)进行服务发现。使用下面命令创建一个新的服务发现URL
[root@VM-12-8-opencloudos ~]# curl https://discovery.etcd.io/new?size=3
https://discovery.etcd.io/765b77d1962b6b30859f25f900b4d2ea
然后例如启动一个节点如下:
etcd --name infra2 --initial-advertise-peer-urls http://10.0.12.8:12380 \
--listen-peer-urls http://10.0.12.8:12380 \
--listen-client-urls http://10.0.12.8:2379,http://127.0.0.1:12379\
--advertise-client-urls http://10.0.12.8:12379 \
--discovery https://discovery.etcd.io/765b77d1962b6b30859f25f900b4d2ea \
--initial-cluster-state new
例如启动一个后,访问此地址:可见nodes有一个节点已经注册
这种方式需要通过HTTP代理才能访问到公网,etcd的启动参数“–discovery-proxy”支持配置HTTP代理服务器。同样在完成集群的初始化后,这些信息就失去了作用,当需要增加节点时,使用etcdctl来进行操作。
为了安全,每次启动新etcd集群时,都使用新的discovery token进行注册。另外,如果初始化时启动的节点超过了指定的数量,那么多余的节点会自动转化为Proxy模式的etcd
DNS自发现模式
DNS的SRV记录能够用于服务发现,因此etcd还支持使用DNS SRV记录进行启动。
DNS配置(包含SRV记录配置以及A记录配置)
$ dig +noall +ansver SRV _etcd-server._tcp.example.com
_etcd-server._tcp.example.com. 300 IN SRV 0 0 2380 infra0.example.com
_etcd-server._tcp.example.com. 300 IN SRV 0 0 2380 infra1.example.com
_etcd-server._tcp.example.com. 300 IN SRV 0 0 2380 infra2.example.com
$ dig +noall +ansver infra0.example.com infra1.example.com infra2.example.com
infra0.example.com. 300 IN A 10.0.1.10
infra1.example.com. 300 IN A 10.0.1.11
infra2.example.com. 300 IN A 10.0.1.12
启动方式如下:
etcd --name infra0
--initial-advertise-peer-urls http://infra0.example.com:2380 \
--listen-peer-urls http://infra0.example.com:2380 \
--listen-client-urlshttp://infra0.example.com:2379\
--advertise-client-urlshttp://infra0.example.com:2379 \
--initial-cluster-token etcd-cluster-1 \
--discovery-srv example.com \
--initial-cluster-state new
etcdctl常用命令
用户可以通过etcdctl命令行工具与etcd服务端进行交互。可以直接查看etcdctl的默认的API版本
[root@VM-12-8-opencloudos ~]# etcdctl version
etcdctl version: 3.5.4
API version: 3.5
key的常规操作
- 写入一个key
# 所有存储的key都通过Raft协议被复制到etcd集群的所有节点上,Raft协议保证了数据的一致性和可靠性。
[root@VM-12-8-opencloudos ~]# etcdctl put foo bar
OK
# 使用租约,租约需要提前创建
[root@VM-12-8-opencloudos ~]# etcdctl put foo1 bar1 --lease=1234abcd
OK
- 读取一个key
如果当前集群包含的数据
foo = bar
foo1 = bar1
foo2 = bar2
foo3 = bar3
[root@VM-12-8-opencloudos ~]# etcdctl get foo
foo
bar
# 只打印value
[root@VM-12-8-opencloudos ~]# etcdctl get foo --print-value-only
bar
# 读取一个范围内的key,注意是左闭右开[foo,foo3)
[root@VM-12-8-opencloudos ~]# etcdctl get foo foo3
foo
bar
foo1
bar1
foo2
bar2
# 遍历所有foo为前缀的key
[root@VM-12-8-opencloudos ~]# etcdctl get --prefix foo
foo
bar
foo1
bar1
foo2
bar2
foo3
bar3
# 限制输出结果的数量
[root@VM-12-8-opencloudos ~]# etcdctl get --prefix --limit=2 foo
foo
bar
foo1
bar1
- 读取老版本的key
etcd支持客户端读取老版本的key,可以对数据进行回滚等操作。因为对etcd后端存储的每次修改都会增加etcd集群全局的版本号(revision),所以只需要提供指定的版本号就能读取相应版本的key
例如当前数据:
foo bar # revision=2
foo1 = bar1 # revision=3
foo = bar_new # revision=4
foo1 = bar1_new # revision=5
$ etcdctl get --prefix foo
foo
bar_new
foo1
bar_new1
$ etcdctl get --prefix --rev=4 foo
foo
bar_new
foo1
bar1
$ etcdctl get --prefix --rev=3 foo
foo
bar
foo1
bar1
$ etcdctl get --prefix --rev=2 foo
foo
bar
$ etcdctl get --prefix --rev=1 foo
- 按key的字段序来读取
当客户端希望读取大于或等于key的字节值时,可使用“–from-key”参数
例如当前集群:
a = 123
b = 456
c = 789
$ etcdctl get --from-key b
b
456
c
789
- 删除key
用户可以删除一个etcd集群中的一个key或一个范围内的key
假设集群内的值:
foo = bar
foo1 = bar1
foo2 = bar2
foo3 = bar3
zzz1 = 1
zzz2 = 2
zzz3 = 3
aaa = bbb
a = 123
b = 456
c = 789
# 删除一个key
[root@VM-12-8-opencloudos ~]# etcdctl del foo
1
# 删除一个范围的key
[root@VM-12-8-opencloudos ~]# etcdctl del foo1 foo9
3
# 删除某个key同时返回对应的value
[root@VM-12-8-opencloudos ~]# etcdctl del aaa --prev-kv
1
aaa
bbb
# 删除某个前缀的key
[root@VM-12-8-opencloudos ~]# etcdctl del --prefix zzz
3
# 删除字典序大于或等于某个字符的所有key
[root@VM-12-8-opencloudos ~]# etcdctl del --from-key b
2
key的历史与watch
etcd具备watch机制,当某个key发生变化时,客户端就能感知到变化,对应就是watch命令,除非该子命令捕获到退出信号量,否则会一直等待。
watch
如下,可以watch一个key:
可以watch一个范围的key:
可以watch某个字符串为前缀的key:
watch子命令还支持交互模式,使用-i选项可以watch多个key,可以手动输入
watch从指定版本开始
[root@VM-12-8-opencloudos ~]# etcdctl watch --rev=2 foo
PUT
foo
bar
DELETE
foo
PUT
foo
bar
PUT
foo
1
[root@VM-12-8-opencloudos ~]# etcdctl watch --prev-kv foo
PUT
foo # key
1 # value更新前
foo # key
1 # value更新后
PUT
foo
1 # value更新前
foo
2 # value更新后
压缩
为了让客户端能够访问到key过去任意版本的value,etcd会一直保存key所有历史版本的value。然而,etcd所占的磁盘空间不能无限膨胀,因此需要为etcd配置压缩key版本号来释放磁盘空间,具体如下:
# 压缩所有key版本号5之前的所有数据
[root@VM-12-8-opencloudos ~]# etcdctl compact 5
compacted revision 5
[root@VM-12-8-opencloudos ~]# etcdctl get --rev=4 foo
{"level":"warn","ts":"2023-06-18T11:05:23.679+0800","logger":"etcd-client","caller":"v3/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc0000d4a80/127.0.0.1:2379","attempt":0,"error":"rpc error: code = OutOfRange desc = etcdserver: mvcc: required revision has been compacted"}
Error: etcdserver: mvcc: required revision has been compacted
在压缩key版本前,用户需要认真权衡,压缩后该版本之前所有key的value将都不可用。用户可以通过get一个key(无论是否存在)来获取当前etcd服务端版本号
[root@VM-12-8-opencloudos ~]# etcdctl get mykeydemo -w=json
{"header":{"cluster_id":14841639068965178418,"member_id":10276657743932975437,"revision":208,"raft_term":2}
> 可见etcd的最新版本号是208
租约
租约是etcd v3 API的特性,客户端可以为key授予租约(lease)、当一个key绑定一个租约时,它的生命周期变会与该租约的TTL(time-to-live)保持一致。如果一个租约到期,则绑定的所有key都会被自动删除
[root@VM-12-8-opencloudos ~]# etcdctl lease grant 10
lease 694d8836e2ae5000 granted with TTL(10s)
[root@VM-12-8-opencloudos ~]# etcdctl put qwer bar --lease=694d8836e2ae5000
OK
[root@VM-12-8-opencloudos ~]# etcdctl get qwer
qwer
bar
[root@VM-12-8-opencloudos ~]# etcdctl get qwer
- 撤销租约
$ etcdctl lease revoke 694d8836e2ae5000
$ etcdctl get foo
租约被撤销后,将会删除绑定在上面的所有key
- 续租
# 客户端能通过刷新TTL的方式为租约维活,使它不过期
$ etcdctl lease keep-alive 694d8836e2ae5000
如上可见,每次续租都发生在该租约快过期时,且续租的TTL等于最初授予的值
- 获取租约信息
# 创建租约
[root@VM-12-8-opencloudos ~]# etcdctl lease grant 500
lease 694d8836e2ae504e granted with TTL(500s)
# 查看租约的TTL以及剩余时间
[root@VM-12-8-opencloudos ~]# etcdctl lease timetolive 694d8836e2ae504e
# 绑定租约
lease 694d8836e2ae504e granted with TTL(500s), remaining(469s)
[root@VM-12-8-opencloudos ~]# etcdctl put asdf a --lease=694d8836e2ae504e
OK
# 查看绑定此租约的keys
[root@VM-12-8-opencloudos ~]# etcdctl lease timetolive 694d8836e2ae504e --keys
lease 694d8836e2ae504e granted with TTL(500s), remaining(405s), attached keys([asdf])
- 租约过期查询
[root@VM-12-8-opencloudos ~]# etcdctl lease grant 10
lease 694d8836e2ae5070 granted with TTL(10s)
[root@VM-12-8-opencloudos ~]# etcdctl lease timetolive
Error: lease timetolive command needs lease ID as argument
[root@VM-12-8-opencloudos ~]# etcdctl lease timetolive 694d8836e2ae5070
lease 694d8836e2ae5070 granted with TTL(10s), remaining(1s)
[root@VM-12-8-opencloudos ~]# etcdctl lease timetolive 694d8836e2ae5070
lease 694d8836e2ae5070 granted with TTL(10s), remaining(0s)
[root@VM-12-8-opencloudos ~]# etcdctl lease timetolive 694d8836e2ae5070
lease 694d8836e2ae5070 already expired
[root@VM-12-8-opencloudos ~]# etcdctl lease timetolive 694d8836e2ae5070
lease 694d8836e2ae5070 already expired
etcd常用配置参数
etcd可以通过命令行选项和环境变量配置启动参数,命令行与环境变量的关系,例如:–my-flag,则环境变量为ETCD_MY_FLAG,都是加了一个ETCD前缀。
member相关参数
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
–name | 标识该member对人友好的名字 | default | |
–data-dir | 数据目录的路径 | ${name}.etcd | |
–wal-dir | WAL 文件专用目录 | “” | 如果该值被设置,那么etcd就会被WAL文件写入该目录,而不是数据目录 |
–snapshot-count | 触发一次磁盘快照的提交事务的次数 | 100000 | |
–heartbeat-interval | Leader 心跳时间间隔 | 100 | 单位:ms |
–election-timeout | 一次等待选举的超时时间 | 1000 | 单位:ms |
–listen-peer-urls | 集群节点之间通信监听的 URL | http://localhost:2380 | 如果指定的 IP是 0.0.0.0,那么etcd 会监听所有网卡的指定端口 |
–listen-client-urls | 监听客户端请求的U]RL | http://local-host:2379 | 如果指定的IP是 0.0.0.0,那么etcd 会监听所有网卡的指定端口 |
–max-snapshots | etcd 保存的最大快照文件数 | 5 | 0 代表无限制。Windows上无限制,但建议定期手动删除 |
–max-wals | etcd 保存的 WAL 最大文件数 | 5 | 0 代表无限制。Windows上无限制,但建议定期手动删除 |
–cors | 逗号分隔的跨城资源共享(CORS)白名单 | 空 | 0 代表无限制。Windows上无限制,但建议定期手动删除 |
cluster相关参数
以–initial为前缀的选项用于一个member最初的启动过程和运行时,重启时则被忽略。以–discovery为前缀的选项用于服务发现。
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
–initial-advertise-peer-urls | 该member的peer URL。这些地址用于etcd数据在集群内进行交互 | http://localhost:2380 | 至少一个,必需能够对集群中的所有member均可路由,可以是域名 |
–initial-cluster | 初始启动的集群配置 | default=http://localhost:2380 | key/value 形 式key指每个节点-“name”选项的值 |
–initial-cluster-state | 初始化集群状态 | new | 当静态启动或当DNS服务发现所有member都存在时设置成new。设置 成existing 时etcd 会尝试加人-个已经存在的集群 |
–initial-cluster-token | 初始化集群token | ||
–discovery | 最初创建一个集群的服务发现 URL | 空 | |
–discovery-srv | 最初创建一个集群的服务发现DNSsrv域名 | 空 | |
–discovery-fallback | 服务发现失败时的行为:proxy或exit | proxy | proxy只支持v2的API |
–discovery -proxy | 服务发现使用的HTTP代理 | 空 | |
–strict-reconfig-check | 拒绝所有会引起quorum丢失的重配置 | false | |
–auto-compaction-retention | MVCC键值存储不被自动压缩的时间 | 0 | 单位:h(小时),0意味着屏蔽自动压缩 |
–enable-v2 | 接受v2的API请求 | true |
proxy相关参数
以–proxy为前缀的选项配置etcd运行在proxy模式下,proxy模式只支持v2 API
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
–proxy | 设置proxy模式与否:off,readonly,on | off | |
–proxy-failure-wati | 当后端发生错误时proxy下次发送给它的等待时间 | 5000 | 单位:ms |
–proxy-refresh-interval | 后端刷新时间间隔 | 30000 | 单位:ms |
–proxy-dial-timeout | 与后端链接的超时时间 | 1000 | 单位:ms。0代表没有timeout |
–proxy-write-timeout | 写后端的超时时间 | 5000 | 单位:ms。0代表没有timeout |
–proxy-read-timeout | 读后端的超时时间 | 0 | 单位:ms。0代表没有timeout |
安全相关参数
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
–ca-file | 客户端服务器TLS CA文件路径 | ||
–cert-file | 客户端服务器TLS 证书文件路径 | ||
–key-file | 客户端服务器TLS 秘钥文件路径 | ||
–client-cert-auth | 是否开启客户端证书认证 | false | |
–trusted-ca-file | 客户端服务器TLS授信CA文件路径 | ||
–auto-tls | 客户端TLS是否使用自动生成的证书 | false | |
–peer-cert-file | 服务器TLS证书文件路径 | ||
–peer-key-file | 服务器TLS key文件路径 | ||
–peer-client-cert-auth | 是否启用peer客户端证书认证 | false | |
–peer-trusted-ca-file | 服务端TLS受信CA文件路径 | ||
–peer-auto-tls | 是否使用自动生成的证书 | false |
日志相关参数
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
–debug | 将etcd所有的子项目日志界别都调整为DEBUG | false | 默认日志级别为INFO |
–log-package-levels | 为etcd某个独立的子项目设置日志级别,默认所有的子项目的日志级别为INFO | 例如 etcdserver=WARNING,security=DEBUG |
不安全相关参数
使用不安全选项会破坏一致性协议的保证,
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
–force-new-cluster | 强制创建只有一个节点的etcd集群 | false | 该选项会强制一处集群内所有现存的节点(包含自身),一般备份恢复配合使用 |
统计相关参数
etcd统计运行时性能分析和监控数据
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
–enable-pprof | 启用收集运行时profile数据,并通过HTTP服务对外暴露 | false | URL是client URL+/debug/pprof/ |
–metrics | 设置到处metric数据的详细程度 | basic |
认证相关参数
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
–auth-token | 指定token的类型和选项,并通过HTTP服务器对外暴露 | 格式:type,var1=va11,var2=val2 |