docker命令就不解释了,从官网上copy下来的,都是一些内部的配置信息
需要挂载和端口暴露的docker基础
单机单实例
安装命令
shell
复制代码
docker run \ -d \ --name etcd \ -p 2379:2379 \ -p 2380:2380 \ --volume=/var/etcd:/etcd-data \ quay.io/coreos/etcd:v3.3.13 \ /usr/local/bin/etcd \ --name my-etcd-1 \ --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 my-etcd-1=http://0.0.0.0:2380 \ --initial-cluster-token my-etcd-token \ --initial-cluster-state new \ --auto-compaction-retention 1 \ --auto-compaction-mode periodic
etcdctl 工具先进入容器
shell
复制代码
~ # etcdctl set name cfd cfd ~ # etcdctl get name cfd ~ # etcdctl --endpoints http://localhost:2379 set name cfd cfd ~ # etcdctl --endpoints http://localhost:2379 get name cfd
单机多实例
默认使用:
- 2379 - 服务接口
- 2380 - 通信监听端口
多实例配置端口如下,按照上面的 docker 安装命令修改 将192.168.159.128配置为本机ip,0.0.0.0不变 如果出错了需要重新配置,需要停止容器并删除,再把挂载的目录也删掉,运行命令
12379 | 12380 |
22379 | 22380 |
32379 | 32380 |
shell
复制代码
docker run \ -d \ --name my-etcd-2 \ -p 12379:12379 \ -p 12380:12380 \ --volume=/home/cfd/env/etcd/2:/etcd-data \ quay.io/coreos/etcd:v3.3.13 \ /usr/local/bin/etcd \ --name my-etcd-2 \ --data-dir /etcd-data \ --listen-client-urls http://0.0.0.0:12379 \ --advertise-client-urls http://192.168.159.128:12379 \ --listen-peer-urls http://0.0.0.0:12380 \ --initial-advertise-peer-urls http://192.168.159.128:12380 \ --initial-cluster 'my-etcd-2=http://192.168.159.128:12380,my-etcd-3=http://192.168.159.128:22380,my-etcd-4=http://192.168.159.128:32380' \ --initial-cluster-token my-etcd-token \ --initial-cluster-state new \ --auto-compaction-retention 1 \ --auto-compaction-mode periodic docker run \ -d \ --name my-etcd-3 \ -p 22379:22379 \ -p 22380:22380 \ --volume=/home/cfd/env/etcd/3:/etcd-data \ quay.io/coreos/etcd:v3.3.13 \ /usr/local/bin/etcd \ --name my-etcd-3 \ --data-dir /etcd-data \ --listen-client-urls http://0.0.0.0:22379 \ --advertise-client-urls http://192.168.159.128:22379 \ --listen-peer-urls http://0.0.0.0:22380 \ --initial-advertise-peer-urls http://192.168.159.128:22380 \ --initial-cluster 'my-etcd-2=http://192.168.159.128:12380,my-etcd-3=http://192.168.159.128:22380,my-etcd-4=http://192.168.159.128:32380' \ --initial-cluster-token my-etcd-token \ --initial-cluster-state new \ --auto-compaction-retention 1 \ --auto-compaction-mode periodic docker run \ -d \ --name my-etcd-4 \ -p 32379:32379 \ -p 32380:32380 \ --volume=/home/cfd/env/etcd/4:/etcd-data \ quay.io/coreos/etcd:v3.3.13 \ /usr/local/bin/etcd \ --name my-etcd-4 \ --data-dir /etcd-data \ --listen-client-urls http://0.0.0.0:32379 \ --advertise-client-urls http://192.168.159.128:32379 \ --listen-peer-urls http://0.0.0.0:32380 \ --initial-advertise-peer-urls http://192.168.159.128:32380 \ --initial-cluster 'my-etcd-2=http://192.168.159.128:12380,my-etcd-3=http://192.168.159.128:22380,my-etcd-4=http://192.168.159.128:32380' \ --initial-cluster-token my-etcd-token \ --initial-cluster-state new \ --auto-compaction-retention 1 \ --auto-compaction-mode periodic
etcd关键参数说明
进入容器后查看连接列表
sh
复制代码
# docker exec -it my-etcd-2 /bin/sh # etcdctl --endpoints=192.168.159.128:12379 member list parse 192.168.159.128:12379: first path segment in URL cannot contain colon # etcdctl --endpoints=http://192.168.159.128:12379 member list 731ef0275af38ce7: name=my-etcd-3 peerURLs=http://192.168.159.128:22380 clientURLs=http://192.168.159.128:22379 isLeader=false 7f396b01e384c118: name=my-etcd-4 peerURLs=http://192.168.159.128:32380 clientURLs=http://192.168.159.128:32379 isLeader=false fccae47c7ce36cc6: name=my-etcd-2 peerURLs=http://192.168.159.128:12380 clientURLs=http://192.168.159.128:12379 isLeader=true # 三号节点是leader
简单使用etcdctl
sh
复制代码
[root@iZ2vcd6bealyr76cgiidyvZ var]# docker exec -it my-etcd-2 /bin/sh / # etcdctl --endpoints=http://172.27.3.40:12379 set name cfd cfd / # etcdctl --endpoints=http://172.27.3.40:12379 get name cfd