原文地址:Setting up local clusters
设置单节点集群
对于测试环境与开发环境,最快速与简单的方式是配置一个本地集群。对于生产环境,参考集群部分。
本地单节点集群
启动一个集群
运行以下命令来部署一个单节点的etcd集群:
$ ./etcd
...
如果etcd
二进制文件不在当前工作目录,那可能位于$GOPATH/bin/etcd
或者是/usr/local/bin/etcd
.合适地运行命令。
运行的etcd
成员在localhost:2379
监听客户端的请求。
与集群进行交互
使用etcdctl
与运行中的集群进行交互操作
1. 例子:在集群中存储一个键值对:
$ ./etcdctl put foo bar
OK
如果OK
被打印在控制台,说明已经成功存储Key-Value对。
2. 获取键foo
对应的值:
$ ./etcdctl get foo
bar
如果bar
被返回,说明与etcd
集群的交互操作和期望中的相同。
本地多节点集群
启动一个集群
在etcd
的git
仓库中存在一个Procfile
文件提供一种简单的方式可以对本地多节点集群进行配置。在启动多节点集群之前,将工作目录导向etcd
的根目录并执行以下操作:
1. 安装`goreman`控制基于`Procfile`的应用:
```
$ go get github.com/mattn/goreman
```
2. 使用 `etcd`的配置文件`Procfile`通过`goreman`启动一个集群:
```
$ goreman -f Procfile start
```
集群成员已经启动了,并在`localhost:2379`,localhost:22379`,localhost:32379`监听客户端的请求。
与集群进行交互
使用etcdctl
与运行中的集群进行交互操作:
1. 打印成员列表:
$ `etcdctl --write-out=table --endpoints=localhost:2379 member list`
`etcd`集群中的成员列表显示如下:
ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS |
---|---|---|---|---|
8211f1d0f64f3269 | started | infra1 | http://127.0.0.1:2380 | http://127.0.0.1:2379 |
91bc3c398fb3c146 | started | infra1 | http://127.0.0.1:22380 | http://127.0.0.1:22379 |
fd422379fda50e48 | started | infra1 | http://127.0.0.1:32380 | http://127.0.0.1:32379 |
2. 例子:在集群中存储一个Key-Value对:
$ ./etcdctl put foo bar
OK
如果OK
被打印在控制台,说明已经成功存储键-值对。
容错测试
关闭一个成员然后尝试通过键获取值来进行容错测试:
- 获取一个运行中的成员的名字然后停止它:
Procfile
列出了多节点集群的属性信息。例如,名称为etcd2
的运行中的成员。 - 停止该成员:
#kill etcd2
$ goreman run stop etcd2
3.存储一个键:
$ etcdctl put key hello
OK
4.获取前一步所存储的键:
$ etcdctl get key
hello
5.从已经停止的成员处获取键:
$ 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
6.重启停止的成员:
$ goreman run restart etcd2
7.从重启的成员处获取键:
$ etcdctl --endpoints=localhost:22379 get key
hello
重启的成员重新建立了连接.etcdctl
将能够成功地从重启的成员处接受键,读与etcd进行交互部分学习更多关于与etcd交互的内容。