ETCD数据存储情况

https : //.etcd.io/
同样的,当你完成了集群的初始化后,这些信息就失去了作用 。当你需要增加节点时,需要使用来进行操作 。
为了安全,在每次启动新的etcd集群时,请务必使用新的 token进行注册 。另外,如果你初始化时启动的节点超过了指定的数量,多余的节点会自动转化为proxy模式的etcd 。
(3). DNS自发现模式
etcd还支持使用DNS SRV记录进行启动 。关于DNS SRV记录如何进行服务发现,可以参阅,所以,你要在DNS服务器上进行相应的配置 。
做好了上述两步DNS的配置,就可以使用DNS启动etcd集群了 。配置DNS解析的url参数为--srv,其中某一个节点地启动命令如下 。
$etcd- name\
-- srv. com\
--- peer - urlshttp : //:2380 \
--- tokenetcd -- 1\
--- statenew\
--- urlshttp : //:2379 \
--- urlshttp : //:2379 \
-- peer - urlshttp : //:2380
当然,你也可以直接把节点的域名改成IP来启动 。
2.4.2 关键部分源码解析
etcd的启动是从主目录下的main.go开始的,然后进入/etcd.go,载入配置参数 。如果被配置为proxy模式,则进入函数,否则进入,开启etcd服务模块和http请求处理模块 。
在启动http监听时,为了与集群其他etcd机器(peers)保持连接,均采用了.启动方式,在超过指定时间没有获得响应时就会出现超时错误 。而在监听请求时,采用的是.,有助于连接的稳定 。
在/etcd.go中的函数可以看到,对于不同的etcd参数,启动集群的方法略有不同,但是最终需要的就是一个IP与端口构成的字符串 。
在静态配置的启动方式中,集群的所有信息都已经给出,所以直接解析用逗号隔开的集群url信息就好了 。
DNS发现的方式与静态配置启动类似,会预先发送一个tcp的SRV请求,先查看下是否有集群的域名信息,如果没有找到,则去查看 。根据找到的域名,解析出对应的IP和端口,即集群的url信息 。
较为复杂是etcd式的自发现启动 。首先用自身单个的url构成一个集群,然后在启动的过程中根据参数进入/.go源码的函数 。在启动时使用的etcd的token地址中,包含了集群大小(size)信息,所以集群的启动本质上是一个不断监测与等待的过程 。启动的第一步就是在这个借用的etcd的token目录下注册自身的信息,然后再监测token目录下所有节点的数量,如果数量没有达到指定值,则循环等待 。否则结束等待,进入后续启动过程 。
配置etcd过程中通常要用到两种url地址容易混淆,一种用于etcd集群同步信息并保持连接,通常称为peer-urls;另外一种用于接收用户端发来的HTTP请求,通常称为-urls 。
2.4.3 运行时节点变更
etcd集群启动完毕后,可以在运行的过程中对集群进行重构,包括核心节点的增加、删除、迁移、替换等 。运行时重构使得etcd集群无须重启即可改变集群的配置,这也是新版etcd区别于旧版包含的新特性 。
只有当集群中多数节点正常的情况下,你才可以进行运行时的配置管理 。因为配置更改的信息也会被etcd当成一个信息存储和同步,如果集群多数节点损坏,集群就失去了写入数据的能力 。所以在配置etcd集群数量时,强烈推荐至少配置3个核心节点,配置数目越多,可用性越强 。
(1). 节点迁移、替换
当你节点所在的机器出现硬件故障,或者节点出现如数据目录损坏等问题,导致节点永久性的不可恢复时,就需要对节点进行迁移或者替换 。当一个节点失效以后,必须尽快修复,因为etcd集群正常运行的必要条件是集群中多数节点都正常工作 。
迁移一个节点需要进行四步操作:
(2). 节点增加