etcd工作原理和部署指南

author author     2023-03-18     411

关键词:

参考技术A

​ etcd是由CoreOS团队发的一个分布式一致性的KV存储系统,可用于服务注册发现和共享配置,随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd为解决这类问题带来了福音,本文将从etcd的应用场景开始,深入解读etcd的实现方式,以供开发者们更为充分地享用etcd所带来的便利。

​ etcd推荐使用奇数作为集群节点个数。因为奇数个节点和其配对的偶数个节点相比,容错能力相同,却可以少一个节点。综合考虑性能和容错能力,etcd官方文档推荐的etcd集群大小是3,5,7。由于etcd使用是Raft算法,每次写入数据需要有2N+1个节点同意可以写入数据,所以部分节点由于网络或者其他不可靠因素延迟收到数据更新,但是最终数据会保持一致,高度可靠。随着节点数目的增加,每次的写入延迟会相应的线性递增,除了节点数量会影响写入数据的延迟,如果节点跟接节点之间的网络延迟,也会导致数据的延迟写入。
结论:
​ 1.节点数并非越多越好,过多的节点将会导致数据延迟写入。
​ 2.节点跟节点之间的跨机房,专线之间网络延迟,也将会导致数据延迟写入。
​ 3.受网络IO和磁盘IO的延迟
​ 4.为了提高吞吐量,etcd通常将多个请求一次批量处理并提交Raft,
​ 5.增加节点,读性能会提升,写性能会下降,减少节点,写性能会提升。

参数说明:

这种方式就是 利用一个已有的 etcd 集群来提供 discovery 服务,从而搭建一个新的 etcd 集群。

假设已有的 etcd 集群的一个访问地址是: myetcd.local ,那么我们首先需要在已有 etcd 中创建一个特殊的 key,方法如下:

其中 value=3 表示本集群的大小,即: 有多少集群节点。而 6c007a14875d53d9bf0ef5a6fc0257c817f0fb83 就是用来做 discovery 的 token。

接下来你在 3 个节点上分别启动 etcd 程序,并加上刚刚的 token。
加 token 的方式同样也有 命令行参数 环境变量 两种。

命令行参数:

环境变量

命令行参数 启动方式为例:

可以使用etcd附带的 基准 CLI工具完成基准测试etcd性能。

对于一些基准性能数字,我们考虑具有以下硬件配置的三个成员的etcd集群:

有了这个配置,etcd可以大致写出:

示例命令是:

可线性读取请求通过集群成员的法定人数达成一致以获取最新数据。可序列化的读取请求比线性读取要便宜,因为它们由任何单个etcd成员提供,而不是成员法定人数,以换取可能的陈旧数据。etcd可以阅读:

示例命令是:

我们鼓励在新环境中首次安装etcd集群时运行基准测试,以确保集群达到足够的性能; 群集延迟和吞吐量可能会对较小的环境差异敏感。

