etcd集群安装
etcd 是一个分布式一致性k-v存储系统,可用于服务注册发现与共享配置,具有以下优点:
1.简单:相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的raft算法实现一致性,并通过gRPC提供接口调用
2.安全:支持TLS通信,并可以针对不同的用户进行对key的读写控制
3.高性能:10,000/秒的写性能
开放端口:
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
firewall-cmd --zone=public --add-port=4001/tcp --permanent
firewall-cmd --reload
设置hosts
172.16.150.25 etcd1
172.16.150.26 etcd2
172.16.150.27 etcd3
创建用户
mkdir -p /opt/platform/etcd
useradd etcd -d /opt/platform/etcd -c "Etcd user" -r -s /sbin/nologin
安装cfssl
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
创建CA证书配置,生成CA证书和私钥, 只需要在一台机器上操作即可
先用 cfssl 命令生成包含默认配置的 config.json和 csr.json文件
mkdir /opt/ssl
cd /opt/ssl
cfssl print-defaults config > config.json
cfssl print-defaults csr > csr.json
然后分别修改这两个文件为如下内容
vim /opt/ssl/config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
],
"expiry": "87600h"
}
}
}
}
config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
server auth:表示client可以用该 CA 对server提供的证书进行验证;
client auth:表示server可以用该CA对client提供的证书进行验证;
vim /opt/ssl/csr.json
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "Wuhan",
"L": "Hubei",
"O": "k8s",
"OU": "System"
}
]
}
CN:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (UserName);浏览器使用该字段验证网站是否合法;
O:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组(Group)
生成CA 证书和私钥
cd /opt/ssl
cfssl gencert -initca csr.json | cfssljson -bare ca
CA有关证书列表如下
[root@k8s-console ssl]# tree
.
├── ca.csr
├── ca-key.pem
├── ca.pem
├── config.json
└── csr.json
创建etcd证书配置,生成 etcd 证书和私钥
在/opt/ssl 下添加文件 etcd-csr.json,内容如下
{
"CN": "etcd",
"hosts": [
"127.0.0.1",
"172.16.150.25",
"172.16.150.26",
"172.16.150.27"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "Shanghai",
"L": "Shanghai",
"O": "etcd",
"OU": "Etcd Security"
}
]
}
生成etcd证书和密钥
cd /opt/ssl
cfssl gencert -ca=/opt/ssl/ca.pem \
-ca-key=/opt/ssl/ca-key.pem \
-config=/opt/ssl/config.json \
-profile=kubernetes etcd-csr.json | cfssljson -bare etcd
给证书读权限
chmod 644 /opt/ssl/*
etcd 有关证书证书列表如下
etcd.csr etcd-csr.json etcd-key.pem etcd.pem
至此CA证书就弄完了, 将这台机器侠/opt/ssl下所有东西,拷贝到其他两台机器下面的/opt/ssl下即可
安装etcd
在三台上都安装etcd
yum install etcd -y
添加etcd配置
wget https://github.com/coreos/etcd/releases/download/v3.3.7/etcd-v3.3.7-linux-amd64.tar.gz
tar -xvf etcd-v3.3.7-linux-amd64.tar.gz
cd etcd-v3.3.7-linux-amd64
cp -a etcd* /opt/platform/etcd/
添加etcd为系统服务
vim /usr/lib/systemd/system/etcd.service
etcd1
[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target [Service]
Type=notify
User=etcd
WorkingDirectory=/opt/platform/etcd
EnvironmentFile=-/opt/platform/etcd/etcd.conf
ExecStart=/opt/platform/etcd/etcd \
--name etcd1 \
--cert-file=/opt/ssl/etcd.pem \
--key-file=/opt/ssl/etcd-key.pem \
--trusted-ca-file=/opt/ssl/ca.pem \
--peer-cert-file=/opt/ssl/etcd.pem \
--peer-key-file=/opt/ssl/etcd-key.pem \
--peer-trusted-ca-file=/opt/ssl/ca.pem \
--initial-advertise-peer-urls https://172.16.150.25:2380 \
--listen-peer-urls https://172.16.150.25:2380 \
--listen-client-urls https://172.16.150.25:2379,https://127.0.0.1:2379 \
--advertise-client-urls https://172.16.150.25:2379 \
--initial-cluster-token consul_etcd \
--initial-cluster etcd1=https://172.16.150.25:2380,etcd2=https://172.16.150.26:2380,etcd3=https://172.16.150.27:2380 \
--initial-cluster-state new \
--data-dir=/opt/platform/etcd/data
Restart=on-failure
RestartSec=5
etcd2
[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target [Service]
Type=notify
User=etcd
WorkingDirectory=/opt/platform/etcd
EnvironmentFile=-/opt/platform/etcd/etcd.conf
ExecStart=/opt/platform/etcd/etcd \
--name etcd2 \
--cert-file=/opt/ssl/etcd.pem \
--key-file=/opt/ssl/etcd-key.pem \
--trusted-ca-file=/opt/ssl/ca.pem \
--peer-cert-file=/opt/ssl/etcd.pem \
--peer-key-file=/opt/ssl/etcd-key.pem \
--peer-trusted-ca-file=/opt/ssl/ca.pem \
--initial-advertise-peer-urls https://172.16.150.26:2380 \
--listen-peer-urls https://172.16.150.26:2380 \
--listen-client-urls https://172.16.150.26:2379,https://127.0.0.1:2379 \
--advertise-client-urls https://172.16.150.26:2379 \
--initial-cluster-token consul_etcd \
--initial-cluster etcd1=https://172.16.150.25:2380,etcd2=https://172.16.150.26:2380,etcd3=https://172.16.150.27:2380 \
--initial-cluster-state new \
--data-dir=/opt/platform/etcd/data
Restart=on-failure
RestartSec=5
etcd3
[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target [Service]
Type=notify
User=etcd
WorkingDirectory=/opt/platform/etcd
EnvironmentFile=-/opt/platform/etcd/etcd.conf
ExecStart=/opt/platform/etcd/etcd \
--name etcd3 \
--cert-file=/opt/ssl/etcd.pem \
--key-file=/opt/ssl/etcd-key.pem \
--trusted-ca-file=/opt/ssl/ca.pem \
--peer-cert-file=/opt/ssl/etcd.pem \
--peer-key-file=/opt/ssl/etcd-key.pem \
--peer-trusted-ca-file=/opt/ssl/ca.pem \
--initial-advertise-peer-urls https://172.16.150.27:2380 \
--listen-peer-urls https://172.16.150.27:2380 \
--listen-client-urls https://172.16.150.27:2379,https://127.0.0.1:2379 \
--advertise-client-urls https://172.16.150.27:2379 \
--initial-cluster-token consul_etcd \
--initial-cluster etcd1=https://172.16.150.25:2380,etcd2=https://172.16.150.26:2380,etcd3=https://172.16.150.27:2380 \
--initial-cluster-state new \
--data-dir=/opt/platform/etcd/data
Restart=on-failure
RestartSec=5
启动etcd:
mkdir -p /opt/platform/etcd/data && chown etcd:etcd -R /opt/platform/etcd
systemctl enable etcd.service && systemclt daemon-reload && systemctl start etcd.service
添加alias:
vim /etc/profile.d/alias_bash.sh
alias etcdctl='etcdctl --endpoints=https://172.16.150.25:2379,https://172.16.150.26:2379,https://172.16.150.27:2379 --cert-file=/opt/ssl/etcd.pem --ca-file=/opt/ssl/ca.pem --key-file=/opt/ssl/etcd-key.pem'
source /etc/profile.d/alias_bash.sh
验证etcd集群状态
etcdctl cluster-health
查看etcd 集群成员
etcdctl member list
测试验证:
etcdctl set test/testkey0 0
etcdctl get test/testkey0
etcd集群安装的更多相关文章
- centos下etcd集群安装
先仔细了解学习etcd 官方: https://github.com/etcd-io/etcd https://www.cnblogs.com/softidea/p/6517959.html http ...
- ETCD集群安装实验
目录 [1.下载二进制程序] [2.安装etcd集群] [3.查询集群状态] [4.存入读取数据] [5.注意事项] [6.参考链接] 简介: Etcd的官网文档及其在GitHub上的文档,已 ...
- etcd集群安装部署
1. 集群架构 由于我们只有两个机房,所以选择的是以上图中所示的数据同步方案, 通过做镜像的方式保证两个集群的数据实时同步. 整体架构如上图所示, 整个全局元数据中心包括两套集群,廊坊集群和马驹桥集群 ...
- kubernetes 集群安装etcd集群,带证书
install etcd 准备证书 https://www.kubernetes.org.cn/3096.html 在master1需要安装CFSSL工具,这将会用来建立 TLS certificat ...
- 使用docker方式安装etcd集群,带TLS证书
网上文档也多,安装的时候,还是踩了几个坑. 现在作一个安装记录吧. 1,先作自签名的证书ca-csr.json(为了和k8s共用根证书,可能将信息调为k8s). { "CN": & ...
- 使用k8s operator安装和维护etcd集群
关于Kubernetes Operator这个新生事物,可以参考下文来了解这一技术的来龙去脉: https://yq.aliyun.com/articles/685522?utm_content=g_ ...
- Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群
这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kuber ...
- yum安装etcd集群
前一篇文章介绍了如何yum安装简单的kubernetes集群,其中etcd是单点部署.本篇我们来搭建etcd集群,方便日后搭建kubernetes HA集群架构. 1,环境配置说明 etcd1 ...
- etcd简介及集群安装部署使用
目录 1. 简介 2. Linux下载安装 3. 单机模式启动 4. 指定各集群成员的方式配置集群 5. 使用discovery service的方式配置集群 6. 集群模式下客户端命令行 7. et ...
随机推荐
- linux shell 值coredump suid_dumpable和 gdb解析coredump文件
可以设置产生coredump文件,设置dump文件命名非格式,生成dump文件的路径: linux # set suid_dumpable on if [ -e /proc/sys/kernel/su ...
- springMVC中的ModelAndView说明
ModelAndView 类别就如其名称所示,是代表了Spring Web MVC程式中呈现画面时所使用Model资料物件与View资料物件,由于Java程式中一次只能返回一个物件,所以ModelAn ...
- flask入门第一篇
一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不 ...
- onReachBottom 注意事项
onReachBottom使用注意 可在pages.json里定义具体页面底部的触发距离onReachBottomDistance,比如设为50,那么滚动页面到距离底部50px时,就会触发onReac ...
- 邻居子系统 之 邻居项查找neigh_lookup、___neigh_lookup_noref
概述 邻居项查找是通过neigh_lookup相关函数来进行的: ___neigh_lookup_noref,该函数根据输出设备和主键值(IPv4为下一跳ip地址)在邻居项hash表中查找,找到则返回 ...
- 邻居子系统输出 之 neigh_output、neigh_hh_output
概述 ip层在构造好ip头,检查完分片之后,会调用邻居子系统的输出函数neigh_output进行输出,输出分为有二层头缓存和没有两种情况,有缓存时调用neigh_hh_output进行快速输出,没有 ...
- Walkthrough: My first WPF desktop application
Walkthrough: My first WPF desktop application This article shows you how to develop a Windows Presen ...
- GitHub:Oracle
ylbtech-GitHub:Oracle 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. https://github.com/oracle 2. 6 ...
- JDBC插入数据,获取自增长值
package com.loaderman.demo.c_auto; public class Dept { private int id; private String deptName; publ ...
- Xcode真机报错clang: error: linker command failed with exit code 1 (use -v to see invocation)
出现这种错误,如下图所示,搜索bitcode,置为NO即可.