专栏首页Devops专栏etcd原理以及基本技术概述铺垫

etcd原理以及基本技术概述铺垫

前言

在部署kubernetes和calico网络的过程中,都需要有一个etcd数据库进行数据记录。这是部署的前置组件。

可以说部署etcd就是踏入使用kubernetes的第一步,那么下面就来了解一下什么是etcd?


etcd的介绍

etcd的官网

作为要了解etcd这个数据库,那么第一步就是要知道从哪里去访问官网,再下一步就是如何从官网中获取自己需要的文档资料

etcd官网的相关信息

etcd的特征

etcd官网特征描述


etcd的技术概述

etcd是基于什么语言编写,通过什么算法保证数据集群同步的呢?

etcd是用Go编写的,它具有出色的跨平台支持,小型二进制文件和背后的优秀社区。etcd机器之间的通信通过Raft一致性算法处理。

etcd的主从集群是怎么形式的呢,例如一主多从,还是多主多从呢?

在etcd的集群中会选举出一位leader,其他etcd服务节点就会成为follower,在此过程其他follower会同步leader的数据。
由于etcd集群必须能够选举出leader才能正常工作,所以部署的服务器数量必须是奇数,例如:
1,3,5,7,9 的etcd节点数量。

如果etcd的节点数量为偶数会怎么样?

如果etcd的节点数量为偶数,例如:2,4,6,8 那么每一个节点都会收到同样的选举票数,就好像我们在班里选举班长一样,同样票数两个人是没法出leader的,谁也不服谁。
那么这时候的结果当然就是etcd的集群无法工作了

那么如果etcd的节点数量为奇数,需要部署多少个节点最合适呢?

在考虑etcd读写效率以及稳定性的情况下,基本可以选型如下:
只有单台或者两台服务器做kubernetes的服务集群,只需要部署一台etcd节点即可;
只有三台或者四台服务器做kubernetes的服务集群,只需要部署三台etcd节点即可;
只有五台或者六台服务器做kubernetes的服务集群,只需要部署五台etcd节点即可;

那么按照上面的公式推导,不就是etcd的节点越多越好?

其实不是越多越好,基本三台和五台服务器作为etcd的节点已经比较稳定的了。

那么如果任性就是要服务器很多呢?会出现什么样的情况?

如果服务器的台数越多,就可能会出现网络抖动,延时、不稳定的情况,具体视机房网络情况;
如果服务器的台数越多,你就需要管理以及维护观察更多的服务器,在修复故障的时候需要注意更多的服务器数量;
另外,因为etcd的集群所有的follower都需要从leader同步完数据之后,leader才能继续写入新的数据,所以如果etcd的节点数量过多,则会导致同步的时间变长、导致leader的写入效率降低

综上所述,部署etcd集群采用1,3,5,7的台数部署是比较合理的了

下一篇章,我就开始演示单台etcd的部署以及ca证书的创建,在之后演示三台的etcd集群部署。

leader会将数据同步给每个follower

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用模式进行构建——预分配模式

    MongoDB最明显的优势之一就是文档数据模型。它在模式设计和开发周期中均提供了很大的灵活性。用MongoDB文档可以很容易地处理那些不知道之后会需要哪些字段的...

    MongoDB中文社区
  • MySQL调优之数据类型选择原则

    在进行数据库设计时,如果能够选择最恰当的数据类型就可以为后期的数据库调优打好最坚实的基础

    Java学习录
  • MongoDB安全权威指南

    想象一下这样的场景:当工作劳累了一天,你已经准备好收拾行李回家的时候,下面这句话突然冒了出来:

    MongoDB中文社区
  • 手把手教你用R下载TCGA数据:RTCGAToolbox

    各位科研芝士的朋友,大家好,今天,我们分享TCGA数据的最后一个R包,RTCGAToolbox。TCGA数据量庞大,数据种类丰富,分析方法复杂,对于大部分研究人...

    百味科研芝士
  • Redis 持久化之RDB和AOF 转

    Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可...

    双面人
  • MySQL表相关的数据字典梳理

    最近在梳理MySQL数据字典的时候,发现原本印象中的MySQL数据字典其实还是很丰富的。我们逐个来梳理一下。

    jeanron100
  • MongoDB分片到副本集改造实践

    生产线上使用 MongoDB Sharidng 的场景非常多,但由于业务初期评估不到位或者业务发展不符合预期,为了管理起来更方便,可能需要将 Sharding ...

    MongoDB中文社区
  • 使用模式构建:文档版本控制模式

    数据库,例如MongoDB,非常擅长查询大量数据并进行频繁更新。然而,在大多数情况下,我们只针对数据的最新状态执行查询。那如果有些场景下我们需要查询数据的以前状...

    MongoDB中文社区
  • 如何理解flink流处理的动态表?

    尽管存在这些差异,但使用关系查询和SQL处理流并非不可能。高级关系数据库系统提供称为物化视图的功能。物化视图定义为SQL查询,就像常规虚拟视图一样。与虚拟视图相...

    Spark学习技巧
  • 使用 Python 分析 14 亿条数据

    你用 Python 处理过的最大数据集有多大?我想大概不会超过上亿条吧,今天分享一个用 Python 处理分析 14 亿条数据的案例。

    崔庆才

扫码关注云+社区

领取腾讯云代金券