mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-12-26 15:06:18 +00:00
79 lines
4.0 KiB
Markdown
79 lines
4.0 KiB
Markdown
## 安装
|
||
|
||
etcd 基于 Go 语言实现,因此,用户可以从 [项目主页](https://github.com/coreos/etcd) 下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 Docker 镜像文件来体验。
|
||
|
||
### 二进制文件方式下载
|
||
|
||
编译好的二进制文件都在 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases/) 页面,用户可以选择需要的版本,或通过下载工具下载。
|
||
|
||
例如,下面的命令使用 curl 工具下载压缩包,并解压。
|
||
|
||
```
|
||
curl -L https://github.com/coreos/etcd/releases/download/v2.0.0-rc.1/etcd-v2.0.0-rc.1-linux-amd64.tar.gz -o etcd-v2.0.0-rc.1-linux-amd64.tar.gz
|
||
tar xzvf etcd-v2.0.0-rc.1-linux-amd64.tar.gz
|
||
cd etcd-v2.0.0-rc.1-linux-amd64
|
||
```
|
||
|
||
解压后,可以看到文件包括
|
||
```
|
||
$ ls
|
||
etcd etcdctl etcd-migrate README-etcdctl.md README.md
|
||
```
|
||
|
||
其中 etcd 是服务主文件,etcdctl 是提供给用户的命令客户端,etcd-migrate 负责进行迁移。
|
||
|
||
推荐通过下面的命令将三个文件都放到系统可执行目录 `/usr/local/bin/` 或 `/usr/bin/`。
|
||
|
||
```
|
||
$ sudo cp etcd* /usr/local/bin/
|
||
```
|
||
|
||
运行 etcd,将默认组建一个两个节点的集群。数据库服务端默认监听在 2379 和 4001 端口,etcd 实例监听在 2380 和 7001 端口。显示类似如下的信息:
|
||
```
|
||
$ ./etcd
|
||
2014/12/31 14:52:09 no data-dir provided, using default data-dir ./default.etcd
|
||
2014/12/31 14:52:09 etcd: listening for peers on http://localhost:2380
|
||
2014/12/31 14:52:09 etcd: listening for peers on http://localhost:7001
|
||
2014/12/31 14:52:09 etcd: listening for client requests on http://localhost:2379
|
||
2014/12/31 14:52:09 etcd: listening for client requests on http://localhost:4001
|
||
2014/12/31 14:52:09 etcdserver: name = default
|
||
2014/12/31 14:52:09 etcdserver: data dir = default.etcd
|
||
2014/12/31 14:52:09 etcdserver: snapshot count = 10000
|
||
2014/12/31 14:52:09 etcdserver: advertise client URLs = http://localhost:2379,http://localhost:4001
|
||
2014/12/31 14:52:09 etcdserver: initial advertise peer URLs = http://localhost:2380,http://localhost:7001
|
||
2014/12/31 14:52:09 etcdserver: initial cluster = default=http://localhost:2380,default=http://localhost:7001
|
||
2014/12/31 14:52:10 etcdserver: start member ce2a822cea30bfca in cluster 7e27652122e8b2ae
|
||
2014/12/31 14:52:10 raft: ce2a822cea30bfca became follower at term 0
|
||
2014/12/31 14:52:10 raft: newRaft ce2a822cea30bfca [peers: [], term: 0, commit: 0, lastindex: 0, lastterm: 0]
|
||
2014/12/31 14:52:10 raft: ce2a822cea30bfca became follower at term 1
|
||
2014/12/31 14:52:10 etcdserver: added local member ce2a822cea30bfca [http://localhost:2380 http://localhost:7001] to cluster 7e27652122e8b2ae
|
||
2014/12/31 14:52:11 raft: ce2a822cea30bfca is starting a new election at term 1
|
||
2014/12/31 14:52:11 raft: ce2a822cea30bfca became candidate at term 2
|
||
2014/12/31 14:52:11 raft: ce2a822cea30bfca received vote from ce2a822cea30bfca at term 2
|
||
2014/12/31 14:52:11 raft: ce2a822cea30bfca became leader at term 2
|
||
2014/12/31 14:52:11 raft.node: ce2a822cea30bfca elected leader ce2a822cea30bfca at term 2
|
||
2014/12/31 14:52:11 etcdserver: published {Name:default ClientURLs:[http://localhost:2379 http://localhost:4001]} to cluster 7e27652122e8b2ae
|
||
```
|
||
|
||
此时,可以使用 etcdctl 命令进行测试,设置和获取键值 `testkey: "hello world"`,检查 etcd 服务是否启动成功:
|
||
```
|
||
$ ./etcdctl set testkey "hello world"
|
||
hello world
|
||
$ ./etcdctl get testkey
|
||
hello world
|
||
```
|
||
说明 etcd 服务已经成功启动了。
|
||
|
||
当然,也可以通过 HTTP 访问本地 2379 或 4001 端口的方式来进行操作,例如查看 `testkey` 的值:
|
||
```
|
||
$ curl -L http://localhost:4001/v2/keys/testkey
|
||
{"action":"get","node":{"key":"/testkey","value":"hello world","modifiedIndex":3,"createdIndex":3}}
|
||
```
|
||
|
||
### Docker 镜像方式下载
|
||
|
||
镜像名称为 quay.io/coreos/etcd:v2.0.0_rc.1,可以通过下面的命令启动 etcd 服务监听到 4001 端口。
|
||
```
|
||
$ sudo docker run -p 4001:4001 -v /etc/ssl/certs/:/etc/ssl/certs/ quay.io/coreos/etcd:v2.0.0_rc.1
|
||
```
|