一、部署环境:
macbook pro 上面安装了docker;
二、部署etcd步骤
1、mac上面下载etcd基础镜像
docker pull quay.io/coreos/etcd
2、创建网络组
在我的mac上要运行三个容器,因此创建个网络,三个容器在同一个网络里面
docker network create --subnet=192.167.0.0/16 etcdnet
3、分别创建三个容器
容器 | IP | 客户端通信端口 | peer通信端口 |
容器A | 192.167.0.168 | 2379 | 2380 |
容器B | 192.167.0.170 | 2479 | 2480 |
容器C | 192.167.0.172 | 2579 | 2580 |
1)、先创建容器A:
docker run -d -p 2379:2379 -p 2380:2380 --restart=always --net etcdnet --ip 192.167.0.168 --name etcd0 quay.io/coreos/etcd /usr/local/bin/etcd --name autumn-client0 -advertise-client-urls http://192.167.0.168:2379 -listen-client-urls http://0.0.0.0:2379 -initial-advertise-peer-urls http://192.167.0.168:2380 -listen-peer-urls http://0.0.0.0:2380 -initial-cluster-token etcd-cluster -initial-cluster autumn-client0=http://192.167.0.168:2380,autumn-client1=http://192.167.0.170:2480,autumn-client2=http://192.167.0.172:2580 -initial-cluster-state new
2)、创建容器B:
docker run -d -p 2479:2479 -p 2480:2480 --restart=always --net etcdnet --ip 192.167.0.170 --name etcd1 quay.io/coreos/etcd /usr/local/bin/etcd --name autumn-client1 -advertise-client-urls http://192.167.0.170:2479 -listen-client-urls http://0.0.0.0:2479 -initial-advertise-peer-urls http://192.167.0.170:2480 -listen-peer-urls http://0.0.0.0:2480 -initial-cluster-token etcd-cluster -initial-cluster autumn-client0=http://192.167.0.168:2380,autumn-client1=http://192.167.0.170:2480,autumn-client2=http://192.167.0.172:2580 -initial-cluster-state new
3)、创建容器C:
docker run -d -p 2579:2579 -p 2580:2580 --restart=always --net etcdnet --ip 192.167.0.172 --name etcd2 quay.io/coreos/etcd /usr/local/bin/etcd --name autumn-client2 -advertise-client-urls http://192.167.0.172:2579 -listen-client-urls http://0.0.0.0:2579 -initial-advertise-peer-urls http://192.167.0.172:2580 -listen-peer-urls http://0.0.0.0:2580 -initial-cluster-token etcd-cluster -initial-cluster autumn-client0=http://192.167.0.168:2380,autumn-client1=http://192.167.0.170:2480,autumn-client2=http://192.167.0.172:2580 -initial-cluster-state new
里面一些参数说明:
- --name:etcd集群中的节点名,这里可以随意,可区分且不重复就行
- --listen-peer-urls:监听的用于节点之间通信的url,可监听多个,集群内部将通过这些url进行数据交互(如选举,数据同步等)
- --initial-advertise-peer-urls:建议用于节点之间通信的url,节点间将以该值进行通信。
- --listen-client-urls:监听的用于客户端通信的url,同样可以监听多个。
- --advertise-client-urls:建议使用的客户端通信 url,该值用于 etcd 代理或 etcd 成员与 etcd 节点通信。
- --initial-cluster-token: etcd-cluster-1,节点的 token 值,设置该值后集群将生成唯一 id,并为每个节点也生成唯一 id,当使用相同配置文件再启动一个集群时,只要该 token 值不一样,etcd 集群就不会相互影响。
- --initial-cluster:也就是集群中所有的 initial-advertise-peer-urls 的合集。
- --initial-cluster-state:new,新建集群的标志
4、测试k/v存储
#etcdctl put mykey "this is awesome"
No help topic for 'put' # etcdctl 需要设置环境变量 ETCDCTL_API=3,使用第三版的api,默认的api是2
#ETCDCTL_API=3 etcdctl put mykey "this is awesome"