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网络就创建成功了。
http://jnzg905.iteye.com/blog/2269583
相关推荐
通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的网络来连接这些服务,确保它们可以相互通信。整体而言,这个Docker Compose 文件...
当需要更新配置时,可以通过Zookeeper的发布/订阅机制实时推送配置变更到各个客户端,实现配置文件在管理中心和客票交易中间件之间的快速同步。这种方式避免了传统方法中需要重启服务才能使配置生效的问题,大大减少...
在多主机场景下,我们通常会使用 overlay 网络,配合 Flannel 来实现跨主机通信。Flannel 可以作为 Docker 的网络插件,当 Docker 创建新的容器时,Flannel 会自动为容器分配 IP 并设置相应的路由规则,从而实现在...
标题 "基于ZooKeeper的分布式Session实现" 涉及的是在分布式系统中如何利用Apache ZooKeeper来管理和共享Session信息。ZooKeeper是一款开源的分布式协调服务,它为分布式应用程序提供了一个简单一致的接口,用于处理...
docker-zookeeper, 适用于ZooKeeper的Docker 图像( Maestro业务流程) Docker 上的ZooKeeper这个 Dockerfile 创建一个 Docker 图像,它可以作为在 Docker 容器中运行动物园精灵的基础。 运行脚本负责创建基于容器环境...
实际部署中,涉及到多个节点的配置和软件安装,包括Java开发环境、ZooKeeper、Mesos和Docker引擎等。其中,Docker引擎的安装对于实现应用的轻量级部署和隔离运行至关重要。 在实施步骤方面,首先需要配置所有节点的...
主要介绍了Docker下安装zookeeper(单机和集群),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Centos7 安装zookeeper for Docker.md 存放这里,让大家下载快捷一点
基于zookeeper和强一致性复制实现MySQL分布式数据库集群.pdf
实现基于Zookeeper的分布式锁,主要涉及以下核心概念: 1. **节点创建**:在Zookeeper中,每个锁可以表示为一个临时节点。当客户端需要获取锁时,会在特定路径下创建一个临时节点。由于Zookeeper的顺序性,创建的...
文章中提到,传统的配置信息存储方案存在不足,尤其是在面对大规模分布式应用时,如何实现配置信息的可靠、实时、简单更新是一大挑战。基于ZooKeeper的配置信息存储方案,能够很好地解决这个问题。ZooKeeper的配置...
在`ets-schedule`压缩包中,可能包含的是实现这个分布式调度方案的相关代码和配置文件,包括Quartz的配置、Zookeeper的连接代码以及任务调度逻辑等。通过对这些文件的分析和理解,我们可以深入学习如何在实际项目中...
zookeeper docker
接下来,我们转向Zookeeper,这是一个分布式协调服务,常用于管理配置信息、实现分布式同步和提供组服务。Zookeeper在分布式环境中扮演着重要角色,因为它能确保数据的一致性和可靠性。在Mesos中,Zookeeper用于选举...
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实现分布式锁的知识点。 Zookeeper是Apache的一个开源项目,它为分布式应用提供了高...
1. **复制**:将 Zookeeper 目录复制多份,例如复制成 `zookeeper0`, `zookeeper1`, `zookeeper2`。 2. **配置**:分别对每个副本的 `zoo.cfg` 进行配置,包括添加集群相关参数和修改数据目录、端口号: - `...