上一篇通过api接口简单的操作了一下etcd,本篇打算部署etcd集群。我们使用raft作为基础的分布式服务协议,它在所有的etcd节点上提供了一致性的数据访问和持久化的数据存储。现在我们在三台机器上启动etcd实例,就是上一篇中的三台Docker机器。
192.168.1.100 Docker-1 server
192.168.1.101 Docker-2 client
192.168.1.102 Docker-3 client
Docker-1
./bin/etcd -peer-addr 192.168.1.100:7001 -addr 192.168.1.100:4001 -data-dir /tmp/etcd/ -name Docker-1

接下来我们使用-peers参数把其余两台docker机器也加入这个集群中。
Docker-2
./bin/etcd -peer-addr 192.168.1.100:7001 -addr 192.168.1.100:4001 -data-dir /tmp/etcd/ -name Docker-1

Docker-3
./bin/etcd -peer-addr 192.168.1.102:7001 -addr 192.168.1.102:4001 -peers 192.168.1.100:7001,192.168.1.101:7001 -data-dir /tmp/etcd/ -name Docker-3

现在我们随便找台节点查询当前etcd集群中的成员,我们在Docker-1上进行查询
curl -s http://192.168.1.102:4001/v2/machines
这个结果显示起来可读性不友好,我们换个api接口来读取
curl -s http://192.168.1.102:4001/v2/keys/_etcd/machines

可以看到整个etcd集群中有三个节点,这时候我们就可以使用api接口进行get/set操作了。
当集群中的一个节点从集群中断开链接后,该节点会自动的尝试再次加入集群中,如果这时候通讯恢复了,则该节点会再次加入集群。如果机器被killed掉了,在该节点以老的名称再次启动后,还是会自动加入集群中的。如果我们把集群中的leader killed掉了,集群会在其余的节点中选择一个leader出来。