macos快速搭建一个etcd集群
要在mac os(或windows)上搭建一个etcd集群用做开发环境,现将搭建过程记录下:
1.先要把最新的镜像拉下来
docker pull quay.io/coreos/etcd
查看了下版本是3.3.8版本
2.在一台机器配置了3个容器,在机器上创建了子网络,三台容器在一个网络里
docker network create --subnet=192.167.0.0/16 etcdnet
3.启动节点:
启动第一个节点:
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
启动第二个节点:
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
启动第三个节点:
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
配置项说明:
–listen-client-urls:
用于监听客户端通讯的URL列表。这个标记告诉 etcd 在特定的 scheme://IP:port 组合上从客户端接收进来的请求。scheme 可是 http 或者 https。
–advertise-client-urls:
列出这个成员的客户端URL,通告给集群中的其他成员。这些 URL 可以包含域名。
–initial-advertise-peer-urls:
列出这个成员的伙伴 URL 以便通告给集群的其他成员。这些地方用于在集群中通讯 etcd 数据。至少有一个必须对所有集群成员可以路由的。这些 URL 可以包含域名。
–listen-peer-urls
用于监听伙伴通讯的URL列表。这个标记告诉 etcd 在特定的 scheme://IP:port 组合上从它的伙伴接收进来的请求。scheme 可是 http 或者 https
进入docker实例:
docker exec -it d48b21a7e439 /bin/sh
添加一个key:
ETCDCTL_API=3 etcdctl put mykey “this is awesome”
查询:
ETCDCTL_API=3 etcdctl get mykey
etcd连接地址即为:
“etcd”: [
“127.0.0.1:2379”,
“127.0.0.1:2479”,
“127.0.0.1:2579”
]
增加账号
ETCDCTL_API=3 etcdctl --endpoints http://172.16.130.130:2379,http://172.16.130.130:2479,http://172.16.130.130:2579 user add root
根据提示设置密码,将root账号设置为root角色
ETCDCTL_API=3 etcdctl --endpoints http://172.16.130.130:2379,http://172.16.130.130:2479,http://172.16.130.130:2579 user grant root root
开启身份验证:
ETCDCTL_API=3 etcdctl --endpoints http://172.16.130.130:2379,http://172.16.130.130:2479,http://172.16.130.130:2579 auth enable
创建其它账号:
ETCDCTL_API=3 etcdctl --user root --endpoints http://172.16.130.130:2379,http://172.16.130.130:2479,http://172.16.130.130:2579 user add hhq
前两次是输入hhq的密码xxxxxx,第三次是输入root密码
ETCDCTL_API=3 etcdctl --user root --endpoints http://172.16.130.130:2379,http://172.16.130.130:2479,http://172.16.130.130:2579 user grant hhq root