2016-05-19 5 views
1

Zuerst habe ich erstellen 2 Docker Hosts mit den folgenden Einstellungen:Kann Firewalld mit dem Docker Overlay Network arbeiten?

## CLUSTER CONFIGURATION 
# Firewall: firewalld 
# OS: CentOS7 
# IPs: 
- 10.10.2.3 
- 10.10.2.4 

# Docker daemons: 
/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375 \ 
      --cluster-store=consul://10.10.2.3:8500 \ 
      --cluster-advertise=10.10.2.3:2375 
/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375 \ 
      --cluster-store=consul://10.10.2.3:8500 \ 
      --cluster-advertise=10.10.2.4:2375 

Dann erstelle ich ein Overlay-Netzwerk:

docker network create -d overlay my-overlay-network 

Dann versuche ich, auf einen Behälter auf Node2 aus einem Behälter ping Node1 mit dem Hostnamen des Containers:

# ssh 10.10.2.4 
docker run --net my-overlay-network --hostname 10-10-2-4-container centos /bin/sh -c 'while true; do sleep 1; done' 

# Start firewalld, and open ports on both machines 
systemctl start firewalld 
/usr/bin/firewall-cmd \ 
    # Add Consul ports 
    --add-port=8300/tcp \ 
    --add-port=8301/tcp \ 
    --add-port=8301/udp \ 
    --add-port=8302/tcp \ 
    --add-port=8302/udp \ 
    --add-port=8400/tcp \ 
    --add-port=8500/tcp \ 
    --add-port=8600/tcp \ 
    --add-port=8600/udp 
    # Add Docker ports 
    --add-port=2375/tcp \ 
    --add-port=7946/tcp \ 
    --add-port=7946/udp \ 
    --add-port=4789/tcp 

# From Node1. This fails! The hostname resolves correctly 
# to the right subnet and IP, but the ping packet doesn't return. 
docker run --net my-overlay-network centos ping -c node2-container 


# After disabling the firewall, it works fine. 
systemctl stop firewalld # From 10.10.2.3 
systemctl stop firewalld # From 10.10.2.4 
docker run --net my-overlay-network centos ping -c 10-10-2-4-container 

Grundsätzlich sieht es so aus, als ob ich meinen Knoten nicht anpingen kann, wenn die Firewall eingeschaltet ist. Der Hostname scheint korrekt aufgelöst zu werden. Wie kann ich meine Firewall so konfigurieren, dass sie mit dem Overlay-Netzwerk von Docker funktioniert?

+0

Zögern Sie nicht, meine Antwort zu kritisieren, um Klärung zu bitten oder Demos usw. zu erstellen. Ich möchte wirklich die Lösung für dieses Problem bekommen :). – robert

Antwort

2

Ja, kann es!

Dies sind die Ports, die Sie für das Overlay-Netzwerk arbeiten w/a Multi-Host-Docker Setup geöffnet haben müssen:

firewall-cmd \ 
    --add-port=2375/tcp \ 
    --add-port=4789/udp \ 
    --add-port=7946/tcp \ 
    --add-port=7946/udp 

Der 4789-Port für VXLAN ist. Es funktioniert über UDP. Sie müssen auch alle Ports öffnen, die Ihr KV-System verwendet, insbesondere diejenigen für die DNS-Auflösung (Consul hört auf 8600 UDP/TCP für die DNS-Auflösung).

+0

Sie hatten also nur den einen Fehler gemacht, Port 4789 über * tcp * statt * udp * zu öffnen; und als du das repariert hast, hat alles funktioniert? –

Verwandte Themen