mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-10 11:54:37 +00:00
129 lines
3.2 KiB
Go
129 lines
3.2 KiB
Go
## etcd 集群
|
||
|
||
下面我们使用 [Docker Compose](../../10_compose/README.md) 模拟启动一个 3 节点的 `etcd` 集群。
|
||
|
||
编辑 `compose.yaml`(或 `docker-compose.yml`)文件
|
||
|
||
```yaml
|
||
services:
|
||
|
||
node1:
|
||
image: quay.io/coreos/etcd:v3.4.0
|
||
volumes:
|
||
- node1-data:/etcd-data
|
||
expose:
|
||
- 2379
|
||
- 2380
|
||
networks:
|
||
cluster_net:
|
||
ipv4_address: 172.16.238.100
|
||
environment:
|
||
- ETCDCTL_API=3
|
||
command:
|
||
- /usr/local/bin/etcd
|
||
- --data-dir=/etcd-data
|
||
- --name
|
||
- node1
|
||
- --initial-advertise-peer-urls
|
||
- http://172.16.238.100:2380
|
||
- --listen-peer-urls
|
||
- http://0.0.0.0:2380
|
||
- --advertise-client-urls
|
||
- http://172.16.238.100:2379
|
||
- --listen-client-urls
|
||
- http://0.0.0.0:2379
|
||
- --initial-cluster
|
||
- node1=http://172.16.238.100:2380,node2=http://172.16.238.101:2380,node3=http://172.16.238.102:2380
|
||
- --initial-cluster-state
|
||
- new
|
||
- --initial-cluster-token
|
||
- docker-etcd
|
||
|
||
node2:
|
||
image: quay.io/coreos/etcd:v3.4.0
|
||
volumes:
|
||
- node2-data:/etcd-data
|
||
networks:
|
||
cluster_net:
|
||
ipv4_address: 172.16.238.101
|
||
environment:
|
||
- ETCDCTL_API=3
|
||
expose:
|
||
- 2379
|
||
- 2380
|
||
command:
|
||
- /usr/local/bin/etcd
|
||
- --data-dir=/etcd-data
|
||
- --name
|
||
- node2
|
||
- --initial-advertise-peer-urls
|
||
- http://172.16.238.101:2380
|
||
- --listen-peer-urls
|
||
- http://0.0.0.0:2380
|
||
- --advertise-client-urls
|
||
- http://172.16.238.101:2379
|
||
- --listen-client-urls
|
||
- http://0.0.0.0:2379
|
||
- --initial-cluster
|
||
- node1=http://172.16.238.100:2380,node2=http://172.16.238.101:2380,node3=http://172.16.238.102:2380
|
||
- --initial-cluster-state
|
||
- new
|
||
- --initial-cluster-token
|
||
- docker-etcd
|
||
|
||
node3:
|
||
image: quay.io/coreos/etcd:v3.4.0
|
||
volumes:
|
||
- node3-data:/etcd-data
|
||
networks:
|
||
cluster_net:
|
||
ipv4_address: 172.16.238.102
|
||
environment:
|
||
- ETCDCTL_API=3
|
||
expose:
|
||
- 2379
|
||
- 2380
|
||
command:
|
||
- /usr/local/bin/etcd
|
||
- --data-dir=/etcd-data
|
||
- --name
|
||
- node3
|
||
- --initial-advertise-peer-urls
|
||
- http://172.16.238.102:2380
|
||
- --listen-peer-urls
|
||
- http://0.0.0.0:2380
|
||
- --advertise-client-urls
|
||
- http://172.16.238.102:2379
|
||
- --listen-client-urls
|
||
- http://0.0.0.0:2379
|
||
- --initial-cluster
|
||
- node1=http://172.16.238.100:2380,node2=http://172.16.238.101:2380,node3=http://172.16.238.102:2380
|
||
- --initial-cluster-state
|
||
- new
|
||
- --initial-cluster-token
|
||
- docker-etcd
|
||
|
||
volumes:
|
||
node1-data:
|
||
node2-data:
|
||
node3-data:
|
||
|
||
networks:
|
||
cluster_net:
|
||
driver: bridge
|
||
ipam:
|
||
driver: default
|
||
config:
|
||
-
|
||
subnet: 172.16.238.0/24
|
||
```
|
||
|
||
使用 `docker compose up` 启动集群之后使用 `docker exec` 命令登录到任一节点测试 `etcd` 集群。
|
||
|
||
```bash
|
||
/ # etcdctl member list
|
||
daf3fd52e3583ff, started, node3, http://172.16.238.102:2380, http://172.16.238.102:2379
|
||
422a74f03b622fef, started, node1, http://172.16.238.100:2380, http://172.16.238.100:2379
|
||
ed635d2a2dbef43d, started, node2, http://172.16.238.101:2380, http://172.16.238.101:2379
|
||
```
|