以上测试部分翻译自官方文档( https://coreos.com/etcd/docs/latest/op-guide/performance.html )

企业级k8s集群部署

...包部署Kubernetes集群,虽手动部署麻烦,但可以学习很多工作原理利于后期维护。环境可以使用VMware虚拟机,宿主机必须8G内存以上•服务器可以访问外网,有从网上拉取镜像的需求单Master服务器规划:(注:部署时候根据具... 查看详情

2etcd单机部署和集群部署(代码片段)

...念,但是理解起来还是比较抽象的。这一章我们就一起来部署下etcd。这样可以让我们对etcd有更加确切的认识。1、etcd单实例部署对于平常的学习,其实搭建一个单机节点是够了的。接下来就讲讲怎么搭建单机节点。本次部署是... 查看详情

kubernetes二进制部署(单master节点)(理论部分,详细部署步骤在下一篇哦~)(代码片段)

...3、etcd-cert.sh和etcd.sh脚本4、部署流程5、使用证书访问的工作流程:四、部署docker引擎五、flannel网络配置1、K8S中Pod网络通信:2、Flannel3、Flannel工作原理:4、搭建flannel5、flannel的操作流程一、部署master组件二、部署node组件三、搭建流... 查看详情

kubernetes节点服务搭建————二进制部署|单master节点配置(一)(etcd和flannel)(代码片段)

...配置部署Docker引擎flannel网络配置常见的通信方式flannel的工作流程flannel的搭建部署总结常见的K8s按照部署方式MinikubeMinikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些 查看详情

kubernetes节点服务搭建————二进制部署|单master节点配置(一)(etcd和flannel)(代码片段)

...配置部署Docker引擎flannel网络配置常见的通信方式flannel的工作流程flannel的搭建部署总结常见的K8s按照部署方式MinikubeMinikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些 查看详情

浅入深出etcd之集群部署与golang客户端使用(代码片段)

前言之前说了etcd的简介,命令行使用,一些基本原理。这次来说说现实一点的集群部署和golang版本的客户端使用。因为在实际使用过程中,etcd的节点肯定是需要2N+1个进行部署的,所以有必要说明一下集群的部署。集群部署网上... 查看详情

kubernetes二进制部署——证书的制作和etcd的部署(代码片段)

Kubernetes二进制部署——证书的制作和ETCD的部署一、实验环境自签SSL证书二、ETCD集群部署1、环境部署2、master节点3、node1节点4、node2节点5、master节点一、实验环境主机名IP服务master192.168.172.10/24kube-apiserverkube-controller-managerkube-sched... 查看详情

kubernetes集群之二进制安装部署(单master节点)(代码片段)

...2通信方式之:OverlayNetwork与VXLAN5.3Flannel介绍5.4Flannel的工作流程5.5ETCD之Flannel提供说明5.6Flannel配置配置步骤5.6.1在Master01节点上添加网络配置信息5.6.2准备flannel.sh和flannel压缩包,解压flannel压缩包5.6.3编写Flannel启动脚本、执... 查看详情

openstack安装部署指南翻译系列之说明(pike版本官网翻译)

从部署实践来看,部署工作有两大困难,一个是架构设计,一个是排查错误。其中,当部署过程中出现错误,需要排查的时候,如果不了解基础的系统结构原理和基础的安装步骤,是很难定位和解决问题的。现在Openstack的部署有... 查看详情

kubernetes二进制部署——证书的制作和etcd的部署(代码片段)

Kubernetes二进制部署——证书的制作和ETCD的部署一、实验环境自签SSL证书二、ETCD集群部署1、环境部署2、master节点3、node1节点4、node2节点5、master节点一、实验环境主机名IP服务master192.168.172.10/24kube-apiserverkube-controller-managerkube-sched... 查看详情

kubernetes二进制部署——证书的制作和etcd的部署(代码片段)

Kubernetes二进制部署——证书的制作和ETCD的部署一、实验环境自签SSL证书二、ETCD集群部署1、环境部署2、master节点3、node1节点4、node2节点5、master节点一、实验环境主机名IP服务master192.168.172.10/24kube-apiserverkube-controller-managerkube-sched... 查看详情

k8s高可用部署:keepalived+haproxy

...官方文档只提到了一句“使用负载均衡器将apiserver暴露给工作程序节点”,而这恰恰是生产环境中需要解决的重点问题。Notes:此处的负载均衡器并不是kube-proxy,此处的LoadBalancer是针对apiserver的。下面以一个实验验证高可用性。... 查看详情

微服务网关apisix群集配置指南

1.前言APISIX通过ETCD存储数据,利用ETCD本身的功能实现群集管理和控制。有关APISIX的安装配置详情参考“​​APISIX网关CentOS7环境安装配置​​”。前面文章描述的是单个ETCD节点的配置操作,本文通过配置ETCD3节点群集的方式实现A... 查看详情

kubernetes节点服务搭建————二进制部署|单master节点配置(一)(etcd和flannel)(代码片段)

...配置部署Docker引擎flannel网络配置常见的通信方式flannel的工作流程flannel的搭建部署总结常见的K8s按照部署方式MinikubeMinikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用部署地... 查看详情

用kubeadm部署生产级k8s集群(代码片段)

...演示,此处使?1.13.1版本,到下?篇再升级到v1.143.kubeadm的原理解读本?主要介绍kubeadm对?可?集群的部署kubeadm部署k8sv1.13?可?集群?式有两种Stackedetcdtopology即每台etcd各?独?,分别部署在3台master上,互不通信,优点是简单,缺点是缺乏et... 查看详情

浅入深出etcd之raft原理

...点上面去的呢?又是如何保证在网络分区的情况下能正常工作下去?raft协议到底是什么?带着这些问题我们继续往下看。raft选举策略我们知道etcd使用raft协议来保证整个分布式的节点网络能正常的运转并且能正确的将数据复制... 查看详情

kubernetes学习一:kubernetes集群搭建之etcd安装部署(代码片段)

...2、服务器信息介绍(以下称主机名)3、etcd安装部署3.1、cfssl安装3.2、创建etcd证书3.3、etcdca配置3.4、etcdca证书3.5、etcdserver证书3.6、生成etcdca证书和私钥初始化ca3.7、生成server证书3.8、下发证书和秘钥3.9、etcd安装(三... 查看详情

负载均衡器部署方式和工作原理

概述负载均衡(LoadBalance)由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做... 查看详情