版本介绍
ETCD版本:etcd-v3.5.0-linux-amd64
地址:etcd
下载证书生成文件
#!/bin/bashwget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64mv cfssl_linux-amd64 /usr/local/bin/cfsslmv cfssljson_linux-amd64 /usr/local/bin/cfssljsonmv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
下载ETCD包
mkdir -p /opt/etcd && cd /opt/etcd/
wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz
tar xf /opt/etcd/etcd-v3.5.0-linux-amd64.tar.gz -C /usr/local/
ln -s /usr/local/etcd-v3.5.0-linux-amd64 /usr/local/etcd
制作etcd集群证书
创建证书目录
#创建证书目录 mkdir -p /usr/local/ssl/etcd/ && cd /usr/local/ssl/etcd/创建生成证书文件 ```bash cat <
ca-config.json { “signing”: { “default”: { "expiry": "876000h"}, “profiles”: {
"www": { "expiry": "876000h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] }} } } EOF
cat <
cat <
- 生成证书
```bash
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
# 执行完上述两条命令即可看到如下文件
# ls|grep -v json
ca.csr
ca-key.pem
ca.pem
server.csr
server-key.pem
server.pem
编写etcd配置文件 以及设置ssl证书
mkdir -p /usr/local/etcd/{cfg,ssl}
#编写etcd 配置文件yaml
cat <<EOF > /usr/local/etcd/cfg/etcd.yml
# member info
name: etcd-1
data-dir: /var/lib/etcd/ # 数据目录
listen-peer-urls: https://192.168.13.60:2380 # 集群间通信的地址
listen-client-urls: https://192.168.13.60:2379 # 客户端访问的地址
# cluster info
initial-advertise-peer-urls: https://192.168.13.60:2380 # 集群通信地址
advertise-client-urls: https://192.168.13.60:2379 # 客户端通信地址
initial-cluster: etcd-1=https://192.168.13.60:2380 # 集群节点地址
initial-cluster-state: new # 加入集群的当前状态,new是新集群,existing表示加入已有集群
initial-cluster-token: etcd-cluster # 集群的token
# 客户端证书
client-transport-security:
cert-file: /usr/local/etcd/ssl/server.pem
key-file: /usr/local/etcd/ssl/server-key.pem
trusted-ca-file: /usr/local/etcd/ssl/ca.pem
client-cert-auth: true
# 集群证书
peer-transport-security:
cert-file: /usr/local/etcd/ssl/server.pem
key-file: /usr/local/etcd/ssl/server-key.pem
trusted-ca-file: /usr/local/etcd/ssl/ca.pem
client-cert-auth: true
EOF
#移动之前创建的证书到ssl目录
cp /usr/local/ssl/etcd/*.pem /usr/local/etcd/ssl
启动etcd (当前为单节点 后续需要变为集群)
/usr/local/etcd/etcd --config-file /usr/local/etcd/cfg/etcd.yml
#节点检查
cd /usr/local/etcd/ssl
ETCDCTL_API=3 ../etcdctl --cacert=ca.pem --cert=server.pem --key=server-key.pem --endpoints="https://192.168.13.60:2379" endpoint health
- 使用supervisor管理etcd
```bash
cat <
/etc/supervisor/conf.d/etcd.conf [program:etcd] user = root command=/usr/local/etcd/etcd —config-file /usr/local/etcd/cfg/etcd.yml stderr_logfile = /var/log/supervisor/etcd_err.log stdout_logfile = /var/log/supervisor/etcd_stdout.log directory = /usr/local/etcd autostart=true autorestart=true startsecs=3 EOF
更新supervisor进程
supervisorctl update ```
