pares haproxy como implementación de enjambre

pares haproxy como implementación de enjambre

Estoy intentando configurar un clúster activo-activo con enjambre y haproxy. Estoy luchando con la definición de pares, ya que tiene en cuenta el nombre de host y la dirección IP. Con enjambre esto puede ser un poco complicado.

Quiero usar el modo host para los puertos del proxy para poder enrutar el tráfico con DNS y tcp roundrobin a los nodos del proxy.

 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 } }

En haproxy.cfg estoy definiendo una sección de pares.

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

Esto parece funcionar para el par local. Pero creo que en realidad está usando la IP del contenedor. Tampoco puedo generar réplicas a partir de esto.

Entonces pruebo con otra sintaxis. Cuando se escribe así, HAProxy vinculará IP: puerto del nombre del par que coincide con el nombre de host.

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)

Aunque recibo un error.

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

Esto tiene sentido porque la IP del contenedor en realidad no es la IP del host. Es por eso que esta dirección no se puede vincular desde el interior del contenedor.

En este punto, no estoy muy seguro de cómo solucionar esto.

Respuesta1

Ha habilitado dns (dns: 127.0.0.11), así que use el nombre del servicio en lugar de la dirección IP en la línea del mismo nivel.

información relacionada