diff --git a/etcd/cluster.md b/etcd/cluster.md index fe7b270..dc39d33 100644 --- a/etcd/cluster.md +++ b/etcd/cluster.md @@ -9,7 +9,7 @@ version: "3.6" services: node1: - image: quay.io/coreos/etcd + image: quay.io/coreos/etcd:v3.4.0 volumes: - node1-data:/etcd-data expose: @@ -41,7 +41,7 @@ services: - docker-etcd node2: - image: quay.io/coreos/etcd + image: quay.io/coreos/etcd:v3.4.0 volumes: - node2-data:/etcd-data networks: @@ -73,7 +73,7 @@ services: - docker-etcd node3: - image: quay.io/coreos/etcd + image: quay.io/coreos/etcd:v3.4.0 volumes: - node3-data:/etcd-data networks: diff --git a/etcd/demo/cluster/docker-compose.yml b/etcd/demo/cluster/docker-compose.yml index 2a365d5..43d7a06 100644 --- a/etcd/demo/cluster/docker-compose.yml +++ b/etcd/demo/cluster/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.6" services: node1: - image: quay.io/coreos/etcd + image: quay.io/coreos/etcd:v3.4.0 volumes: - node1-data:/etcd-data expose: @@ -34,7 +34,7 @@ services: - docker-etcd node2: - image: quay.io/coreos/etcd + image: quay.io/coreos/etcd:v3.4.0 volumes: - node2-data:/etcd-data networks: @@ -66,7 +66,7 @@ services: - docker-etcd node3: - image: quay.io/coreos/etcd + image: quay.io/coreos/etcd:v3.4.0 volumes: - node3-data:/etcd-data networks: diff --git a/etcd/etcdctl-v2.md b/etcd/etcdctl-v2.md index 904fc49..6e66a9f 100644 --- a/etcd/etcdctl-v2.md +++ b/etcd/etcdctl-v2.md @@ -2,7 +2,7 @@ `etcdctl` 是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟 `etcd` 服务打交道,而无需基于 `HTTP API` 方式。这在某些情况下将很方便,例如用户对服务进行测试或者手动修改数据库内容。我们也推荐在刚接触 `etcd` 时通过 `etcdctl` 命令来熟悉相关的操作,这些操作跟 `HTTP API` 实际上是对应的。 -`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases) 下载。 +`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/etcd-io/etcd/releases](https://github.com/etcd-io/etcd/releases) 下载。 `etcdctl` 支持如下的命令,大体上分为数据库操作和非数据库操作两类,后面将分别进行解释。 diff --git a/etcd/etcdctl.md b/etcd/etcdctl.md index 7868431..e9d398a 100644 --- a/etcd/etcdctl.md +++ b/etcd/etcdctl.md @@ -2,7 +2,7 @@ `etcdctl` 是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟 `etcd` 服务打交道,而无需基于 `HTTP API` 方式。这在某些情况下将很方便,例如用户对服务进行测试或者手动修改数据库内容。我们也推荐在刚接触 `etcd` 时通过 `etcdctl` 命令来熟悉相关的操作,这些操作跟 `HTTP API` 实际上是对应的。 -`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases) 下载。 +`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/etcd-io/etcd/releases](https://github.com/etcd-io/etcd/releases) 下载。 `etcdctl` 支持如下的命令,大体上分为数据库操作和非数据库操作两类,后面将分别进行解释。 @@ -14,10 +14,10 @@ USAGE: etcdctl VERSION: - 3.2.10 + 3.4.0 API VERSION: - 3.2 + 3.4 COMMANDS: diff --git a/etcd/install.md b/etcd/install.md index ce3f67f..472865d 100644 --- a/etcd/install.md +++ b/etcd/install.md @@ -1,19 +1,19 @@ ## 安装 -`etcd` 基于 `Go` 语言实现,因此,用户可以从 [项目主页](https://github.com/coreos/etcd) 下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。 +`etcd` 基于 `Go` 语言实现,因此,用户可以从 [项目主页](https://github.com/etcd-io/etcd) 下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。 ->注意:本章节内容基于 etcd `3.x` 版本 +>注意:本章节内容基于 etcd `3.4.x` 版本 ### 二进制文件方式下载 -编译好的二进制文件都在 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases/) 页面,用户可以选择需要的版本,或通过下载工具下载。 +编译好的二进制文件都在 [github.com/etcd-io/etcd/releases](https://github.com/etcd-io/etcd/releases/) 页面,用户可以选择需要的版本,或通过下载工具下载。 例如,使用 `curl` 工具下载压缩包,并解压。 ```bash -$ curl -L https://github.com/coreos/etcd/releases/download/v3.2.10/etcd-v3.2.10-linux-amd64.tar.gz -o etcd-v3.2.10-linux-amd64.tar.gz -$ tar xzvf etcd-v3.2.10-linux-amd64.tar.gz -$ cd etcd-v3.2.10-linux-amd64 +$ curl -L https://github.com/etcd-io/etcd/releases/download/v3.4.0/etcd-v3.4.0-linux-amd64.tar.gz -o etcd-v3.4.0-linux-amd64.tar.gz +$ tar xzvf etcd-v3.4.0-linux-amd64.tar.gz +$ cd etcd-v3.4.0-linux-amd64 ``` 解压后,可以看到文件包括 @@ -35,14 +35,7 @@ $ sudo cp etcd* /usr/local/bin/ ```bash $ etcd -2017-12-03 11:18:34.406082 I | etcdmain: etcd Version: 3.2.10 -2017-12-03 11:18:34.406226 I | etcdmain: Git SHA: GitNotFound -2017-12-03 11:18:34.406235 I | etcdmain: Go Version: go1.9.2 -2017-12-03 11:18:34.406242 I | etcdmain: Go OS/Arch: darwin/amd64 -2017-12-03 11:18:34.406250 I | etcdmain: setting maximum number of CPUs to 4, total number of available CPUs is 4 -2017-12-03 11:18:34.406265 N | etcdmain: failed to detect default host (default host not supported on darwin_amd64) -2017-12-03 11:18:34.406279 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd -2017-12-03 11:18:34.406457 N | etcdmain: the server is already initialized as member before, starting as etcd member... +... 2017-12-03 11:18:34.411579 I | embed: listening for peers on http://localhost:2380 2017-12-03 11:18:34.411938 I | embed: listening for client requests on localhost:2379 ``` @@ -68,22 +61,27 @@ hello world 镜像名称为 `quay.io/coreos/etcd`,可以通过下面的命令启动 `etcd` 服务监听到 `2379` 和 `2380` 端口。 ```bash -$ export NODE1=192.168.1.21 - -$ docker run --name etcd \ - -p 2379:2379 \ - -p 2380:2380 \ - --volume=etcd-data:/etcd-data \ - quay.io/coreos/etcd:latest \ - /usr/local/bin/etcd \ - --data-dir=/etcd-data --name node1 \ - --initial-advertise-peer-urls http://${NODE1}:2380 --listen-peer-urls http://0.0.0.0:2380 \ - --advertise-client-urls http://${NODE1}:2379 --listen-client-urls http://0.0.0.0:2379 \ - --initial-cluster node1=http://${NODE1}:2380 +$ docker run \ +-p 2379:2379 \ +-p 2380:2380 \ +--mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \ +--name etcd-gcr-v3.4.0 \ +quay.io/coreos/etcd:v3.4.0 \ +/usr/local/bin/etcd \ +--name s1 \ +--data-dir /etcd-data \ +--listen-client-urls http://0.0.0.0:2379 \ +--advertise-client-urls http://0.0.0.0:2379 \ +--listen-peer-urls http://0.0.0.0:2380 \ +--initial-advertise-peer-urls http://0.0.0.0:2380 \ +--initial-cluster s1=http://0.0.0.0:2380 \ +--initial-cluster-token tkn \ +--initial-cluster-state new \ +--log-level info \ +--logger zap \ +--log-outputs stderr ``` ->注意:etcd 官方标注 `quay.io/coreos/etcd` 即将废弃,启用新的 `gcr.io/etcd-development/etcd` 镜像,但后者由于网络原因,国内不能下载到该镜像,这里仍然使用前者作为演示。 - 打开新的终端按照上一步的方法测试 `etcd` 是否成功启动。 ### macOS 中运行 diff --git a/etcd/intro.md b/etcd/intro.md index 95f8ba9..1862091 100644 --- a/etcd/intro.md +++ b/etcd/intro.md @@ -4,7 +4,7 @@ `etcd` 是 `CoreOS` 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(`key-value`)数据库,基于 `Go` 语言实现。我们知道,在分布式系统中,各种服务的配置信息的管理分享,服务的发现是一个很基本同时也是很重要的问题。`CoreOS` 项目就希望基于 `etcd` 来解决这一问题。 -`etcd` 目前在 [github.com/coreos/etcd](https://github.com/coreos/etcd) 进行维护。 +`etcd` 目前在 [github.com/etcd-io/etcd](https://github.com/etcd-io/etcd) 进行维护。 受到 [Apache ZooKeeper](https://zookeeper.apache.org/) 项目和 [doozer](https://github.com/ha/doozerd) 项目的启发,`etcd` 在设计的时候重点考虑了下面四个要素: diff --git a/image/build.md b/image/build.md index 7a74516..ed2ca60 100644 --- a/image/build.md +++ b/image/build.md @@ -40,7 +40,7 @@ FROM scratch 如果你以 `scratch` 为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像第一层开始存在。 -不以任何系统为基础,直接将可执行文件复制进镜像的做法并不罕见,比如 [`swarm`](https://hub.docker.com/_/swarm/)、[`coreos/etcd`](https://quay.io/repository/coreos/etcd)。对于 Linux 下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接 `FROM scratch` 会让镜像体积更加小巧。使用 [Go 语言](https://golang.org/) 开发的应用很多会使用这种方式来制作镜像,这也是为什么有人认为 Go 是特别适合容器微服务架构的语言的原因之一。 +不以任何系统为基础,直接将可执行文件复制进镜像的做法并不罕见,比如 [`swarm`](https://hub.docker.com/_/swarm/)、[`etcd`](https://quay.io/repository/coreos/etcd)。对于 Linux 下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接 `FROM scratch` 会让镜像体积更加小巧。使用 [Go 语言](https://golang.org/) 开发的应用很多会使用这种方式来制作镜像,这也是为什么有人认为 Go 是特别适合容器微服务架构的语言的原因之一。 ### RUN 执行命令