实现docker跨主机通信 – 基于Consul的overlay网络

环境配置

节点名 节点IP 节点服务
consul 192.168.0.11 安装 Consul
dnode1 192.168.0.12 安装 Docker
dnode2 192.168.0.12 安装 Docker

配置三台机器,请注意修改hostname为不同的值,防火墙放行如下端口:

  • 2376
  • 4789
  • 7946
  • 8300-8302
  • 8500
  • 8600

启动一个单节点的Consul服务

consul agent -ui -server -bootstrap -data-dir /var/lib/consul -bind 192.168.0.11 -client 192.168.0.11

在其他服务器分别启动Docker服务

docker daemon -D -g /var/lib/docker -H unix:// -H tcp://0.0.0.0:2376  --cluster-store=consul://192.168.0.11:8500 --cluster-advertise=eth0:2376
  • --cluster-store 指定了consul服务发现地址
  • --cluster-advertise 指定了本机服务注册地址,其中eth0是自己网卡的名称,也可以用内网地址192.168.0.21代替

等待自动注册服务

可以使用浏览器打开http://192.168.0.11:8500查看

在节点上创建网络

docker network create --driver overlay \
    --subnet=192.168.2.0/24 --gateway=192.168.2.1 vnet2

为方便部署,也可以将CLI参数写入配置文件

cat <<EOF >/etc/consul/server.json
{
  "data_dir": "/var/consul",
  "server": true,
  "bootstrap": true,
  "bind_addr": "{{ GetInterfaceIP \"eth0\" }}",
  "client_addr": "0.0.0.0",
  "ui_config": {
    "enabled": true
  }
}
EOF

cat <<EOF >/etc/docker/daemon.json
{
  "cluster-advertise": "eth0:2376",
  "cluster-store": "consul://192.168.0.11:8500"
}
EOF

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注