目录
一、ETCD是什么?
etcd 是一个分布式可靠的键值存储系统,用于分布式系统中最关键的数据,主要特点包括:
-
简单:具有明确的、面向用户的 API(gRPC)
-
安全:自动 TLS 支持,并可选的客户端证书认证
-
快速:经过基准测试,支持每秒 10,000 次写入
-
可靠:使用 Raft 算法进行适当分布
etcd 使用 Go 语言编写,并利用 Raft 共识算法来管理高度可用的复制日志。
许多公司在生产环境中使用 etcd,开发团队在关键部署场景中支持它,etcd 经常与 Kubernetes、locksmith、vulcand、Doorman 等应用程序配合使用。通过严格的健壮性测试,进一步确保了系统的可靠性。
二、ETCD的集群环境如何部署?
1、主机资源准备
主机ip | etcd服务名 | CPU | 内存 |
---|---|---|---|
192.168.188.101 | s1 | 4核 | 4G |
192.168.188.102 | s2 | 4核 | 4G |
192.168.188.103 | s3 | 4核 | 4G |
设置免密登录:
在三台机器都执行执行:
ssh-keygen -t rsa -b 4096
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
2、借助play.etcd.io官网来进行etcd集群部署
地址:http://play.etcd.io/install#top
3、生成自签名的证书
a)、在页面按自己主机信息输出相关的信息
打开的页面如下:
修改ip地址、端口信息以及etcd的数据目录信息。
b)、安装cfssl工具(三台主机上都要操作)
cfssl的安装脚本如下:
#!/bin/bash
rm -f /tmp/cfssl* && rm -rf /tmp/certs && mkdir -p /tmp/certs
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /tmp/cfssl
chmod +x /tmp/cfssl
sudo mv /tmp/cfssl /usr/local/bin/cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /tmp/cfssljson
chmod +x /tmp/cfssljson
sudo mv /tmp/cfssljson /usr/local/bin/cfssljson
/usr/local/bin/cfssl version
/usr/local/bin/cfssljson -h
mkdir -p /data/etcd/certs
c)、生成自签名的CA根证书(三台主机都要进行操作)
生成根证书的脚本(etcd-root-ca_gencert.sh)如下:
#!/bin/bash
mkdir -p /data/etcd/certs
cat > /data/etcd/certs/etcd-root-ca-csr.json <<EOF
{
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"O": "etcd",
"OU": "etcd Security",
"L": "shengzhen",
"ST": "guangdong",
"C": "CN"
}
],
"CN": "etcd-root-ca"
}
EOF
cfssl gencert --initca=true /data/etcd/certs/etcd-root-ca-csr.json | cfssljson --bare /data/etcd/certs/etcd-root-ca
# verify
openssl x509 -in /data/etcd/certs/etcd-root-ca.pem -text -noout
# cert-generation configuration
cat > /data/etcd/certs/etcd-gencert.json