2017-03-14 5 views
0

Docker Version: Version 17.03.0-ce-mac2 (15654)
OS: macOS Sierrakeepalived/HAProxy Docker-compose Verbindung abgelehnt

ich eine HA-Umgebung zu installieren versuchen mit docker- komponieren. Ein kurzer Überblick darüber, wie die Topologie aussehen könnte, besteht darin, dass mindestens zwei Instanzen von keepalived und haproxy ausgeführt werden. Die haproxy wird vor mehreren Servern sein. In diesem Artikel verweise ich jedoch nur auf eine Instanz von keepalived, haproxy und server zur Vereinfachung.

Das Problem, das ich gerade habe, ist, dass ich Verkehr zu der virtuellen IP-Adresse nicht leiten kann, die ich zu Keepalived zuweisen. Zu Testzwecken in meiner Docker-Compose-Datei habe ich einen Client, der versucht, über den VIP zu kommunizieren, und dies führt zu einem Verbindungsabbruch-Fehler.

dial tcp 192.168.99.120:80: getsockopt: connection refused 

Allerdings, wenn ich direkt auf Haproxy zu erreichen gibt es kein Problem mit der Verbindung. Außerdem kann ich direkt vom Host zum Haproxy kommunizieren, aber nicht weiter leben.

Ich habe das Gefühl, das hat etwas damit zu tun, wie Netzwerke in Docker arbeiten, aber ich bin ziemlich neu in der Verwendung von Docker und konnte das Problem nicht aufspüren. Jede Hilfe würde sehr geschätzt werden.

Meine Konfigurationsdateien sind alle unten enthalten.


Andockfensters-compose.yml:

version: '2' 

services: 
keepalived1: 
    image: neoassist/docker-keepalived:latest 
    container_name: keepalived1 
    volumes: 
    - "./keepalived.conf:/etc/keepalived/keepalived.conf" 
    environment: 
    - VIRTUAL_IP=192.168.99.120 
    - VIRTUAL_MASK=24 
    - VRID=1 
    - CHECK_IP=any 
    - CHECK_PORT=80 
    - INTERFACE=eth0 
    entrypoint: sh -c 'sleep 4;/usr/bin/keepalived.sh' 
    network_mode: "host" 
    cap_drop: 
    - NET_ADMIN 
    privileged: true 

haproxy1: 
    image: haproxy:latest 
    container_name: haproxy1 
    ports: 
    - 7054:7054 
    volumes: 
    - "./haproxy1.cfg:/usr/local/etc/haproxy/haproxy.cfg" 
    environment: 
    - EXPOSE=7054 
    links: 
    - fabric-ca-server1:fabric-ca-server1 

fabric-ca-server1: 
    image: hyperledger/fabric-ca 
    container_name: fabric-ca-server1 
    ports: 
    - 7051:7054 
    environment: 
    - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server 
    volumes: 
    - "./fabric-ca-server:/etc/hyperledger/fabric-ca-server" 
    command: sh -c "fabric-ca-server start -d -b admin:adminpw" 

admin-client: 
    image: hyperledger/fabric-ca 
    container_name: admin-client 
    network_mode: "host" 
    command: sh -c "sleep 14;fabric-ca-client enroll -d -u http://admin:[email protected]" 

haproxy.cfg

global 
    maxconn 4096 

defaults 
    mode http 
    maxconn 2000 
    timeout connect 5000 
    timeout client 50000 
    timeout server 50000 

frontend server 
    bind *:7054 
    mode tcp 
    default_backend server_cluster 

backend server_cluster 
    balance source 
    mode tcp 
    option tcpka 
    server server1 fabric-ca-server1:7054 

keepalived.conf

vrrp_script haproxy { 
script "pidof haproxy" 
interval 2 
weight 2 
} 

vrrp_instance haproxy_1 { 
virtual_router_id 1 
advert_int 1 
interface eth0 
nopreempt 
state BACKUP 
virtual_ipaddress { 
    192.168.99.120/24 dev eth0 
} 

track_script { 
    haproxy 
} 
} 

ifconfig von meinem mac hat:

vboxnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 
ether 0a:00:27:00:00:00 
inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255 

Antwort

0

Ich glaube nicht, das jemals mit Docker für Mac arbeiten, weil es tatsächlich eine VM unter der Decke verwendet Ihre Docker-Container ausgeführt werden. Diese sollte auf einem System mit nativer Docker-Unterstützung arbeiten, wenn Sie versuchen, Host-Netzwerk statt Bridge-Netzwerk zu verwenden.

Mein Vorschlag entweder Docker Schwarm-Modus aussehen würde (nicht die Standalone-Docker Schwarm) oder Kubernetes welche Mechanismen beide bieten Dienstleistungen zu skalieren und Last bieten über sie über eine einzige Adresse Balancing

Verwandte Themen