【ETCD】通过 docker 快速搭建集群 etcd 环境
一、准备
1.下载镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24
2.修改镜像为自己的镜像
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24 镜像名:版本
docker push 镜像名:版本
二、安装简单版本
1.创建文件夹
mkdir -p /opt/etcd
2.运行
docker run --name etcd1 \
--restart
=always \
--net host -d \
--restart always \
--privileged
=true \
-m 4g \
-v /opt/etcd:/var/etcd \
-v /etc/localtime:/etc/localtime \
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24 \
etcd --name etcd-mscm1 \
--auto-compaction-retention
=1 --max-request-bytes
=33554432 --quota-backend-bytes
=8589934592 \
--data-dir
=/var/etcd/etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://172.16.46.214:2380 \
--advertise-client-urls http://172.16.46.214:2379,http://172.16.46.214:2380 \
-initial-cluster-token mscm-etcd-cluster \
-initial-cluster
"etcd-mscm1=http://172.16.46.214:2380,etcd-mscm2=http://172.16.46.213:2380" \
-initial-cluster-state new
docker run --name etcd2 \
--restart
=always \
--net host -d \
--restart always \
--privileged
=true \
-m 4g \
-v /opt/etcd:/var/etcd \
-v /etc/localtime:/etc/localtime \
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24 \
etcd --name etcd-mscm2 \
--auto-compaction-retention
=1 --max-request-bytes
=33554432 --quota-backend-bytes
=8589934592 \
--data-dir
=/var/etcd/etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://172.16.46.213:2380 \
--advertise-client-urls http://172.16.46.213:2379,http://172.16.46.213:2380 \
-initial-cluster-token mscm-etcd-cluster \
-initial-cluster
"etcd-mscm1=http://172.16.46.214:2380,etcd-mscm2=http://172.16.46.213:2380" \
-initial-cluster-state new
参数:
–auto-compaction-retention
由于ETCD数据存储多版本数据,随着写入的主键增加历史版本需要定时清理,默认的历史数据是不会清理的,数据达到2G就不能写入,必须要清理压缩历史数据才能继续写入;所以根据业务需求,在上生产环境之前就提前确定,历史数据多长时间压缩一次;推荐一小时压缩一次数据这样可以极大的保证集群稳定,减少内存和磁盘占用
–max-request-bytes
etcd Raft消息最大字节数,ETCD默认该值为1.5M; 但是很多业务场景发现同步数据的时候1.5M完全没法满足要求,所以提前确定初始值很重要;由于1.5M导致我们线上的业务无法写入元数据的问题,我们紧急升级之后把该值修改为默认32M,但是官方推荐的是10M,大家可以根据业务情况自己调整
–quota-backend-bytes
ETCD db数据大小,默认是2G,当数据达到2G的时候就不允许写入,必须对历史数据进行压缩才能继续写入;参加1里面说的,我们启动的时候就应该提前确定大小,官方推荐是8G,这里我们也使用8G的配置
–data-dir
数据存储目录
–listen-client-urls
本节点访问地址,地址写法是 scheme://IP:port,可以多个并用逗号隔开,如果配置是http://0.0.0.0:2379,将不限制node访问地址
–listen-peer-urls
本节点与其他节点进行数据交换(选举,数据同步)的监听地址,地址写法是 scheme://IP:port,可以多个并用逗号隔开,如果配置是http://0.0.0.0:2379,将不限制node访问地址
–initial-advertise-peer-urls
通知其他节点与本节点进行数据交换(选举,同步)的地址,URL可以使用domain地址。
与–listener-peer-urls不同在于listener-peer-urls用于请求客户端的接入控制,initial-advertise-peer-urls是告知其他集群节点访问哪个URL,一般来说,initial-advertise-peer-urlsl将是istener-peer-urls的子集
–advertise-client-urls
用于通知其他ETCD节点,客户端接入本节点的监听地址,一般来说advertise-client-urls是listen-client-urls子集
–initial-cluster-token
集群唯一标识,相同标识的节点将视为在一个集群内
–initial-cluster
集群所有节点配置,多个用逗号隔开。
–initial-cluster-state
节点初始化方式,new 表示如果没有集群不存在,创建新集群,existing表示如果集群不存在,节点将处于加入集群失败状态。
3.验证
docker
exec -it 容器 /bin/sh
etcdctl member list
etcdctl cluster-health
三、TLS证书安装
1.安装证书生成工具cfssl
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
2.验证
cfssl --hellp
3.生成一个配置模板
cfssl print-defaults config
> ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"mscmssl": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
4.生成一个csr
cfssl print-defaults csr
> ca-csr.json
{
"CN": "mscmssl",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "HangZhou",
"ST": "HangZhou",
"O": "mscm",
"OU":"System"
}
]
}
5.生成ca证书
cfssl gencert -initca ca-csr.json
| cfssljson -bare ca -
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZD8kFufX-1603246454241)( https://typora-hb.oss-cn-shanghai.aliyuncs.com/typera/image-20200915151953140.png)]
6.生成server-csr.json
cat > server-csr.json
<<EOF
{
"CN": "mscmssl",
"hosts": [
"127.0.0.1",
"172.16.46.214",
"172.16.46.213"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "HangZhou",
"ST": "HangZhou",
"O":"mscm",
"OU": "System"
}
]
}
EOF
7.生成server证书
cfssl gencert -ca
=ca.pem -ca-key
=ca-key.pem -config
=ca-config.json \
-profile
=mscmssl server-csr.json
| cfssljson -bare server
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKNLtpYF-1603246454242)( https://typora-hb.oss-cn-shanghai.aliyuncs.com/typera/image-20200915153415753.png)]
8.生成admin-csr.json
cat > admin-csr.json
<<EOF
{
"CN": "admin",
"hosts": [ ],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "HangZhou",
"ST": "HangZhou",
"O":"system:masters",
"OU": "System"
}
]
}
EOF
9.生成admin证书
cfssl gencert -ca
=ca.pem -ca-key
=ca-key.pem -config
=ca-config.json \
-profile
=mscmssl admin-csr.json
| cfssljson -bare admin
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9BlLvJ3T-1603246454243)( https://typora-hb.oss-cn-shanghai.aliyuncs.com/typera/image-20200915153842455.png)]
10.删除其他文件,保存.pem文件
ls | grep -v pem
| xargs -i
rm {}
11.把证书放入相应的文件夹
mkdir /opt/etcd/ssl
cp -rf ca-key.pem ca.pem server-key.pem server.pem /opt/etcd/ssl/
11.运行
docker run --name etcd-213 \
--restart
=always \
--net host -d \
--restart always \
--privileged
=true \
-m 4g \
-v /opt/etcd:/var/etcd \
-v /etc/localtime:/etc/localtime \
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24 \
etcd --name etcd-mscm-213 \
--auto-compaction-retention
=1 --max-request-bytes
=33554432 --quota-backend-bytes
=8589934592 \
--enable-v2
='true' \
--client-cert-auth
='true' \
--trusted-ca-file
=/var/etcd/ssl/ca.pem \
--cert-file
=/var/etcd/ssl/server.pem \
--key-file
=/var/etcd/ssl/server-key.pem \
--peer-client-cert-auth
='true' \
--peer-trusted-ca-file
=/var/etcd/ssl/ca.pem \
--peer-cert-file
=/var/etcd/ssl/server.pem \
--peer-key-file
=/var/etcd/ssl/server-key.pem \
--trusted-ca-file
=/var/etcd/ssl/ca.pem \
--peer-trusted-ca-file
=/var/etcd/ssl/ca.pem \
--data-dir
=/var/etcd/etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://172.16.46.213:2380 \
--advertise-client-urls http://172.16.46.213:2379,http://172.16.46.213:2380 \
-initial-cluster-token mscm-etcd-cluster \
-initial-cluster
"etcd-mscm-214=http://172.16.46.214:2380,etcd-mscm-213=http://172.16.46.213:2380" \
-initial-cluster-state new
docker run --name etcd-214 \
--restart
=always \
--net host -d \
--restart always \
--privileged
=true \
-m 4g \
-v /opt/etcd:/var/etcd \
-v /etc/localtime:/etc/localtime \
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24 \
etcd --name etcd-mscm-214 \
--auto-compaction-retention
=1 --max-request-bytes
=33554432 --quota-backend-bytes
=8589934592 \
--enable-v2
='true' \
--client-cert-auth
='true' \
--ca-file
=/var/etcd/ssl/ca.pem \
--cert-file
=/var/etcd/ssl/server.pem \
--key-file
=/var/etcd/ssl/server-key.pem \
--peer-client-cert-auth
='true' \
--peer-trusted-ca-file
=/var/etcd/ssl/ca.pem \
--peer-cert-file
=/var/etcd/ssl/server.pem \
--peer-key-file
=/var/etcd/ssl/server-key.pem \
--trusted-ca-file
=/var/etcd/ssl/ca.pem \
--peer-trusted-ca-file
=/var/etcd/ssl/ca.pem \
--data-dir
=/var/etcd/etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://172.16.46.214:2380 \
--advertise-client-urls http://172.16.46.214:2379,http://172.16.46.214:2380 \
-initial-cluster-token mscm-etcd-cluster \
-initial-cluster
"etcd-mscm-214=http://172.16.46.214:2380,etcd-mscm-213=http://172.16.46.213:2380" \
-initial-cluster-state new
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UkVZCQ6w-1603246454245)(/Users/hbsky/Library/Application Support/typora-user-images/image-20200915165739599.png)]
注意:docker安装的etcd有问题,集群一会好一会坏,推荐使用二进制
四、二进制安装
1.下载二进制文件
wget https://github.com/etcd-io/etcd/releases/download/v3.2.12/etcd-v3.2.12-linux-amd64.tar.gz
2.创建文件夹
mkdir -p /opt/etcd/bin cfg ssl
3.解压后文件迁移
tar -zxvf etcd-v3.2.12-linux-amd64.tar.gz
cd etcd-v3.2.12-linux-amd64
mv etcd /opt/etcd/bin/
mv etcdctl /opt/etcd/bin/
4.创建配置文件
cat > /opt/etcd/cfg/etcd
<<EOF
#[Member]
ETCD_NAME="etcd214"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="https://172.16.46.214:2380" ETCD_LISTEN_CLIENT_URLS="https://172.16.46.214:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.16.46.214:2380" ETCD_ADVERTISE_CLIENT_URLS="https://172.16.46.214:2379" ETCD_INITIAL_CLUSTER="etcd214=https://172.16.46.214:2380,etcd213=https://172.16.46.213:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
5.启动文件
vim /usr/lib/systemd/system/etcd.service
[Unit
]
Description
=Etcd Server
After
=network.target
After
=network-online.target
Wants
=network-online.target
[Service
]
Type
=notify
EnvironmentFile
=-/opt/etcd/cfg/etcd
ExecStart
=/opt/etcd/bin/etcd \
--name
=${ETCD_NAME} \
--data-dir
=${ETCD_DATA_DIR} \
--listen-peer-urls
=${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls
=${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls
=${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls
=${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster
=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token
=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-state
=new \
--cert-file
=/opt/etcd/ssl/server.pem \
--key-file
=/opt/etcd/ssl/server-key.pem \
--peer-cert-file
=/opt/etcd/ssl/server.pem \
--peer-key-file
=/opt/etcd/ssl/server-key.pem \
--trusted-ca-file
=/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file
=/opt/etcd/ssl/ca.pem
Restart
=on-failure
LimitNOFILE
=65536
[Install
]
WantedBy
=multi-user.target
6.设置互信
cd /root
ssh-keygen
ssh-copy-id root@172.16.46.213
mkdir /opt/etcd/
{bin,cfg,ssl
} -p
scp -r /opt/etcd/bin/ root@172.16.46.213:/opt/etcd
scp -r /opt/etcd/cfg/ root@172.16.46.213:/opt/etcd
scp -r /opt/etcd/ssl/ root@172.16.46.213:/opt/etcd
scp /usr/lib/systemd/system/etcd.service root@172.16.46.213:/usr/lib/systemd/system
注意:记得修改其他节点配置文件信息
7.启动
systemctl start etcd
systemctl
enable etcd
tail /var/log/messages
8.配置环境变量,让etcdctl命令任何地方都可以调用类似于配置jdk的环境变量一样
vim /etc/profile
PATH
=$PATH:/opt/etcd/bin
source /etc/profile
9.验证 客户端访问查看集群因为我们的etcd是加密的.需要加密key
etcdctl --ca-file
=/opt/etcd/ssl/ca.pem \
--cert-file
=/opt/etcd/ssl/server.pem \
--key-file
=/opt/etcd/ssl/server-key.pem \
--endpoints
="https://172.16.46.213:2379,https://172.16.46.214:2379" cluster-health
五、flannel网路集群
1.写入分配的子网段到etcd,供flanneld使用
etcdctl --ca-file
=/opt/etcd/ssl/ca.pem \
--cert-file
=/opt/etcd/ssl/server.pem \
--key-file
=/opt/etcd/ssl/server-key.pem \
--endpoints
="https://172.16.46.213:2379,https://172.16.46.214:2379" \
set /coreos.com/network/config
'{"Network":"100.10.0.0/16","Backend":{"Type":"vxlan"}}'
etcdctl --ca-file
=/opt/etcd/ssl/ca.pem \
--cert-file
=/opt/etcd/ssl/server.pem \
--key-file
=/opt/etcd/ssl/server-key.pem \
--endpoints
="https://172.16.46.213:2379,https://172.16.46.214:2379" \
get /coreos.com/network/config
2.下载二进制包
wget https://github.com/coreos/flannel/releases/download/v0.9.1/flannel-v0.9.1-linux-amd64.tar.gz
3.解压
tar -zxvf flannel-v0.9.1-linux-amd64.tar.gz
mv flanneld mk-docker-opts.sh /opt/etcd/bin/
scp -r /opt/etcd/bin/flanneld root@172.16.46.213:/opt/etcd/bin
scp -r /opt/etcd/bin/mk-docker-opts.sh root@172.16.46.213:/opt/etcd/bin
4.创建配置文件
vim /opt/etcd/cfg/flanneld
FLANNEL_ETCD
="-etcd-endpoints=https://172.16.46.213:2379,https://172.16.46.214:2379"
FLANNEL_ETCD_CAFILE
="--etcd-cafile=/opt/etcd/ssl/ca.pem"
FLANNEL_ETCD_CERTFILE
="--etcd-certfile=/opt/etcd/ssl/server.pem"
FLANNEL_ETCD_KEYFILE
="--etcd-keyfile=/opt/etcd/ssl/server-key.pem"
5.systemd管理flannel
vim /usr/lib/systemd/system/flanneld.service
[Unit
]
Description
=Flanneld overlay address etcd agent
After
=network.target
Before
=docker.service
[Service
]
Type
=notify
EnvironmentFile
=-/opt/etcd/cfg/flanneld
ExecStart
=/opt/etcd/bin/flanneld --ip-masq
${FLANNEL_ETCD} ${FLANNEL_ETCD_CAFILE} ${FLANNEL_ETCD_CERTFILE} ${FLANNEL_ETCD_KEYFILE}
ExecStartPost
=/opt/etcd/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env
Restart
=on-failure
[Install
]
WantedBy
=multi-user.target
6.启动
systemctl start flanneld
systemctl
enable flanneld
7.配置docker启动指定子网段
vim /run/flannel/subnet.env
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IXGyJ8EV-1603246454246)( https://typora-hb.oss-cn-shanghai.aliyuncs.com/typera/image-20200915192508251.png)]
vim /usr/lib/systemd/system/docker.service
EnvironmentFile
=-/run/flannel/subnet.env
$DOCKER_NETWORK_OPTIONS
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MRduTGMc-1603246454247)( https://typora-hb.oss-cn-shanghai.aliyuncs.com/typera/image-20200915193216757.png)]
8.重启docker
systemctl daemon-reload
systemctl restart docker
9.验证
ifconfig
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-31lYZVMl-1603246454248)( https://typora-hb.oss-cn-shanghai.aliyuncs.com/typera/image-20200915193640996.png)]
etcd配置参数详解
针对ETCD版本 3.2.17
--name 节点名称
default:
"default"
env variable: ETCD_NAME
这个值和--initial-cluster flag
(e.g., default
=http://localhost:2380
)中的key值一一对应,如果在集群环境中,name必须是唯一的,建议用主机名称或者机器ID。
--data-dir 数据存储目录
default:
"${name}.etcd"
env variable: ETCD_DATA_DIR
--wal-dir
default:
""
env variable: ETCD_WAL_DIR
存放预写式日志,最大的作用是记录了整个数据变化的全部历程。未设置,共用--data-dir文件所在目录。
--snapshot-count
default:
"100000"
env variable: ETCD_SNAPSHOT_COUNT
数据快照触发数量,etcd处理指定的次数的事务提交后,生产数据快照
--heartbeat-interval 客户端连接后的心跳间隔(毫秒)
default:
"100"
env variable: ETCD_HEARTBEAT_INTERVAL
--election-timeout 集群选举的超时时间
default:
"1000"
env variable: ETCD_ELECTION_TIMEOUT
--listen-peer-urls
本节点与其他节点进行数据交换
(选举,数据同步
)的监听地址,地址写法是 scheme://IP:port,可以多个并用逗号隔开,如果配置是http://0.0.0.0:2379,将不限制node访问地址
default:
"http://localhost:2380"
env variable: ETCD_LISTEN_PEER_URLS
example:
"http://10.0.0.1:2380"
invalid example:
"http://example.com:2380" (domain name is invalid
for binding
)
--listen-client-urls
本节点访问地址,地址写法是 scheme://IP:port,可以多个并用逗号隔开,如果配置是http://0.0.0.0:2379,将不限制node访问地址
default:
"http://localhost:2379"
env variable: ETCD_LISTEN_CLIENT_URLS
example:
"http://10.0.0.1:2379"
invalid example:
"http://example.com:2379" (domain name is invalid
for binding
)
--max-snapshots
最大快照数量 0表示不限制,在window平台设置无效。
default: 5
env variable: ETCD_MAX_SNAPSHOTS
--max-wals
最大预写日志数量 0表示不限制,在window平台设置无效。
default: 5
env variable: ETCD_MAX_WALS
--cors
Comma-separated white list of origins
for CORS
(cross-origin resource sharing
).
default: none
env variable: ETCD_CORS
集群配置
--initial-advertise-peer-urls
通知其他节点与本节点进行数据交换(选举,同步)的地址,URL可以使用domain地址。
与--listener-peer-urls不同在于listener-peer-urls用于请求客户端的接入控制,initial-advertise-peer-urls是告知其他集群节点访问哪个URL,一般来说,initial-advertise-peer-urlsl将是istener-peer-urls的子集
default:
"http://localhost:2380"
env variable: ETCD_INITIAL_ADVERTISE_PEER_URLS
example:
"http://example.com:2380, http://10.0.0.1:2380"
--initial-cluster
集群所有节点配置,多个用逗号隔开。
default:
"default=http://localhost:2380"
env variable: ETCD_INITIAL_CLUSTER
The key is the value of the --name flag
for each node provided. The default uses default
for the key because this is the default
for the --name flag.
--initial-cluster-state
节点初始化方式,new 表示如果没有集群不存在,创建新集群,existing表示如果集群不存在,节点将处于加入集群失败状态。
default:
"new"
env variable: ETCD_INITIAL_CLUSTER_STATE
--initial-cluster-token
集群唯一标识,相同标识的节点将视为在一个集群内。
default:
"etcd-cluster"
env variable: ETCD_INITIAL_CLUSTER_TOKEN
--advertise-client-urls
用于通知其他ETCD节点,客户端接入本节点的监听地址,一般来说advertise-client-urls是listen-client-urls子集
default:
"http://localhost:2379"
env variable: ETCD_ADVERTISE_CLIENT_URLS
example:
"http://example.com:2379, http://10.0.0.1:2379"
注意,不能写http://localhost:237,这样就是通知其他节点,可以用localhost访问,将导致ectd的客户端用localhost访问本地,导致访问不通。还有一个更可怕情况,ectd布置了代理层,代理层将一直通过locahost访问自己的代理接口,导致无限循环。
--discovery
集群发现服务地址
default: none
env variable: ETCD_DISCOVERY
--discovery-srv
DNS发现服务地址
default: none
env variable: ETCD_DISCOVERY_SRV
--discovery-fallback
Expected behavior
("exit" or
"proxy") when discovery services fails.
"proxy" supports v2 API only.
default:
"proxy"
env variable: ETCD_DISCOVERY_FALLBACK
--discovery-proxy
HTTP proxy to use
for traffic to discovery service.
default: none
env variable: ETCD_DISCOVERY_PROXY
--strict-reconfig-check
Reject reconfiguration requests that would cause quorum loss.
default:
false
env variable: ETCD_STRICT_RECONFIG_CHECK
--auto-compaction-retention
Auto compaction retention
for mvcc key value store
in hour. 0 means disable auto compaction.
default: 0
env variable: ETCD_AUTO_COMPACTION_RETENTION
--enable-v2 是否接受V2的API访问
default:
true
env variable: ETCD_ENABLE_V2
代理
--proxy
Proxy mode setting
("off",
"readonly" or
"on").
default:
"off"
env variable: ETCD_PROXY
--proxy-failure-wait
Time
(in milliseconds
) an endpoint will be held
in a failed state before being reconsidered
for proxied requests.
default: 5000
env variable: ETCD_PROXY_FAILURE_WAIT
--proxy-refresh-interval
代理节点刷新时间间隔(毫秒)
Time
(in milliseconds
) of the endpoints refresh interval.
default: 30000
env variable: ETCD_PROXY_REFRESH_INTERVAL
--proxy-dial-timeout
Time
(in milliseconds
) for a dial to
timeout or 0 to disable the
timeout
default: 1000
env variable: ETCD_PROXY_DIAL_TIMEOUT
--proxy-write-timeout
Time
(in milliseconds
) for a
write to
timeout or 0 to disable the timeout.
default: 5000
env variable: ETCD_PROXY_WRITE_TIMEOUT
--proxy-read-timeout
Time
(in milliseconds
) for a
read to
timeout or 0 to disable the timeout.
Don
't change this value if using watches because use long polling requests.
default: 0
env variable: ETCD_PROXY_READ_TIMEOUT
安全
--cert-file
Path to the client server TLS cert file.
default: none
env variable: ETCD_CERT_FILE
--key-file
Path to the client server TLS key file.
default: none
env variable: ETCD_KEY_FILE
--client-cert-auth
Enable client cert authentication.
default: false
env variable: ETCD_CLIENT_CERT_AUTH
--trusted-ca-file
Path to the client server TLS trusted CA key file.
default: none
env variable: ETCD_TRUSTED_CA_FILE
--auto-tls
Client TLS using generated certificates
default: false
env variable: ETCD_AUTO_TLS
--peer-cert-file
Path to the peer server TLS cert file.
default: none
env variable: ETCD_PEER_CERT_FILE
--peer-key-file
Path to the peer server TLS key file.
default: none
env variable: ETCD_PEER_KEY_FILE
--peer-client-cert-auth
启用对等客户端证书认证。
default: false
env variable: ETCD_PEER_CLIENT_CERT_AUTH
--peer-trusted-ca-file
Path to the peer server TLS trusted CA file.
default: none
env variable: ETCD_PEER_TRUSTED_CA_FILE
--peer-auto-tls
Peer TLS using generated certificates
default: false
env variable: ETCD_PEER_AUTO_TLS
日志
--debug
Drop the default log level to DEBUG for all subpackages.
default: false (INFO for all packages)
env variable: ETCD_DEBUG
--log-package-levels
Set individual etcd subpackages to specific log levels. An example being etcdserver=WARNING,security=DEBUG
default: none (INFO for all packages)
env variable: ETCD_LOG_PACKAGE_LEVELS
不安全配置
--force-new-cluster
Force to create a new one-member cluster. It commits configuration changes forcing to remove all existing members in the cluster and add itself. It needs to be set to restore a backup.
default: false
env variable: ETCD_FORCE_NEW_CLUSTER
其他配置
--version
Print the version and exit.
default: false
--config-file
Load server configuration from a file.
default: none
Profiling flags
--enable-pprof
Enable runtime profiling data via HTTP server. Address is at client URL + "/debug/pprof/"
default: false
--metrics
Set level of detail for exported metrics, specify 'extensive
' to include histogram metrics.
default: basic
认证
--auth-token
Specify a token type and token specific options, especially for JWT. Its format is "type,var1=val1,var2=val2,…". Possible type is 'simple
' or 'jwt
'. Possible variables are 'sign-method
' for specifying a sign method of jwt (its possible values are 'ES256
', 'ES384
', 'ES512
', 'HS256
', 'HS384
', 'HS512
', 'RS256
', 'RS384
', 'RS512
', 'PS256
', 'PS384
', or 'PS512
'), 'pub-key
' for specifying a path to a public key for verifying jwt, and 'priv-key'
for specifying a path to a private key
for signing jwt.