Docker Overlay 網路學習

1.Docker的網路模式參考:https://docs.docker.com/engine/userguide/networking/

說明一下,Docker里提到的bridge模式不同於VM中的bridge,應該與VM中的NAT類似。

2.Swarm創建Overlay Network

參考:https://docs.docker.com/engine/swarm/networking/

* 搭建虛機

因為Overlay需要多主機,這裡在一台伺服器內建立2個虛機Docker-1和Docker-2和2個Linux bridge br-external和br-docker,br-external佔用物理伺服器的eth0介面。Docker-1、Docker-2、br-docker和br-external的連接如上圖所示。Docker-1和Docker-2的OS使用Ubuntu 16.04.3。

Advertisements

* 安裝Docker

參考:https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

分別在Docker-1和Docker-2上,安裝Docker。

*建立Swarm集群

參考:https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/

參考:https://docs.docker.com/engine/swarm/swarm-tutorial/add-nodes/

先在Docker-1上初始化Swarm。

將Docker-2以Manager身份加入到集群中,這裡Docker-1和Docker-2都是Manager。Docker-2也可以以Worker身份加入集群。

Advertisements

集群建立后,在Docker-1和Docker-2上都可以看到2個node。

*創建Overlay Network

參考:https://docs.docker.com/engine/swarm/networking/

在Docker-1上創建1個Overlay的網路net1。

在Docker-2上同時可以看到網路net1。

* 建立Container

可以用如上命令在Docker-1和Docker-2上建立Container。

* Overlay網路的研究

這裡另外創建1個Container。

在Docker-2上創建1個以tomcat為基礎的Container, net1-c5-web。

進入net1-c5-web后,可以看到有2塊網卡,eth0(10.0.0.7)和eth1(172.18.0.5)。

可以看到對外訪問的預設路由是eth1,網關是172.18.0.1。

在Docker-2上,可以看到172.18.0.1的網卡docker-gwbridge。

可以看到Container訪問外網時,是經過docker-gwbridge,docker-gwbridge是bridge(相當於VM中的NAT模式,SNAT)。

關於docker-gwbridge,可參考:https://docs.docker.com/engine/swarm/networking/

在Container里還有10.0.0.7的網卡,這個應該是Overylay網路,Container之間的通信使用。

在net1-c5-web上ping在Docker-1上的另一個Container net1-c1的eth0網卡10.0.0.4,可以ping通。

在net1-c1上通過tcpdump可以看到ICMP數據包。

在物理伺服器內的br-docker網橋上抓包。

可以看到,net1-c5-web(10.0.0.7)ping net1-c1(10.0.0.4)的是通過VxLAN。

Docker-1和Docker-2上的關於VxLAN的解封裝點在哪裡呢?進入namespace看看……

在Docker-1中可以到有這些的namespace。

這裡就可以看到br0(10.0.0.1)和vxlan,以及對接在Docker-1上的3個Container的veth0、veth1、veth2。

抓取br0、veth0和vxlan0,都可以看到ICMP包,有一點區別是veth0和vxlan0是有IP Fragment。

通過以上的練習,可以大致知道Docker Overlay網路的架構如下:

3.Docker Overlay網路應用的監測

構造2個Container,在c1上安裝web服務,用c3訪問c1的web服務,在c1、c3以及br-docker上安裝虛擬探針,用於分析使用。

在分析平台上,可以看到以下結果:

br-docker監測點上的應用及流量分佈(VNI=4097)。

3個監測點(c1、c2和br-docker)的HTTP應用性能指標,可對比分析。

Advertisements

你可能會喜歡