企业网站管理系统|cms系统|手机网站建设|企业建站|cms建站系统,网络广告策划案例,国外室内设计网站大全,网站做SEO优化一、etcd服务架构
Etcd 是一个分布式键值存储系统#xff0c;Kubernetes 使用 Etcd 进行数据存储#xff0c;所以先 准备一个 Etcd 数据库#xff0c;为解决 Etcd 单点故障#xff0c;应采用集群方式部署#xff0c;这里使用 3 台组建集群#xff0c;可容忍 1 台机器故障…一、etcd服务架构
Etcd 是一个分布式键值存储系统Kubernetes 使用 Etcd 进行数据存储所以先 准备一个 Etcd 数据库为解决 Etcd 单点故障应采用集群方式部署这里使用 3 台组建集群可容忍 1 台机器故障当然你也可以使用 5 台组建集群可容忍 2 台机器故障。
节点名称IPetcd-1192.168.1.20etcd-2192.168.1.21etcd-3192.168.1.22 注为了节省机器这里与 K8s 节点机器复用。也可以独立于 k8s 集群之外部署 只要 apiserver 能连接到就行。 通信架构均采用https通信 所以这里需要生成证书。
二、 准备 cfssl 证书生成工具
cfssl 是一个开源的证书管理工具使用 json 文件生成证书相比 openssl 更方便 使用。 找任意一台服务器操作这里用 Master 节点。
# 下载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
# 移动到bin目录方便直接在命令行使用该工具命令
mv cfssl_linux-amd64 /usr/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo2.1 自签证书颁发机构CA-- 根证书
创建工作目录
mkdir -p ~/TLS/{etcd,k8s}
cd ~/TLS/etcd自签 CA(配置文件)
# 重定向写入ca配置文件
cat ca-config.json EOF
{
signing: {
default: {
expiry: 87600h
},
profiles: {
www: {
expiry: 87600h,
usages: [
signing,
key encipherment,
server auth,
client auth
]
}
}
}
}
EOF# 重定向写入ca-csr文件
cat ca-csr.json EOF
{
CN: etcd CA,
key: {
algo: rsa,
size: 2048
},
names: [
{
C: CN,
L: Beijing,
ST: Beijing
}
]
}
EOF生成证书
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -会生成 ca.pem 和 ca-key.pem 文件。 2.2 使用自签 CA (根证书)签发 Etcd的HTTPS 证书
创建证书申请文件
# host部分是添加可信任ip按实际情况添加
cat server-csr.json EOF
{
CN: etcd,
hosts: [
192.168.1.20,
192.168.1.21,
192.168.1.22
],
key: {
algo: rsa,
size: 2048
},
names: [
{
C: CN,
L: BeiJing,
ST: BeiJing
}
]
}
EOF注上述文件 hosts 字段中 IP 为所有 etcd 节点的集群内部通信 IP一个都不能少 为了方便后期扩容可以多写几个预留的 IP。 生成证书
cfssl gencert -caca.pem -ca-keyca-key.pem -configca-config.json -profilewww server-csr.json | cfssljson -bare server会生成 server.pem 和 server-key.pem 文件
三、 从 Github 下载二进制文件
下载地址https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd- v3.4.9-linux-amd64.tar.gz 执行下载版本可以按需选择
wget https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz四、 部署 Etcd 集群 以下在节点 1 上操作为简化操作待会将节点 1 生成的所有文件拷贝到节点 2 和 节点 3 4.1 创建工作目录并解压二进制包
mkdir /opt/etcd/{bin,cfg,ssl} -p
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/4.2 创建 etcd 配置文件
# ip根据自己机器情况修改
cat /opt/etcd/cfg/etcd.conf EOF
#[Member]
ETCD_NAMEetcd-1
ETCD_DATA_DIR/var/lib/etcd/default.etcd
ETCD_LISTEN_PEER_URLShttps://192.168.1.20:2380
ETCD_LISTEN_CLIENT_URLShttps://192.168.1.20:2379
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLShttps://192.168.1.20:2380
ETCD_ADVERTISE_CLIENT_URLShttps://192.168.1.20:2379
ETCD_INITIAL_CLUSTERetcd-1https://192.168.1.20:2380,etcd-2https://
192.168.1.21:2380,etcd-3https://192.168.1.22:2380
ETCD_INITIAL_CLUSTER_TOKENetcd-cluster
ETCD_INITIAL_CLUSTER_STATEnew
EOFETCD_NAME节点名称集群中唯一 ETCD_DATA_DIR数据目录 ETCD_LISTEN_PEER_URLS集群通信监听地址 ETCD_LISTEN_CLIENT_URLS客户端访问监听地址 ETCD_INITIAL_ADVERTISE_PEERURLS集群通告地址 ETCD_ADVERTISE_CLIENT_URLS客户端通告地址 ETCD_INITIAL_CLUSTER集群节点地址 ETCD_INITIALCLUSTER_TOKEN集群 Token ETCD_INITIALCLUSTER_STATE加入集群的当前状态new 是新集群existing 表示加入已有集群 4.3. systemd 管理 etcd
# 写入etcd.service文件
cat /usr/lib/systemd/system/etcd.service EOF
[Unit]
DescriptionEtcd Server
Afternetwork.target
Afternetwork-online.target
Wantsnetwork-online.target
[Service]
Typenotify
EnvironmentFile/opt/etcd/cfg/etcd.conf
ExecStart/opt/etcd/bin/etcd \
--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 \
--loggerzap
Restarton-failure
LimitNOFILE65536
[Install]
WantedBymulti-user.target
EOF4.4. 拷贝刚才生成的证书
把刚才生成的证书拷贝到配置文件中的路径
cp ~/TLS/etcd/ca*pem ~/TLS/etcd/server*pem /opt/etcd/ssl/4.5. 启动并设置开机启动
systemctl daemon-reload
systemctl start etcd
systemctl enable etcd4.6. 将上面节点 1 所有生成的文件拷贝到节点 2 和节点 3
scp -r /opt/etcd/ root192.168.1.21:/opt/
scp /usr/lib/systemd/system/etcd.service root192.168.1.21:/usr/lib/systemd/system/
scp -r /opt/etcd/ root192.168.1.22:/opt/
scp /usr/lib/systemd/system/etcd.service root192.168.1.22:/usr/lib/systemd/system/然后在节点 2 和节点 3 分别修改 etcd.conf 配置文件中的节点名称和当前服务器IP
vi /opt/etcd/cfg/etcd.conf
#[Member]
ETCD_NAMEetcd-1 # 修改此处节点 2 改为 etcd-2节点 3 改为 etcd-3
ETCD_DATA_DIR/var/lib/etcd/default.etcd
ETCD_LISTEN_PEER_URLShttps://192.168.31.71:2380 # 修改此处为当前服务器 IP
ETCD_LISTEN_CLIENT_URLShttps://192.168.31.71:2379 # 修改此处为当前服务器 IP
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLShttps://192.168.31.71:2380 # 修改此处为当前服务器
IP
ETCD_ADVERTISE_CLIENT_URLShttps://192.168.31.71:2379 # 修改此处为当前服务器 IP
ETCD_INITIAL_CLUSTERetcd-1https://192.168.31.71:2380,etcd-2https://192.168.31.72:2380,etcd-3https://192.168.31.73:2380
ETCD_INITIAL_CLUSTER_TOKENetcd-cluster
ETCD_INITIAL_CLUSTER_STATEnew最后启动 etcd 并设置开机启动同上。 4.7 查看集群状态
ETCDCTL_API3 /opt/etcd/bin/etcdctl --cacert/opt/etcd/ssl/ca.pem --cert/opt/etcd/ssl/server.pem --key/opt/etcd/ssl/server-key.pem --endpointshttps://192.168.1.20:2379,https://192.168.1.21:2379,https://192.168.1.22:2379 endpoint health --write-outtable输出
--------------------------------------------------------
| ENDPOINT | HEALTH | TOOK | ERROR |
--------------------------------------------------------
| https://192.168.1.20:2379 | true | 10.301506ms | |
| https://192.168.1.21:2379 | true | 12.87467ms | |
| https://192.168.1.22:2379 | true | 13.225954ms | |
--------------------------------------------------------. 如果输出上面信息就说明集群部署成功。 . 如果有问题第一步先看日志/var/log/message 或 journalctl -u etcd