文章目录
一、ETCD详解
什么是 etcd
etc
etcd 目前在 github.com/coreos/etcd 进行维护,即将发布 2.0.0 版本。
受到 Apache Zo
简单:支持 REST 风格的 HTTP+JSON API
安全:支持 HTTPS
快速:
可靠:支持分布式结
注:Apache ZooKeeper 是一套知名的分布式系统中进行同
注:doozer 则是一个一致
注:Raft 是一套通过选举主节
一般情况下,用户
安装
etcd 基于Go语言实现,因此,用户可以从项目
二 、二进制文件方式如下地址
wget -O https://github.com/etcd-io/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz
三、解压 ETCD压缩包
[root@k8s-master etcd-v3.3.13-linux-amd64]# tar xf etcd-v3.3.13-linux-amd64.tar.gz
四、拷贝etcd与etcdctl命令到/usr /local/bin下
[root@k8s-master etcd-v3.3.13-linux-amd64]# ls
Documentation etcd etcdctl README-etcdctl.md README.md READMEv2-etcdctl.md
[root@k8s-master etcd-v3.3.13-linux-amd64]# cp -a etcd etcdctl /usr/local/bin/
五、搭建ETCD
1、创建工作目录
[root@k8s-master ~]# mkdir /opt/etcd/{bin,cfg,ssl,logs} -p
[root@k8s-master ~]# mkdir /opt/etcd/{bin,cfg,ssl,logs} -p
[root@k8s-master etcd]# mv /opt/etcd-v3.3.13-linux-amd64/etcd ../etcd/bin/
[root@k8s-master etcd]# mv /opt/etcd-v3.3.13-linux-amd64/etcdctl ../etcd/bin/
说明:
- bin目录用于存放etcd命令。
- cfg目录用于存放etcd配置文件。
- ssl
目录用于存放数字证书文件。
2、配置e tcd. conf集群配置 文件
#[Member]
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.3.63:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.3.63:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.3.63:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.3.63:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.3.63:2380,etcd02=https://192.168.3.64:2380,etcd03=https://192.168.3.65:2380,etcd04=https://192.168.3.66:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
详解:
ETCD_NAME ETCD集群唯一的名称。
ETCD_DATA_DIR ETCD的数据存储目录。
ETCD_LIST
EN_PEER _URLS ETCD监听的集群IP和端 口,用于集群内部通信的地址。 ETCD_LISTEN_CLIENT_URLS ETCD监听的集
群IP和端口,用于集群客户端外部通信的地址。 ETCD_INITIAL_ADVERTISE_P
EER_U RLS 集群内部通信 的内部地址。 ETCD_ADVERTISE_CL
IENT_ URLS集群客户端通信的外部地址。 ETCD_I
NIT IAL_CLUSTER 集群 节点的 所有相互通信的地址与 端口配置 信息。 ETCD_INITIAL
_ CLUSTER_TOKEN 用于ETCD集群每台信息通信的认证与端口 ETCD_INITIAL_CLUSTER_STATE 集群的状态,新集
群采用new,如果已有的集群加入 改为exsi ting。
3、etcd.serv ice启动配置文件
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/opt/etcd/cfg/etcd.conf
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_TOKEN} \
--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
详解:
- –name=${ETCD_NAME}
- –data-dir=${ETCD_DATA
_DIR} - &
#8211;listen-peer-urls=${ETCD_LISTEN_PEER_URLS} 211;listen-client-urls= ${ETCD_LIST EN_CLIENT _URLS},http://127.0.0.1:2379 - –advertise-client-urls=${ETCD_ADVERTI
SE_CLIE NT_URLS} - –initial-adve
rtise-pee r-urls=${ETCD_INI TIAL_ADVERTISE_PEER_URLS} - –initial-cluster=${ETCD_INITIAL_CLUS
TER} - –initial-cluster-to
ken=${ETCD_I NITIAL_CLUST ER_TOKEN} - –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/serv er-key.pem --
trusted-ca-file= /opt/etcd/ssl/ca.pem --p eer -trusted-ca-fil e=/opt /etcd/ssl /ca.p em
说明:以上内容采用变量引用etcd.conf配置文件的选项,红色引用CA自签证书通信。
4、把生成的 证书从/server/script/
迁移至/opt /etc d/ssl目录下
[root@k8s-master script]# mv ca.pem ca-key.pem server.pem server-key.pem ../etcd/ssl/
5、查看集群状态
[root@k8s-master ~]# ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.3.62:2379,https://192.168.3.63:2379,https://192.168.3.64:2379,https://192.168.3.65:2379,https://192.168.3.65:2379" endpoint health