ETCD安装部署与etcdctl常用命令

news2024/9/23 7:30:37

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-dirWAL 文件专用目录“”如果该值被设置,那么etcd就会被WAL文件写入该目录,而不是数据目录
–snapshot-count触发一次磁盘快照的提交事务的次数100000
–heartbeat-intervalLeader 心跳时间间隔100单位:ms
–election-timeout一次等待选举的超时时间1000单位:ms
–listen-peer-urls集群节点之间通信监听的 URLhttp://localhost:2380如果指定的 IP是 0.0.0.0,那么etcd 会监听所有网卡的指定端口
–listen-client-urls监听客户端请求的U]RLhttp://local-host:2379如果指定的IP是 0.0.0.0,那么etcd 会监听所有网卡的指定端口
–max-snapshotsetcd 保存的最大快照文件数50 代表无限制。Windows上无限制,但建议定期手动删除
–max-walsetcd 保存的 WAL 最大文件数50 代表无限制。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:2380key/value 形 式key指每个节点-“name”选项的值
–initial-cluster-state初始化集群状态new当静态启动或当DNS服务发现所有member都存在时设置成new。设置 成existing 时etcd 会尝试加人-个已经存在的集群
–initial-cluster-token初始化集群token
–discovery最初创建一个集群的服务发现 URL
–discovery-srv最初创建一个集群的服务发现DNSsrv域名
–discovery-fallback服务发现失败时的行为:proxy或exitproxyproxy只支持v2的API
–discovery -proxy服务发现使用的HTTP代理
–strict-reconfig-check拒绝所有会引起quorum丢失的重配置false
–auto-compaction-retentionMVCC键值存储不被自动压缩的时间0单位:h(小时),0意味着屏蔽自动压缩
–enable-v2接受v2的API请求true

proxy相关参数

以–proxy为前缀的选项配置etcd运行在proxy模式下,proxy模式只支持v2 API

参数含义默认值备注
–proxy设置proxy模式与否:off,readonly,onoff
–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所有的子项目日志界别都调整为DEBUGfalse默认日志级别为INFO
–log-package-levels为etcd某个独立的子项目设置日志级别,默认所有的子项目的日志级别为INFO例如 etcdserver=WARNING,security=DEBUG

不安全相关参数

使用不安全选项会破坏一致性协议的保证,

参数含义默认值备注
–force-new-cluster强制创建只有一个节点的etcd集群false该选项会强制一处集群内所有现存的节点(包含自身),一般备份恢复配合使用

统计相关参数

etcd统计运行时性能分析和监控数据

参数含义默认值备注
–enable-pprof启用收集运行时profile数据,并通过HTTP服务对外暴露falseURL是client URL+/debug/pprof/
–metrics设置到处metric数据的详细程度basic

认证相关参数

参数含义默认值备注
–auth-token指定token的类型和选项,并通过HTTP服务器对外暴露格式:type,var1=va11,var2=val2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

存储笔记10 虚拟化

存储虚拟化 识别不同的虚拟化技术 描述块级虚拟化技术 描述文件级虚拟化技术 讨论虚拟资源调配 Virtualization Overview 何为虚拟化 物理资源抽象到逻辑视图IT利用率和表现集中/共享资源简化资源管理减少停机时间 planned or unplanned 提高IT资源性能 虚拟内存虚拟网…

如何下载并安装Ubuntu22.04

Info 用于帮助不熟悉Ubuntu的朋友安装Ubuntu系统。 Herman Ye Auromix 2023-06-18 1.下载Ubuntu镜像 首先,前往Ubuntu官网下载镜像。 选择 Ubuntu 22.04.2 LTS,点击Download 22.04.2进行下载。 2.准备镜像烧录工具 前往balena官网下载烧录工具. 点击…

ER图和对应关系模式(只写关键)

本图用Visio进行绘图: ●矩形框内表明实体名 ●菱形框内表明联系类型 ●椭圆框内表明属性,可以是实体的属性,也可以是联系类型的属性 ●关键码的属性,在属性名下加下划线 ER图转关系模式说明: ER图中间含1&#xf…

永磁同步直线电机学习笔记——什么是直线电机?

永磁同步直线电机(Permanent Magnet Linear Synchronous Motor,简称PMLSM)是一种电动机,它通过将永磁体和线圈组合在一起,将电能转化为机械运动。与传统的旋转电机不同,PMLSM是一种直线运动电机&#xff0c…

AI 绘画(2):Ai模型训练,实现“人物模型“自由

文章目录 文章回顾感谢人员题外话Ai绘画公约Ai模型训练硬件要求显存设置查看显存大小显存过小解决方法 视频教程前期准备SD配置设置SD设置配置SD训练配置pt生成训练集收集训练集要求截图软件推荐训练集版权声明一键重命名图片训练图片来源批量修改图片尺寸 开始训练导入训练集&…

mybatis02 CRUD

