原创内容,转载请注明出处
博主地址:https://aronligithub.github.io/
前言
在部署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
作者:DevOps海洋的渔夫
链接:https://www.jianshu.com/p/e52f9204b7a9