Docker 跨主机互联(Overlay - etcd)

环境

主机 IP
docker1 192.168.31.178
docker2 192.168.31.188
docker3 192.168.31.150

前提:

  1. 安装好 docker
  2. 关闭防火墙和 selinux

安装 etcd(三个节点)

yum install etcd -y

配置 etcd

docker1

# 需要修改的地方
vi /etc/etcd/etcd.conf
ETCD_LISTEN_PEER_URLS="http://192.168.31.178:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.31.178:2379,http://127.0.0.1:2379"
ETCD_NAME="node1"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.31.178:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.31.178:2379"
ETCD_INITIAL_CLUSTER="node1=http://192.168.31.178:2380,node2=http://192.168.31.188:2380,node3=http://192.168.31.150:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

# 启动
systemctl start etcd

docker2

# 需要修改的地方
vi /etc/etcd/etcd.conf
ETCD_LISTEN_PEER_URLS="http://192.168.31.188:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.31.188:2379,http://127.0.0.1:2379"
ETCD_NAME="node2"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.31.188:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.31.188:2379"
ETCD_INITIAL_CLUSTER="node1=http://192.168.31.178:2380,node2=http://192.168.31.188:2380,node3=http://192.168.31.150:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

# 启动
systemctl start etcd

docker3

# 需要修改的地方
vi /etc/etcd/etcd.conf
ETCD_LISTEN_PEER_URLS="http://192.168.31.150:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.31.150:2379,http://127.0.0.1:2379"
ETCD_NAME="node3"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.31.150:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.31.150:2379"
ETCD_INITIAL_CLUSTER="node1=http://192.168.31.178:2380,node2=http://192.168.31.188:2380,node3=http://192.168.31.150:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

# 启动
systemctl start etcd

检查 etcd

etcdctl member list
etcdctl cluster-health

修改 Docker 配置参数

docker1

cat /etc/docker/daemon.json 
{
        "cluster-store": "etcd://192.168.31.178:2379",
        "cluster-advertise": "192.168.31.178:2379"
}

systemctl restart docker

docker2

cat /etc/docker/daemon.json 
{
        "cluster-store": "etcd://192.168.31.188:2379",
        "cluster-advertise": "192.168.31.188:2379"
}

systemctl restart docker

docker3

cat /etc/docker/daemon.json 
{
        "cluster-store": "etcd://192.168.31.150:2379",
        "cluster-advertise": "192.168.31.150:2379"
}

systemctl restart docker

创建 Docker 网络和容器

# docker1
docker network create --driver overlay etcdnet
docker run -it -d --name etcdtest1 --network etcdnet centos:centos8

# docker2
docker run -it -d --name etcdtest2 --network etcdnet centos:centos8

# docker3
docker run -it -d --name etcdtest3 --network etcdnet centos:centos8

测试

docker1

docker2

docker3

创建自定义 Docker 网络

docker1

docker network create --driver overlay --subnet 10.20.20.0/24 etcdnet2
docker run -it -d --name etcd2test1 --network etcdnet2 centos:centos8

docker2

docker run -it -d --name etcd2test2 --network etcdnet2 centos:centos8

docker3

docker run -it -d --name etcd2test3 --network etcdnet2 centos:centos8

测试

docker1

docker2

docker3

posted @ 2021-08-22 16:17  klvchen  阅读(473)  评论(0)    收藏  举报