CRUD代表四个基本功能:创建(Create)、检索(Retrieve)、更新(Update)和删除(Delete)。它们是大多数应用程序所需要的最基本的持久化操作。 - 创建(Create&…

【Java入门】-- Java基础详解之 [Java面向对象编程(初级)]

目录 1.类与对象 2.类与对象的区别与联系 3.对象在JVM内存中的存在形式(重要) 4.属性/成员变量/字段 5.如何创建对象 6.类和对象的内存分配机制 7.面向对象的三大特征? 8.面向对象和面向过程? 9.匿名对象 10.方法(method) 11.方法的重载(over…

一个AI关键词能卖500块?AI绘画引发研究关键词的商机

一个AI关键词能卖500块?AI绘画引发研究关键词的商机! 绘画一直被人们看作是视觉艺术的呈现方式。通常情况下,学习绘画需要理解调色、构图和线条等要素。然而,自从AI介入绘画领域后,绘画的"画风"迅速发生了变…

Mac下载安装vscode

1. 下载 先从 https://code.visualstudio.com 下载Mac版vscode。 2. 安装 下载之后在浏览器的下载中点击安装vscode 下载的时候会有提示 有时候还需要配置【安全性与隐私】,即允许App Store和被认可的开发者安装软件 3. 简单配置 默认进来会要求选择主题&a…

1初步整合ABP模块化

1 首先创建一个WebApi项目 2 初步整合ABP模块化 Abp官网,这里我们先初步整合WebApi模块化,待程序运行起来,后续文章我们再对Abp进行深入。 2.1 NuGet:包Volo.Abp Volo,Abp:模块化必备 2.2 NuGet:Volo.Abp.A…

scratch lenet(5): 快速生成随机数的C语言实现

文章目录 1. 目的2. 使用 rand() 的正确姿势3. 使用 TAOCP 公式3.1 实现3.2 使用 4. 随机数:用于 Xavier Glorot 初始化4.1 Xavier Glorot 初始化是什么4.2 使用C语言执行 Xavier Glorot 初始化 5. References 1. 目的 用于 lenet 网络训练开始时, weig…

神奇的 SQL 之 HAVING 一个容易被忽视的主角!

初识 HAVING 关于 SQL 中的 HAVING,相信大家都不陌生,它往往与 GROUP BY 配合使用,为聚合操作指定条件 说到指定条件,我们最先想到的往往是 WHERE 子句,但 WHERE 子句只能指定行的条件,而不能指定组的条件…

使用css3如何实现一个文字打印效果

前言 在很多网站首页介绍页里,为了吸引用户,暂留更长时间,使用了一些css3动画的 示例效果 文字打印.gif 实现这个动画原理 想要实现这个动画,改变元素的宽度,结合动画css3关键帧实现 具体代码如下所示 <!DOCTYPE html> <html lang"en"><head><m…

[元带你学: eMMC协议详解 14] 数据擦除(Erase) 详解

依JEDEC eMMC 5.1及经验辛苦整理&#xff0c;付费内容&#xff0c;禁止转载。 所在专栏 《元带你学: eMMC协议详解》 内容摘要 全文 4200字&#xff0c; 主要内容介绍了各种擦除操作概念以记用法&#xff0c;总结了不同擦除操作的区别&#xff0c; 根据不同安全级别和应用场景…

管理类联考——英语二——技巧篇——写作——A节——书信——九类书信黄金句型(背诵版)

九类书信黄金句型(背诵版) 1&#xff0e;询问信 询问信开头常用句式 l would be grateful if you could send me information about. . . l am writing to see if it is possible for you to provide me with information about. . . l am writing to ask you if/ whether. .…

15-5.自定义组件的通信

目录 1 构建组件间的父子关系 2 父向子传值-属性绑定 3 子向父传值-自定义事件 4 获取组件实例 1 构建组件间的父子关系 需要在father1.json中引入son1&#xff0c;然后再father.wxml中使用son1 2 父向子传值-属性绑定 属性绑定很像props。属性绑定只能传递普通类型…

3C - SiC、4H-SiC和6H -SiC

3C-SiC是立方结构 4H-SiC是四方结构 6H-SiC是双六方结构 它们的区别主要在于原子排列模式和配位数。3C-SiC具有最高的理论电子速度,但也有最大的杂质腐蚀痕迹。4H-SiC和6H-SiC具有更好的成本效益与设备可靠性。 3C-SiC具有立方晶系结构&#xff0c;每个硅原子被四个碳原子和四…

深度学习(22)——YOLO系列(3)

深度学习&#xff08;22&#xff09;——YOLO系列&#xff08;3&#xff09; 文章目录 深度学习&#xff08;22&#xff09;——YOLO系列&#xff08;3&#xff09;1. BOF(bag of freebies)2. Mosaic data augmentation3. 数据增强4. self-adversarial-training&#xff08;SAT…

LwIP系列(2):动态内存池管理(memp.c)详细分析

前言 我们在学习Lwip源码时&#xff0c;内存管理是绕不开的一个重点&#xff0c;我们在看相关的代码时&#xff0c;经常会看到memp_malloc 和 mem_malloc, 其中&#xff1a; &#xff08;1&#xff09;memp_malloc是从内存池中申请内存&#xff0c;具体实现在memp.c memp.h。…

木马攻击与防护

目录 一、初识Trojan木马 1.1 木马概念 1.2 木马特点 1.2.1 欺骗性 1.2.2 隐蔽性 1.2.3 非授权性 1.3 病毒和木马 1.3.1 病毒的特点 1.3.2 病毒的主要目的 1.3.3 病毒例子 1.3.4 木马程序企图 1.3.5 木马危害 1.3.6 病毒与木马的区别 1.4 木马种类 1.4.1 远程访…