基于zookeeper配置docker overlay network,实现多主机互联

docker实现多主机互联有很多方法,基于openvswitch等。docker在1.9之后支持overlay network特性。可以方便的实现多主机互联。

 

用docker创建overlay网络,需要一个key-value存储服务,存储各个主机节点在overlay网络中的配置信息。我们下面以两台主机为例讲一下如何基于zookeeper配置overlay网络。

 

首先有两台主机分别叫Host1和Host2,操作系统为CentOS7,内核版本3.12以上,我的是4.3。Host1和Host2能够互通,我的机器是通过eno16777736端口互通的。

 

第一步,首先在Host1上安装zookeeper,我安装的是zookeeper3.4.7,用默认配置启动,zookeeper监听端口为2181.

第二步,在Host1和Host2上分别安装docker 1.9版本。并修改/usr/lib/systemd/system/docker.service配置:

[Service]

Type=notify

ExecStart=/usr/bin/docker daemon --cluster-store=zk://192.168.31.208:2181 --cluster-advertise=eno16777736:2376 -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock

 

其中--cluster-store是指向key-value存储的地址,我这里就是zookeeper的地址,zookeeper里保存着整个overlay网络配置和节点信息。--cluster-advertise中的eno16777736是Host1和Host2互通的端口。

然后执行systemctl daemon-reload使配置生效,然后执行systemctl start docker.service启动docker服务。

docker服务启动后,通过netstat -na|grep 2181可以看到docker引擎已经和zookeeper建立了连接。

 

第三步,创建overlay网络. docker network ls可以查看docker 创建了哪些网络,如下:

[root@node08 docker]# docker network ls

NETWORK ID          NAME                DRIVER    

4a118dc25d96        bridge              bridge              

7e2b69f7e6b3        none                null                

70ea5d08e37f        host                host

 

bridge,none,host是默认网络,我们需要创建一个overlay网络,执行下面的命令:

docker network create --driver overlay net1

用docker network ls查看,net1已经创建成功。

NETWORK ID          NAME                DRIVER    

2b0e076bc8fa         net1                 overlay

4a118dc25d96        bridge              bridge              

7e2b69f7e6b3        none                null                

70ea5d08e37f        host                host

 

 

然后我们在Host1和Host2上分别创建两个容器:

 docker run --restart always -itd --net=net1 --hostname=test1 --name=test1 centos6.7 /bin/bash

 

docker attach test1,执行ifconfig,可以看到Host1的容器test1的eth0的IP是10.0.0.2,Host2的容器test1的eth0的IP是10.0.0.3.

在Host1的test1执行ping 10.0.0.3,能够ping通Host2的容器test1.

同样在Host2的容器test1里ping 10.0.0.2,也能够ping通。

这样多主机overlay网络就创建成功了。

注意overlay网络的IP是动态分配的,重启容器后可能会重新分配。

你可能感兴趣的:(java,zookeeper,NetWork,docker,多主机互联)