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网络就创建成功了。
相关推荐
基于Zookeeper的配置管理中心设计与实现.pdf
Marathon+Mesos+Zookeeper+Docker实战,强烈推荐下载学习
docker-zookeeper, 适用于ZooKeeper的Docker 图像( Maestro业务流程) Docker 上的ZooKeeper这个 Dockerfile 创建一个 Docker 图像,它可以作为在 Docker 容器中运行动物园精灵的基础。 运行脚本负责创建基于容器环境...
基于zookeeper的分布式锁简单实现,包含测试代码,实用工具类
Centos7 安装zookeeper for Docker.md 存放这里,让大家下载快捷一点
基于zookeeper和强一致性复制实现MySQL分布式数据库集群.pdf
本文提出了一种基于ZooKeeper 的配置信息存储方案。首先介绍了ZooKeeper 的架构和ZooKeeper 的相关概念,然后分析了当前配置信息存储方案的不足;...基于ZooKeeper 的配置信息存储方案,包括架构和实现方案
利用zookeeper的临时顺序节点实现分布式锁,同时控制多个quartz示例协作执行的代码。
主要介绍了Docker下安装zookeeper(单机和集群),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
zookeeper docker
solrcloud-zookeeper-docker 该项目旨在帮助在Docker环境中尝试最新版本SolrCloud(和Zookeeper)的开发人员和新手。 此项目的版本完全基于较新的Solr和Zookeeper官方图像。 先决条件 Mac-OS或Linux环境 泊坞窗...
要使用docker文件构建映像,请执行以下命令$ docker build -t lgslm/zookeeper:v1.0.0 .要运行容器并登录到容器中,请执行以下命令$ docker run --rm -it --name zookeeper lgslm/zookeeper:v1.0.0 bash
基于zookeeper的分布式锁实现demo,可以直接用在生产环境
基于ZooKeeper的集群节点管理方案的设计与实现,李文韵,崔毅东,随着集群技术的普及,集群技术在节点管理方面的缺陷也日益凸显。无法及时了解集群中各节点的资源状态,无法对节点管理给予有效的
人工智能-Hadoop
通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的网络来连接这些服务,确保它们可以相互通信。整体而言,这个Docker Compose 文件...
NULL 博文链接:https://jacktan.iteye.com/blog/875121
基于Zookeeper+Netty+Protostuff实现的简单RPC框架源码,代码内有详细注释
ZooKeeper是用于维护配置信息,命名,提供分布式同步以及提供组服务的集中式服务。 所有这些类型的服务都以某种形式或由分布式应用程序使用。 TL; DR $ docker run --name zookeeper bitnami/zookeeper:latest ...
C#基于zookeeper分布式锁的实现源码,参考网上代码,做过一些小调整,目前在项目使用中,运行良好。