Docker跨主机web集群的weave网络

跨主机web集群的weave网络

实验环境

ip 服务 备注
192.168.1.11 nginx host1
192.168.1.12 Docker已安装 host2
192.168.1.13 Docker已安装 host3
192.168.1.14 Docker已安装 host4

weave网络跨主机容器通信

weave网络跨主机容器间通信

实验环境

ip 服务 备注
192.168.1.12 docker(已安装)、weave已安装 host1
192.168.1.13 docker(已安装) host2

实验目的

将host2加入host1的weave网络中,在各个主机创建一个容器,并进行通信

实验步骤

参考上两篇文档可以安装完weave

weave网络单主机容器间通信

weave网络单主机容器间通信

实验环境

已安装docker一台linux,并weave也安装启动完成,安装步骤参考上一篇文档

实验目的

单主机内两个使用weave网络的容器可以通信

实验步骤

进入weave网络范围

[root@localhost ~]# eval $(weave env)

Docker容器网络-weave

Weave网络介绍

Weave是 Weaveworks 开发的容器网络解决方案。weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来。对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交换机,容器可以直接通信,无需 NAT 和端口映射。除此之外,weave 的 DNS 模块使容器可以通过 hostname 访问。

使用环境

weave 不依赖分布式数据库(例如 etcd 和 consul)交换网络信息,每个主机上只需运行 weave 组件就能建立起跨主机容器网络。我们会在 host1 和 host2 上部署 weave 并实践 weave 的各项特性。

flannle网络中的web集群

flannle网络中的web集群

实验环境

物理机 服务 备注
192.168.1.12 docker(已安装)、etcd、flannel server1
192.168.1.13 docker(已安装)、etcd、flannel server2

flannel+docker-compose

flannel跨主机通信部署

flannel跨主机通信部署

既然是跨主机,至少需要两台docker主机

实验环境

ip 服务 备注
192.168.1.12 docker(已启动)、etcd、flannel server1
192.168.1.13 docker(已启动)、etcd、flannel server2

实验目的

让docker不同主机的容器通过flannel网络进行分配ip并完成通信

实验步骤

使用flannel要求关闭防火墙,关闭沙盒,开启路由转发

Docker跨主机容器-flannel介绍

flannel网络概述

flannel 是 CoreOS 开发的容器网络解决方案。flannel 为每个 host 分配一个 subnet(子网),容器从此 subnet 中分配 IP,这些 IP 可以在主机间路由,容器间无需 NAT 和 port mapping(端口映射) 就可以跨主机通信。

flannel的作用

因为flannel实现跨主机的子网通信是通过主机中的dr0网卡进行通信的,由flannel分配的子网都是从手动指定的一个大的子网中划分出来分配的。

Docker跨主机不同网络-overlay

Docker跨主机容器间不同网络间通信

实验环境

ip 服务 备注(别名)
192.168.1.12 Docker/consul server1
192.168.1.13 Docker server2

实验目的

server1:运行2个容器bbox1和bbox2

server2:运行2个容器bbox3和bbox4

net1(overlay网络):bbox1和bbox4使用通信

net2(overlay网络):bbox2和bbox3使用通信,并手动指定网段为10.10.10.0,且bbox2使用10.10.10.100/24地址,bbox3使用10.10.10.100/24地址

同时bbox1也可与net2网络的容器通信

Docker跨主机容器网络-overlay

Docker跨主机容器网络通信

前面已经有了 Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker主机内容器通信的问题。

本文将介绍docker的跨主机网络的一些基础概念以及简单的结构(overlay)

现在来想一个生产环境,在生产环境中,希望每一台docker主机都只去运行一个服务的集群即可。如

一台docker主机运行web集群

一台docker主机运行mysql集群

一台docke主机运行php集群

可是如果想要这些环境像我们所需要的那样,以LNMP的架构运行,务必每台主机间的容器之间是需要通信的。就用到了本文的跨主机容器通信的方案

单主机多个bridge网络间通信

实验如图所示:

作业

实验目的:

将nginx的端口映射到宿主机,通过宿主机来访问到nginx,然后nginx的php设置将会寻找php容器所在,最终显示页面

Docker单主机容器间通信

Docker的原生网络

也就是docker程序中自带的网络类型

查看Docker中的原生网络

[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
e1aa5d692686        bridge              bridge              local
082e568090f3        host                host                local
70d9c743f011        none                null                local

原生网络主要用于,容器和容器之间的网络通讯,以及容器与外部主机之间的通讯

Docker网络从覆盖范围分为两种:

  • 单主机的容器之间的通讯



正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0