Haproxy-Peers als Schwarm-Bereitstellung

Haproxy-Peers als Schwarm-Bereitstellung

Ich versuche, mit Swarm und Haproxy einen Active-Active-Cluster einzurichten. Ich habe Probleme mit der Peer-Definition, da diese Hostnamen und IP-Adressen berücksichtigt. Mit Swarm kann das etwas knifflig sein.

Ich möchte den Hostmodus für die Ports auf dem Proxy verwenden, damit ich den Datenverkehr mit DNS und TCP Roundrobin an die Proxyknoten weiterleiten kann.

 proxy:
    image: "saps-proxy:5"
    hostname: '{{.Node.Hostname}}'
    dns: 127.0.0.11
    ports:
      - target: 80
        published: 80
        protocol: tcp
        mode: host
      - target: 443
        published: 443
        protocol: tcp
        mode: host
      - target: 1024
        mode: host
        protocol: tcp
    deploy:
      mode: global
      placement: { constraints: ["node.labels.type == proxy"] }
      resources: { limits: { memory: 2G } }

In der haproxy.cfg definiere ich einen Peer-Abschnitt.

peers layer7-loadbalancer
    bind *:1024
    server hostname1.bloom.com
    server hostname2.bloom.com 10.128.0.2:1024  # (ip of real host)

Dies scheint für den lokalen Peer zu funktionieren. Aber ich glaube, es verwendet tatsächlich die Container-IP. Ich kann daraus auch keine Replikate erstellen.

Also versuche ich eine andere Syntax. Wenn es so geschrieben wird, bindet HAProxy IP:Port vom Peer-Namen, der mit dem Hostnamen übereinstimmt.

peers layer7-loadbalancer
    peer hostname1.bloom.com 10.128.0.1:1024  # (ip of real host)
    peer hostname2.bloom.com 10.128.0.2:1024  # (ip of real host)

Ich erhalte jedoch eine Fehlermeldung.

Starting proxy hostname1.bloom.com: 
cannot bind socket (Cannot assign requested address) [10.128.0.1:1024]

Dies ist sinnvoll, da die Container-IP tatsächlich nicht die Host-IP ist. Aus diesem Grund kann diese Adresse nicht innerhalb des Containers gebunden werden.

An diesem Punkt bin ich mir nicht wirklich sicher, wie ich das lösen soll.

Antwort1

Sie haben DNS aktiviert (DNS: 127.0.0.11), verwenden Sie daher in der Peer-Zeile den Dienstnamen anstelle der IP-Adresse.

verwandte Informationen