文档版本 v3.7-DRAFT 处于 草稿 状态。如需获取最新的稳定版文档,请参阅 v3.6。
搭建本地集群
对于测试和开发部署,最快且最简单的方法是配置一个本地集群。对于生产环境部署,请参考 集群 部分。
本地独立集群
启动集群
运行以下命令将 etcd 集群作为独立集群进行部署:
$ ./etcd
...
如果当前工作目录中没有 etcd 二进制文件,它可能位于 $GOPATH/bin/etcd 或 /usr/local/bin/etcd。请根据实际情况运行相应命令。
运行中的 etcd 成员会在 localhost:2379 监听客户端请求。
与集群交互
使用 etcdctl 与运行中的集群进行交互:
在集群中存储一个示例键值对:
$ ./etcdctl put foo bar OK如果输出了 OK,则表示键值对存储成功。
检索
foo的值:$ ./etcdctl get foo bar如果返回了
bar,则说明与 etcd 集群的交互正常。
本地多成员集群
启动集群
etcd Git 仓库根目录下提供了一个 Procfile,可轻松配置本地多成员集群。要启动一个多成员集群,请进入 etcd 源码树的根目录并执行以下操作:
安装
goreman以控制基于 Procfile 的应用程序:$ go install github.com/mattn/goreman@latest使用 etcd 提供的默认 Procfile 通过
goreman启动集群:$ goreman -f Procfile start成员将开始运行。它们分别在
localhost:2379、localhost:22379和localhost:32379监听客户端请求。
与集群交互
使用 etcdctl 与运行中的集群进行交互:
打印成员列表:
$ etcdctl --write-out=table --endpoints=localhost:2379 member listetcd 成员列表将如下所示:
+------------------+---------+--------+------------------------+------------------------+ | ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | +------------------+---------+--------+------------------------+------------------------+ | 8211f1d0f64f3269 | started | infra1 | http://127.0.0.1:2380 | http://127.0.0.1:2379 | | 91bc3c398fb3c146 | started | infra2 | http://127.0.0.1:22380 | http://127.0.0.1:22379 | | fd422379fda50e48 | started | infra3 | http://127.0.0.1:32380 | http://127.0.0.1:32379 | +------------------+---------+--------+------------------------+------------------------+在集群中存储一个示例键值对:
$ etcdctl put foo bar OK如果输出了 OK,则表示键值对存储成功。
测试容错能力
为了测试 etcd 的容错能力,终止一个成员并尝试获取键值。
确定要停止的成员的进程名称。
该
Procfile列出了多成员集群的属性。例如,考虑进程名为etcd2的成员。停止该成员:
# kill etcd2 $ goreman run stop etcd2存储一个键:
$ etcdctl put key hello OK检索上一步中存储的键:
$ etcdctl get key hello从已停止的成员中检索键:
$ etcdctl --endpoints=localhost:22379 get key该命令应显示由连接失败引起的错误:
2017/06/18 23:07:35 grpc: Conn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp 127.0.0.1:22379: getsockopt: connection refused"; Reconnecting to "localhost:22379" Error: grpc: timed out trying to connect重新启动已停止的成员:
$ goreman run restart etcd2从重新启动的成员中获取键:
$ etcdctl --endpoints=localhost:22379 get key hello重启成员将重新建立连接。
etcdctl现在能够成功检索该键。要了解更多关于与 etcd 交互的信息,请阅读 与 etcd 交互章节。